我正在开发一个应用程序,使用RTSP协议捕获一些IP摄像机并将其发送到一台服务器。 当IP摄像机的分辨率较低时,一切都会进行得很好,但是当IP摄像机的分辨率提高时,我的程序的内存消耗突然增加。
我已经意识到ffmpeg存储了我们可以寻求的一系列帧。 1.有什么办法可以减少它的长度吗?
2。当ffmpeg从输入中读取帧时,是否可以减小帧大小? 400x400的尺寸足以容纳我的应用,但当前为2048
3。或任何其他帮助我减少内存使用量的方法
答案 0 :(得分:0)
1)减少内存:
i)降低帧速率:使用-framerate
ii)通过选择更长的GOP增加压缩率:使用-g
2)要缩放您的输入:使用-s开关
ffmpeg -framerate 25 -g 14 -i input.mp4 -vcodec libx264 -s 400x400 http://localhost:1234/out.ffm
已编辑:
为将ffmpeg集成到您的c ++项目中,以下是一些解决方案:
system(ffmpeg command line);
//简单CreatePrcess
和管道隐藏控制台窗口并在GUI中显示进度。 //中