Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video FFMpeg生成静止视频_Video_Ffmpeg_Thumbnails_Ffprobe - Fatal编程技术网

Video FFMpeg生成静止视频

Video FFMpeg生成静止视频,video,ffmpeg,thumbnails,ffprobe,Video,Ffmpeg,Thumbnails,Ffprobe,我正在做一个简单的ffmpeg测试。我想用它为我正在开发的网站生成缩略图/视频抓取。我目前正在使用VLC获取单个帧,然后生成一个缩略图,但它相当慢,有点麻烦 问题是,我正在使用的视频(从我自己的电脑)是由安全摄像头软件生成的,并且它有一种奇怪的视频格式。当我在VLC中打开它(.bvr)时,它播放得非常非常快。10秒的视频大约需要2.5秒。此外,使用ffmpeg“ffmpeg-i test.bvr output.avi”的简单转换可以生成适当长度的视频(10秒),但视频帧不会改变。(这是一幅静止图

我正在做一个简单的ffmpeg测试。我想用它为我正在开发的网站生成缩略图/视频抓取。我目前正在使用VLC获取单个帧,然后生成一个缩略图,但它相当慢,有点麻烦

问题是,我正在使用的视频(从我自己的电脑)是由安全摄像头软件生成的,并且它有一种奇怪的视频格式。当我在VLC中打开它(.bvr)时,它播放得非常非常快。10秒的视频大约需要2.5秒。此外,使用ffmpeg“ffmpeg-i test.bvr output.avi”的简单转换可以生成适当长度的视频(10秒),但视频帧不会改变。(这是一幅静止图像)

测试文件和测试输出文件:

我认为这主要是由于IP摄像头可能只产生5-7 fps的速度,但安全软件并不知道如何更好地编写,好像它应该是24/30 fps

FFMpeg报告:[m4v@0000000000 2CEC60]从 比特率,这可能是来自“test.bvr”的不准确输入#0,m4v: 持续时间:N/A,开始时间:0.000000,比特率:N/A流#0:0:视频:mpeg4 (简单剖面图),yuv420p,640x480[SAR 1:1 DAR 4:3],5 tbr,1200k tbn,5 tbc输出#0,avi,到'Output.avi':元数据:ISFT
:Lavf54.25.104流#0:0:Video:mpeg4(FMP4/0x34504D46), yuv420p,640x480[SAR 1:1 DAR 4:3],q=2-31200kb/s,5TBN,5TBC 流映射:

流#0:0->#0:0(mpeg4->mpeg4)按[q]停止,[?]获取帮助 帧=50 fps=0.0 q=2.0 Lsize=244kB时间=00:00:10.00比特率= 199.7kbits/s视频:237kB音频:0kB字幕:0全局标题:0kB muxing开销2.877066%**


感谢您的帮助

这不是一个真正的编程问题。但这是我的意见。生成的内容是mpeg4基本流。所以vlc不可能以正确的帧速率播放

其次,您的视频是一个静态帧,只有一次照明变化,右下角的时间代码从21秒增加到32秒。那么,您是说您的输出视频不会改变右下角的时间代码吗

编辑:vlc也不能为我播放。然而,ffplay能够在我的终端播放得很好,而且你也可以使用ffmpeg在任何你想要的地方抓取缩略图

编辑:这也适用于vlc:

ffmpeg-i input.dvr-vcodec mpeg4 output.avi


这也适用于vlc。一件事是,您还应该给出目标比特率和分辨率。

也许它无法确定帧率,但知道如何解码流。你有没有尝试过强制6 fps的恒定帧速率?问题是,虽然在这种情况下这是我自己的视频,但通常是客户上传他们自己的东西。我不知道帧速率应该是多少。当我打开“output.avi”文件时,计时器保持不变,视频从不改变。我有最新版本的VLC。这一点非常重要的原因是,我必须通过编程在中间抓取一帧来生成缩略图,但是用户的视频可能会有这样的各种问题。我在尝试深入研究更深层的东西(抓取帧总数等)之前问了这些问题。是的,vlc无法播放它。不过,ffplay在我这边可以播放得很好,而且你也可以使用ffmpeg在任何地方抓取缩略图。@JasonMuchow,你只需要avi吗?如果用mp4替换avi,它在vlc中也可以正常工作。我可以检查avi有什么问题,尽管明天某个时候一切似乎都不起作用。我试着转换另一个视频,以及使用你建议的vcodec mpeg4,但VLC只是停留在单个帧上。我应该注意到ffmpeg是windows编译版本。。。尽管如此,我真正想要的是,最终得到总帧数,然后除以2,然后抓取它作为缩略图。(50%通过视频)@JasonMuchow,我的ffplay可以很好地播放您生成的视频。Vlc显示第一帧。如果我把它转换成mp4,它在vlc和ffplay中都能正常播放。所以我不确定你们面临什么问题。尝试以下操作:ffprobe inputfile这将打印文件的持续时间。您可以使用一个简单的脚本简单地解析这个输出,并获得duration/2。接下来,直接在输入上尝试此命令。您还可以在ffmpeg命令的输出上执行此操作。这是双向的。ffmpeg-i-vframes 1-ss-f image2-s widthxheight out.jpg。