srs 直播连麦环境搭建

一、简介
二、修改conf/rtc.conf
三、两个客户端加入房间
四、合流
4.1分别拉流尝试
4.2合流推流
4.3拉取合流

一、简介
直播连麦是指在one2one或one2many进行音视频通话,此时把他们的音视频流合在一起,通过rtmp等协议推送给大量用户做直播。
因此首选需要搭建好以下环境:
srs one2one,one2many通话环境搭建

视频合流非常非常消耗CPU,而且有很多种方式:

SRS+FFmpeg,SRS将WebRTC流转RTMP,FFmpeg将多路RTMP合流。优势:延迟小,音质好;缺点是命令行难度高。

SRS+OBS,方案和SRS+FFmpeg一样,不过用OBS来实现合流。优势:图形化界面更友好,音质好;缺点是延迟大有不同步风险较大。

OBS抓浏览器,OBS直接捕获浏览器窗口和电脑的音频。优势:可见即所得,依赖少;缺点是音质不如前面的方案。

以上引用官方文档:
https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#sfu-one-to-one
下面对其中SRS+FFmpeg进行搭建,其他两个可以做测试用,但很难集成在代码里做一个服务器。

二、修改conf/rtc.conf

cat conf/rtc.conf

找到以下:

rtc {
    
    
        enabled     on;
        # @see https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#rtmp-to-rtc
        rtmp_to_rtc on;//原off,改为on
        # @see https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#rtc-to-rtmp
        rtc_to_rtmp on;//原off,改为on
    }

然后重新启动,注意这里两个客户端是在同一网段,如果服务器在公网的话,还需要暴露本身的ip,因为在公网的srs无法拿到自己公网ip,它只能拿到它自己ifconfig的ip,而那是它所在局域网的网段。

./objs/srs -c conf/rtc.conf

三、两个客户端加入房间
1111加入房间
请添加图片描述

2222加入房间
请添加图片描述
四、合流

4.1分别拉流尝试

ffplay rtmp://127.0.0.1/1111/1111
ffplay rtmp://127.0.0.1/1111/2222

请添加图片描述
4.2合流推流

ffmpeg -f flv -i rtmp://127.0.0.1/1111/1111 -f flv -i rtmp://127.0.0.1/1111/2222      -filter_complex "[1:v]scale=w=96:h=72[ckout];[0:v][ckout]overlay=x=W-w-10:y=H-h-10[out]" -map "[out]"      -c:v libx264 -profile:v high -preset medium      -filter_complex amix -c:a aac      -f flv rtmp://127.0.0.1/live/merge

以上是srs官网提供的合流,我用了之后出问题了,合流之后小屏的那个花屏了,可能不同的采集设备视频和音频参数不同带来的,以下是笔者自己配置的ffmpeg命令,亲测有效:

ffmpeg -i rtmp://127.0.0.1/1111/1111 -i rtmp://127.0.0.1/1111/2222 -filter_complex "[0:v][1:v]overlay=W-w-100:H-h-100:format=auto,format=yuv420p[out]" -map "[out]" -map 0:a -c:v libx264 -c:a aac -f flv rtmp://127.0.0.1/live/merge

4.3拉取合流

ffplay rtmp://127.0.0.1/live/merge

请添加图片描述

笔者VX:YQW1163720468,入群讨论。

猜你喜欢

转载自blog.csdn.net/weixin_43466192/article/details/130640686
srs