Сценарий VLC для захвата первого кадра видео - не удается заставить работать командную строку

Я создаю сценарий для извлечения видео из Интернета, создания изображения первого кадра и сохранения изображения в виде файла. Мой скрипт обрабатывает множество видео и присваивает именам файлов порядковый номер.

Моя проблема заключается в использовании VLC для захвата видео и фактического сохранения файла. Экспериментируя с командной строкой и просто с локальным файлом, прежде чем поместить его в свой скрипт, я пробовал:

vlc -vvv -I dummy --video-filter=scene --start-time=1 --stop-time=1 --scene-format=jpeg --scene-ratio=24 --scene-prefix=EXEC samp.mp4 vlc://quit

-> неперехваченное исключение

vlc -vvv -I dummy --no-audio --video-filter=scene --start-time=1 --stop-time=1 --scene-format=jpeg --scene-ratio=24 --scene-prefix=EXEC samp.mp4 vlc://quit

-> неперехваченное исключение

vlc -vvv -I rc --video-filter=scene --start-time=1 --stop-time=1 --scene-format=jpeg --scene-ratio=24 --scene-prefix=EXEC samp.mp4 vlc://quit

-> неперехваченное исключение; похоже, я не могу обойтись без опции -V

vlc -vvv -I rc -V snapshot --video-filter=scene  --start-time=1 --stop-time=1 --scene-format=jpeg --scene-ratio=24 --scene-prefix=EXEC samp.mp4 vlc://quit

-> модуль отображения vout не соответствует «снимку»; аналогично для попыток с модулем "изображение", "сцена", "opengl"

Я использую VLC 2.0.1 на Mac OS X 10.7.3. У кого-нибудь есть VLC для работы в командной строке (так что это можно написать) для захвата изображения из видео?

Кстати, я много искал по этому поводу — документация VLC безнадежно устарела, и большинство предложений в Интернете на самом деле не работают с последней версией VLC.


person D Mac    schedule 05.04.2012    source источник
comment
[удалено] возможно подходит в качестве ответа   -  person David-SkyMesh    schedule 06.04.2012


Ответы (3)


Если важен результат, а не видеоплеер, можно сделать это с помощью mplayer:

mplayer -vo png,outdir=/tmp,prefix=frameNo,z=0 -ao null -frames 1 VIDEO-FILENAME

VIDEO-FILENAME может быть локальным файлом или URL-адресом HTTP.

Чтобы получить mplayer из командной строки на OSX, просто установите графический, а затем найдите двоичный файл командной строки в одном из следующих мест:

/Applications/MPlayer OSX.app/Contents/Resources/External_Binaries/mplayer_intel.app/Contents/MacOS/mplayer

or

/Applications/MPlayer OS X 2.app/Contents/Resources/mplayer.app/Contents/MacOS/mplayer
person David-SkyMesh    schedule 06.04.2012
comment
Теперь mplayer также можно найти в /Applications/MPlayerX.app/Contents/Resources/MPlayerX.mplayer.bundle/Contents/Resources/x86_64/mplayer. - person sleepless; 17.11.2015
comment
Я думаю, что первая команда должна читать mplayer -vo png:outdir=/tmp:prefix=frameN:z=0 -ao null -frames 1 VIDEO-FILENAME' Обратите внимание на : вместо , - person Naumann; 05.06.2017

Другой подход - использовать ffmpeg - у меня это сработало:

ffmpeg -i http://example.com/directory/video.mp4  -ss 0 -vframes 1 -vcodec mjpeg -f image2 keyframe001.jpg
person D Mac    schedule 06.04.2012
comment
спасибо чувак, сработало отлично. В MacOSX это было всего две команды. brew install ffmpeg, а затем ваша волшебная команда :) ура - person Joao Sousa; 14.10.2013

В Windows: vlc C:\test.mp4 --rate=1 --video-filter=scene --vout=dummy --aout=dummy --start-time=10 --stop-time=11 --scene-replace --scene-format=jpg --scene-ratio=29.970029 --scene-prefix=snaphot --scene-path=C:\Users\Gi\Desktop\ vlc://quit

Это работает.

person Günay Gültekin    schedule 30.12.2015