最近我购买并安装了 4 个安全摄像头和一个 NVR。在我的房间里,我有一个带有 Raspberry Pi 5 的显示器,也可以显示摄像机的 4 个流。为此,我打开了 4 个终端,每个终端运行以下命令:
ffplay -left 0 -top 0 -x 960 -y 540 "rtsp://user:pass@camera-IP:port/videoSub"
显然具有正确的 left、top、IP 和端口参数,因此屏幕分为 4 个部分。
这工作得相当好,除了流中存在很多可见的错误。有时相机会变灰几帧,有时我会看到屏幕损坏(例如损坏的 JPG),所以我假设流中存在损坏。
如果我通过Foscam VMS(NVR自带的软件)在我的PC上查看相同的码流(主码流和子码流),码流是完美的。
我的电脑与Raspberry Pi、摄像头和NVR连接到同一网络,所以我怀疑是否存在网络问题。
因为显示器需要显示 4 个摄像头,所以我还使用子码流(我相信是 640x540)而不是 8MP 主码流。
显示流的网络和 CPU 使用率几乎可以忽略不计。
我尝试在运行 Linux 的笔记本电脑上执行相同的操作,得到完全相同的结果。
为什么树莓派不能正确显示这些流?而且,更重要的是,我该如何修复它才能在显示器上获得像样的图像?
谢谢!
正如对 @Christoph 的评论/回复中提到的,我最终放弃了并将 -rtsp_transport tcp 标志添加到命令行中。
这极大地提高了可靠性!在最初的情况下,我无法获得超过一分钟的像样图像(最多!),而现在图像始终完美且清晰。