Как извлечь изображение из определенного времени видео в Xubuntu 16.04?

Я ищу параметр командной строки.

Например, если у меня есть видео sample-video.mp4, и я хочу сгенерировать файл изображения sample-image.jpg из видео в момент времени 00:00:26, какую команду мне следует дать?

Также было бы очень полезно, если бы вы могли подробно объяснить, какова функция каждого аргумента команды.

8
задан 21 May 2019 в 11:48

2 ответа

Вы можете использовать mplayer (из пакета mplayer, по умолчанию не установлен):

mplayer -vo jpeg -ss 00:00:26 -frames 1 sample-video.mp4

Это создаст файл 00000001.jpg, поэтому вам придется его переименовать. Насколько я знаю, нет способа указать имя файла.

-vo jpeg означает, что вы хотите вывод JPEG, -ss 00:00:26 ищет заданную позицию, -frames 1 означает обработку одного кадра и затем выход.

8
ответ дан 21 May 2019 в 11:48

Вы можете использовать ffmpeg

ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4  -t 1 -f image2 anyfilename.jpeg
  • -loglevel для установки выхода из системы на quiet , потому что ffmpeg очень болтливый
  • -ss - это поиск (в секундах, т. Е. Где вы хотите сделать снимок)
  • -i входной видеофайл
  • -t таймфрейм снимка (в секундах)
  • -f тип файла

Вы также можете поиграть с опциями, например, контроль качества вывода jpeg -q:v <linear integer 1-10> или разрешения -s 480x300.

Еще несколько идей здесь


Метод VLC

cvlc sample-video.mp4 --start-time=26 --run-time=1 --rate=1 --video-filter=scene --vout=dummy --aout=dummy  --scene-ratio=24 --scene-prefix=sample-image --scene-replace vlc://quit
  • cvlc - потому что это командная строка, и мы не хотим, чтобы какие-либо окна открывались. кроме того, это означает, что мы можем запустить его без X11.

  • - время начала = 26 - точное положение снимка в секундах

  • - время выполнения = 1 - как долго видео будет «проигрываться» в секундах. Мы играем на одну секунду, чтобы сделать скриншот этой секунды
  • - rate = 1 , когда снимать скриншот. Это в основном означает «каждую секунду» и полезно, если у вас есть более длинные файлы, делать снимок экрана каждые 60 секунд или каждые 5 минут.
  • - video-filter = scene сообщает VLC, что мы хотим сделать скриншоты
  • - vout = dummy нет выхода для видео на X11, нам это не нужно
  • - aout = dummy для вывода звука нет, он нам не нужен
  • - соотношение сцены = 24 мы сообщаем VLC, что скорость составляет около 24 кадров в секунду
  • - scene-prefix = sample-image имя файла вашего скриншота
  • - scene-replace заменяет любые файлы, которые называются вашими скриншотами sample-image.png, на ваши текущий скриншот Если вы пропустите это, VLC начнет нумерацию снимков экрана
  • vlc: // quit quit vlc, как только мы закончим

Полная документация здесь

12
ответ дан 21 May 2019 в 11:48

Другие вопросы по тегам:

Похожие вопросы: