在两个nginx服务器之间通过ffmpeg实现视频流转推

由于项目需求,需要分别在厂站和集中服务器上开发nginx服务器,通过ffmpeg实现对直播数据流的推流和转推。这里展示了本人测试过程中的截图,没有给出具体的文字说明。

nginx转发rtmp直播流

参考这篇博文

编译安装

cd nginx-1.20.2

sudo ./configure --prefix=/usr/local/nginx --with-stream

sudo make

sudo make install

备份&覆盖&重新链接配置文件

检查:

配置nginx

sudo vim /usr/local/nginx/conf/nginx.conf

events {...}

# tcp反向代理

stream {

    server {

        listen 1935;

        proxy_connect_timeout 10s;

        proxy_timeout 15s;

        proxy_pass 10.10.10.10:1935;

    }

}

http {...}

通过nginx-rtmp server进行视频流转发

1.接收流

在需要接收流的节点上进行类似以下的配置

application live{

live on;

}

只要有这一项,就可以通过在浏览器等位置输入下面这个url来点播了

rtmp://127.0.0.1:1935/live

可以使用vlc播放视频流

2.转推流

a.直接转推:

#在application live上收到流后直接用push命令转推给下一个节点

application live{

live on;

push rtmp://10.10.3.2/live;

}

但是总是报buffer错误:

这说明推流没问题,但是没连上服务器,检查端口是打开状态

尝试关闭防火墙:

再向目的ip地址192.168.239.131推流就可以了

再次尝试转推:

拉到了转推出去的地址

b.ffmpeg处理一下之后转推:

这里的转推是live收到流后先用ffmpeg处理完 发给另一个application sendout

然后在sendout里push出去给下一个节点

application live{

live on;

exec ffmpeg -re -i rtmp://localhost:1935/live/mystream -vcodec flv -acodec copy -s 32x32 -f flv rtmp://localhost:1935/sendout/mystream;

}

application sendout{

live on;

push rtmp://10.10.3.2/live;

}

推流到本地ip上可行:

其他测试截图

本地拉流测试:

转发ip拉流测试:

出现上述问题的原因:离10.200.102.201的服务器位置太远

回到服务器环境下的测试:

关于nginx rtmp转推push和relay的解析可以参考这篇博文

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值