3

我正在创建一个脚本来从网络上提取视频,创建第一帧的图像,并将图像保存为文件。我的脚本正在处理抓取大量视频并为文件名提供序列号。

我的问题是使用 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 在命令行上工作(所以它是可编写脚本的)从视频中捕获图像?

顺便说一句,我已经对此进行了广泛的谷歌搜索——VLC 文档已经过时了,而且网络上的大多数建议实际上都不适用于最新版本的 VLC。

4

3 回答 3

3

另一种方法是使用 ffmpeg - 这对我有用:

ffmpeg -i http://example.com/directory/video.mp4  -ss 0 -vframes 1 -vcodec mjpeg -f image2 keyframe001.jpg
于 2012-04-06T10:20:58.690 回答
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
于 2012-04-06T04:12:22.623 回答
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

它是有效的。

于 2015-12-30T09:26:00.003 回答