使用 ffmpeg 的网络摄像头流:远程 UDP 流

Webcam Stream With ffmpeg: UDP Stream remotely

我有一个 C920 高清摄像头连接到 Raspberry Pi 4,我的目标是能够随时从我的 phone / 笔记本电脑都连接到我的网络访问该摄像头的流使用 VPN。

现在,我设法像这样使用 ffmpeg:

ffmpeg -f v4l2 -input_format h264 \
-video_size 1920x1080 \
-i /dev/video4 \
-copyinkf -codec copy \
-f mpegts udp://192.168.1.10:5000?pkt_size=1316

在电脑上192.168.1.10我可以启动VLC进入“网络传输”并输入udp://@:5000以便观看流。

这是一个单一的流,据我所知,我的 RPi 只是在该计算机上“拍摄”帧,无论它是否连接,我怎样才能有一个合适的流(也许是 rtmp?)我可以观看在多个设备中?

请注意:我使用 -copyinkf -codec copy 是为了避免转码和其他可能导致 CPU 使用率很高的操作。我也可以这样做吗?

谢谢。

Nginx 可以配置为托管 RTMP 视频流,该流将用于在我的所有设备中播放来自 ffmpeg 的流。为此,我们需要安装 libnginx-mod-rtmp 并为 RTMP 配置 nginx:

  1. apt install libnginx-mod-rtmp
  2. 将以下内容附加到 /etc/nginx/nginx.conf
rtmp {
        server {
                listen 1935;
                chunk_size 4096;
                allow publish 127.0.0.1;
                deny publish all;

                application live {
                        live on;
                        record off;
                }
        }
}
  1. systemctl restart nginx
  2. 指向ffmpeg到nginx服务器:
ffmpeg -f v4l2 -input_format h264 \
-video_size 1920x1080 \
-i /dev/video4 \
-copyinkf -codec copy \
-f flv rtmp://127.0.0.1/live/stream

我也将输出格式更改为flv,以提高与播放器的兼容性。

尽情享受吧。