以下不是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/