我目前正在进行一个项目,抓取 IP 摄像机视频并将其流式传输到网站。该摄像机位于海滩,因此想法是将流信号发送到服务器,然后从服务器发送到客户端设备。
\n\n为此,我在海滩上使用了 Raspberry Pi 3 B+,负责从相机获取信号并将其发送到服务器。
\n\nI\xe2\x80\x99m 使用 FFmpeg 将 RTSP 信号转换为 HLS 片段,然后将它们存储在服务器上,然后使用 VideoJS 7.4.1 在浏览器中播放片段。
\n\n这是我\xe2\x80\x99m 使用的 FFmpeg 中的代码:
\n\nffmpeg -i rtsp://CameraIP/onvif1 -c:v libx264 -preset veryfast -crf 17 -an -hls_time 40 -hls_list_size 5 ftp://ServerIP/stream/abc.m3u8\n
Run Code Online (Sandbox Code Playgroud)\n\n这工作得很好,但问题是,Raspberry 使用了大约 70% 的 CPU 使用率来执行此任务,因此我必须降低质量,好消息是相机信号已经是 h264 格式(说 h264本机)所以我尝试不将视频编解码器转换为 libx264,而是使用以下命令复制流:
\n\nffmpeg -i rtsp://cameraIP/onvif1 -c:v copy -an -hls_time 40 -hls_list_size 5 ftp://ServerIP/stream/abc.m3u8\n
Run Code Online (Sandbox Code Playgroud)\n\n使用这个命令,CPU 使用率下降到 2% 或 3%,这很好,我可以提高质量,甚至更好,获得更好的相机。但问题是它不适用于手机(在 FireFix、Chrome 和 Safari 中尝试,在 Android 和 iO 操作系统中),VideoJS 显示此错误: …