ffmpeg丢弃帧以降低文件大小

ffmpeg丢弃帧以降低文件大小,ffmpeg,h.264,filesize,frame-rate,Ffmpeg,H.264,Filesize,Frame Rate,我们的安全系统使用ffmpeg记录和归档我们的IP摄像机流-使用wallclock作为时间戳1-irtsp://192.168.x.x:554/mpeg4 -c复制-t 60 my_input_video.avi 我每分钟用crontab运行一次,因此每分钟为每个摄像头创建60秒(约15Mb)的视频。当发生入侵时,摄像机通过FTP发送一张图片和一个由incrontab调用的脚本: 1-通过电子邮件立即转发图片 2-选择入侵发生时的视频,用h264(压缩至~2,6Mb)压缩并通过电子邮件发送 它工

我们的安全系统使用
ffmpeg记录和归档我们的IP摄像机流-使用wallclock作为时间戳1-irtsp://192.168.x.x:554/mpeg4 -c复制-t 60 my_input_video.avi

我每分钟用crontab运行一次,因此每分钟为每个摄像头创建60秒(约15Mb)的视频。当发生入侵时,摄像机通过FTP发送一张图片和一个由incrontab调用的脚本:

1-通过电子邮件立即转发图片

2-选择入侵发生时的视频,用h264(压缩至~2,6Mb)压缩并通过电子邮件发送

它工作得很好,但如果小偷穿过各种摄像头的路径,与SMTP服务器的连接速度不够快,因此视频电子邮件会延迟。为了避免这种情况,我想进一步压缩视频。我可以降低分辨率(例如640x480到320x240),但有时640x480可以方便地放大看起来正在移动的物体

因此,我的想法是在视频中删除帧,以降低文件大小。我不在乎窃贼在视频中是否像“停止运动的乐高玩具”一样走路,最重要的是我知道有人可以让我表演

mediainfo my_input_video.avi
说帧速率为600.000 fps,但这当然是错误的。IP摄像机发送的FPS总是错误的,因为它随网络质量而变化;这就是为什么我在命令中使用“-use_wallclock_as_timestamps 1”来记录流

使用
ffmpeg-i my_input_video.avi-vcodec h264-预设超快-crf 28-acodec mp3-q:a 5-r 8输出。avi
视频正常,但文件大小更大(3Mb)

使用
ffmpeg-i my_input_video.avi-vcodec h264-预设超快-crf 28-acodec mp3-q:a 5-r 2输出。avi
文件大小较低(2,2Mb),但视频无法工作(在第一帧时被阻止)

在进程中间创建一个MJPEG视频(MJPEG =非交错帧)(首先输出到较少的帧的MJPEG,然后导出到H264)产生相同的结果。 你知道我怎样才能让我的小偷像“停止运动的乐高玩具”一样走路,把文件大小降到最低吗


感谢您的帮助

您的文件大小限制是多少?在我看来,60秒视频的2.6MB是相当合理的,大约350kbps,这对于视频质量来说是相当低的

您需要指定视频比特率
-b:v 125000
(125kbps,应该降到约900kbs)以控制您希望视频编码的比特率。您没有给FFMpeg足够的提示,说明您希望如何处理视频,因此它会选择您不喜欢的任意值。当你降低帧速率时,它只会耗尽为每一帧分配更多比特的缓冲区。(您需要记住的一件大事是,当您将视频延长一段较长的时间时,场景发生显著变化的可能性越大,需要一个I帧(完全编码的帧与基于前一帧的帧),因此降低帧速率会有所帮助,但可能没有您想象的那么大)


您的“(它在第一帧被阻止)。”很可能是您试图在流不在I帧时开始解码流时遇到的问题,也不是您的设置问题。

不确定为什么投票被否决,这看起来是一个很好的问题,我想请您帮忙。读了更多关于这个主题的内容后,我意识到我的想法对MJPEG视频很有意思,但不是H264,因为帧是交错的。H264在所有情况下都能提供更好的大小/质量结果,我想我需要调整设置以获得我想要的(~900K/min)。我试过用-b:v,但看起来-crf效果更好。我会继续阅读有关视频编码的内容,如果我找到了一个很好的IP摄像机录制解决方案,我会发回。再次感谢使用crf和maxrate将比特率限制在不高于您的目标
-crf 20-maxrate 120k
的范围内,我刚刚尝试了各种
-maxrate
值(非常高和非常低),但没有改变任何东西。您确定可以同时使用
-crf
-maxrate
吗?是的,请参阅“通过同时指定crf和maxrate设置,您也可以使用具有最大比特率的crf,如“谢谢,我现在看到了!”!对于我的示例视频,它不会改变任何东西,但可能会针对我的视频类型(IP cam录制=与电影相比质量较差)