我正在创建一个脚本,用于从网络上提取视频,创建第一帧的图像,并将图像另存为文件。我的脚本正在处理抓取大量视频并给文件名一个序号。
我的问题是使用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显示模块匹配“快照”;类似于模块“image”,“scene”,“opengl”
的尝试我在Mac OS X 10.7.3上运行VLC 2.0.1。有没有人让VLC在命令行上工作(所以它是可编写脚本的)从视频中捕获图像?
顺便说一下,我已经对此进行了大量的Google搜索 - VLC文档无可救药地过时了,网上的大多数建议实际上都不适用于最新版本的VLC。答案 0 :(得分:3)
另一种方法是使用ffmpeg - 这对我有用:
ffmpeg -i http://example.com/directory/video.mp4 -ss 0 -vframes 1 -vcodec mjpeg -f image2 keyframe001.jpg
答案 1 :(得分:2)
如果结果很重要,但视频播放器不重要,可以使用mplayer:
mplayer -vo png,outdir=/tmp,prefix=frameNo,z=0 -ao null -frames 1 VIDEO-FILENAME
VIDEO-FILENAME
可以是本地文件,也可以是HTTP URL。
要在OSX上获取命令行mplayer,只需安装图形界面,然后在以下位置之一找到命令行二进制文件:
/Applications/MPlayer OSX.app/Contents/Resources/External_Binaries/mplayer_intel.app/Contents/MacOS/mplayer
或
/Applications/MPlayer OS X 2.app/Contents/Resources/mplayer.app/Contents/MacOS/mplayer
答案 2 :(得分:1)
在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
这是有效的。