使用 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:
apt install libnginx-mod-rtmp
- 将以下内容附加到
/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;
}
}
}
systemctl restart nginx
- 指向
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
,以提高与播放器的兼容性。
尽情享受吧。
我有一个 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:
apt install libnginx-mod-rtmp
- 将以下内容附加到
/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;
}
}
}
systemctl restart nginx
- 指向
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
,以提高与播放器的兼容性。
尽情享受吧。