SRS之SFU多人视频

以下不是WebRTC推流和播放,而是两个人一对一的通话

介绍

WebRTC是通信的能力,从技术上看是两个或多个客户端,让用户具备互
动的能力。 人对于延迟的感知是400ms,也就是一般的对话能顺利进
行,这是RTC的核心指标。 由于端和端之间有关联,导致系统复杂度比
直播高了多个数量级,这是很多问题的根源。

SRS是在2020年支持的WebRTC协议,研发的详细过程请参考#307。 直
播和RTC的协议或能力,是SRS的核心能力,新的音视频开发者,将不会
区分直播和RTC,因为都是互联网视频能力。

SRS对直播和RTC这两种能力的抽象,是流(Stream),一个流会有多个消
费者(Consumer),流之间没有关联。 基于流,我们构造了各种业务的能
力,比如集群、录制、转码、转发。 基于这些业务能力,我们提供了各
种场景下的DEMO,比如低延迟直播、一对一通话、多人通话、连麦等
等。

开源最强大的是开放,因为开放所以和每个开发者有关系。 开源最大的
问题是没有SLA,只能提供DEMO不能提供服务,也不能及时给予开发者
支持。 和开源结合的云服务,弥补了开源的短板,SRS的开源方案,会
和云服务对接,利用云服务的能力补充开源没有SLA的短板。

对于RTC,SRS提供两个关键的能力:

开源的全链路能力、方案和DEMO,能快速搭建和了解RTC系统。
无缝(尽量)对接云服务,平滑(尽量)迁移到云,保障业务的发展。

在这里插入图片描述

修改SRS启动配置文件

修改SRS启动配置文件test.conf,内容如下:(重点就是要去掉和HTTPS相关的配置)

listen              1935;    ## RTMP服务端口号
max_connections     1000;
daemon              off;
srs_log_tank        console; ## 表示服务在控制台运行,方便看日志

http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}

http_api {
    enabled         on;
    listen          1985;
}
stats {
    network         0;
}
rtc_server {
    enabled         on;
    listen          8000;     ## WebRTC服务监听8000端口
    candidate       $CANDIDATE;
}

vhost __defaultVhost__ {
    rtc {
        enabled     on;
        bframe      discard;
    }
}

./objs/srs -c ./conf/test.conf

go环境安装

信令服务器和代理服务器,两个服务是go语言写的,必须安装go语言环境,且版本最好是1.13以上。

wget https://dl.google.com/go/go1.13.8.linux-amd64.tar.gz
tar -xvf go1.13.8.linux-amd64.tar.gz -C /usr/local
创建GO工作目录
mkdir -p /home/go/src

vim  /etc/profile
# 在最下面添加下面三行代码
export  GOROOT=/usr/local/go
export  GOPATH=/home/go
export  PATH=$PATH:$GOROOT/bin

source /etc/profile

在这里插入图片描述

signaling信令服务器

cd  srs/trunk/3rdparty/signaling && make && ./objs/signaling

在这里插入图片描述

httpx-static代理服务器

cd srs/trunk/3rdparty/httpx-static && make &&
./objs/httpx-static -http 80 -https 443 -ssk server_nopass.key -ssc server.crt \
    -proxy http://127.0.0.1:1989/sig -proxy http://127.0.0.1:1985/rtc \
    -proxy http://127.0.0.1:8080/

https://192.168.9.200/demos/one2one.html?autostart=true
在这里插入图片描述# Docker

docker run --rm --env CANDIDATE=$(ifconfig en0 inet| grep 'inet '|awk '{print $2}') \
  -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp \
  registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 \
  objs/srs -c conf/rtc.conf

docker run --rm -p 1989:1989 registry.cn-hangzhou.aliyuncs.com/ossrs/signaling:1

https://github.com/ossrs/signaling

Build and run SRS:

cd ~/git && git clone -b 4.0release https://gitee.com/ossrs/srs.git srs &&
cd ~/git/srs/trunk && ./configure && make && ./objs/srs -c conf/rtc.conf
Build and run signaling:

cd ~/git/srs/trunk/3rdparty/signaling && make && ./objs/signaling
Open demos by localhost: http://localhost:1989/demos

Build and run httpx-static for HTTPS/WSS:

cd ~/git/srs/trunk/3rdparty/httpx-static && make &&
./objs/httpx-static -http 80 -https 443 -ssk server.key -ssc server.crt \
    -proxy http://127.0.0.1:1989/sig -proxy http://127.0.0.1:1985/rtc \
    -proxy http://127.0.0.1:8080/
Open demos by HTTPS or IP:

http://localhost/demos/
https://localhost/demos/
https://192.168.3.6/demos/

http://www.ctiforum.com/news/guandian/549857.html
https://blog.csdn.net/adkada1/article/details/120590921
https://github.com/taxiao213/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值