需求:通过互联网A服务器为内网B服务器,内网C服务器提供视频服务,其中C只能和B连接
方案:在A服务器上搭建推流服务,内网B服务器上搭建拉流服务,并提供给C rtmp视频流
A服务器nginx配置:
rtmp {
server {
listen 1935; # 监听端口 1935,用于接收 RTMP 流
chunk_size 4000;
application live1 {
live on;
record off;
push rtmp://B服务器IP:1935/live1;
}
application live2 {
live on;
record off;
push rtmp://B服务器IP:1935/live2;
}
application live3 {
live on;
record off;
push rtmp://B服务器IP:1935/live3;
}
}
}
A服务器推流服务
ffmpeg -rtsp_transport tcp -i rtsp://admin:xxxxx@摄像头ip:554 -c:v libx264 -vf "scale=iw/2:ih/2" -an -f flv rtmp://B服务器ip:1935/live1
B服务器nginx配置
rtmp {
server {
listen 1935;
# stream 1
application live1 {
live on;
allow publish A服务器ip;
deny publish all;
}
# stream 2
application live2 {
live on;
allow publish A服务器ip;
deny publish all;
}
# stream 3
application live3 {
live on;
allow publish A服务器ip;
deny publish all;
}
# 按需添加更多的 application
...
}
}
C服务器拉流
ffplay rtmp://B服务器ip:1935/live1
参考了chatgpt的回答和大佬的ffmpeg推流服务的指令编写
FFMPEG 将IPCamera的RTSP视频流传送至RED5服务器 小白教程_ffmpeg ipcamera-CSDN博客