ffmpeg减少内存消耗

时间:2019-07-17 14:27:38

标签: c++ ffmpeg rtsp

我正在开发一个应用程序,使用RTSP协议捕获一些IP摄像机并将其发送到一台服务器。 当IP摄像机的分辨率较低时,一切都会进行得很好,但是当IP摄像机的分辨率提高时,我的程序的内存消耗突然增加。

我已经意识到ffmpeg存储了我们可以寻求的一系列帧。 1.有什么办法可以减少它的长度吗?

2。当ffmpeg从输入中读取帧时,是否可以减小帧大小? 400x400的尺寸足以容纳我的应用,但当前为2048

3。或任何其他帮助我减少内存使用量的方法

1 个答案:

答案 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 ++项目中,以下是一些解决方案:

  1. 使用system(ffmpeg command line); //简单
  2. 使用CreatePrcess和管道隐藏控制台窗口并在GUI中显示进度。 //中
  3. 使用ffmpeg分布式包含文件和库来集成到您的项目中。 //需要较高的学习曲线