我正在使用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转换,您有什么建议?