ffmpeg:从实时视频流中抓取静止帧时如何减少CPU和带宽使用?

时间:2017-09-03 20:20:34

标签: ffmpeg cpu-usage bandwidth

我正在使用ffmpeg从实时相机源中获取静止图像(rtsp://192.168.1.88:554/11)。输入的视频是1920x1080 h.264视频。

我们可能需要同时从多达10-15个摄像头中抓取帧。

所有摄像机都在本地网络上(100Mbit以太网)。

我正在执行ffmpeg,其选项是每10秒抓取一帧,或者1/10 FPS,并转换为640x360 JPG输出,写入临时目录中的文件。

我注意到当ffmpeg的单个实例正在运行时,系统的带宽使用率会增加到超过100kbps。所以我假设ffmpeg一直在直播视频,而不是每隔10秒重新连接到一个流来获取新图像。

有没有办法防止这种情况,并且可能强制ffmpeg仅在需要新抓取时请求数据?我意识到它必须启动/停止流并监听关键帧等以确保捕获有效的静止帧,但我想知道这是否可行和/或值得。

此外,单个ffmpeg进程(在Raspberry Pi 3上运行)的CPU使用率约为12-15%。我担心1)如果添加更多的ffmpeg进程,PI将会过热,以及2)每个摄像机进给的CPU使用量将限制捕获的同时进给数量达到不太理想的数量。

TL; DR 对于以1 / 10fps(或可能是1 / 5fps)速率进行大多数CPU和带宽优化的ffmpeg视频到JPG转换,您有什么建议?

0 个答案:

没有答案