WebRTC是通信的能力,从技术上看是两个或多个客户端,让用户具备互动的能力。 人对于延迟的感知是400ms,也就是一般的对话能顺利进行,这是RTC的核心指标。 由于端和端之间有关联,导致系统复杂度比直播高了多个数量级,这是很多问题的根源。
SRS是在2020年支持的WebRTC协议,研发的详细过程请参考#307。 直播和RTC的协议或能力,是SRS的核心能力,新的音视频开发者,将不会区分直播和RTC,因为都是互联网视频能力。
SRS对直播和RTC这两种能力的抽象,是流(Stream),一个流会有多个消费者(Consumer),流之间没有关联。 基于流,我们构造了各种业务的能力,比如集群、录制、转码、转发。 基于这些业务能力,我们提供了各种场景下的DEMO,比如低延迟直播、一对一通话、多人通话、连麦等等。
1. 下载源码,推荐用CentOS7:
git clone -b 4.0release https://gitee.com/ossrs/srs.git
2. 编译,注意需要切换到srs/trunk
目录:
./configure --with-hls --with-ssl --with-http-server --with-http-callback --with-http-api --with-ingest --with-stream-caster && make
3. 启动SRS
cd srs-4.0.39/trunk
./objs/srs -c conf/rtc.conf
4. 此时启动后,你使用ffmpeg在window端用命令推流
推流命令 :
ffmpeg -f dshow -i video="Integrated Camera":audio="麦克风阵列 (Synaptics Audio)" -vcodec libx264 -x264opts "bframes=0" -r 25 -g 25 -preset:v ultrafast -tune:v zerolatency -codec:a aac -ac 2 -ar 44100 -f flv rtmp://192.168.6.52:1935/live/livestream
上述推流命令中 Integrated Camera 与 麦克风阵列 (Synaptics Audio)是window端的音视频设备;可以通过ffmepg命令获取。 获取命令如下:
ffmpeg -list_devices true -f dshow -i dummy
以下是我电脑的设备信息 对照自己填写到命令里面去即可;
你使用ffmpeg在window端用命令推流,观察SRS日志会有报错:
网上搜索到该错误是因为我推流是rtmp 但未开启rtmp转rtc的配置。
解决办法就是 使用srs配置文件夹conf里面的rtmp2rtc.conf配置文件来启动srs
重新启动srs
./objs/srs -c conf/rtmp2rtc.conf
启动srs成功后,我们再使用上述推流命令推流
5. Windows端访问SRS自带webrtc播放器 把IP地址改为自己的SRS所在IP地址即可
http://192.168.12.187:8080/players/rtc_player.html
播放网页界面如下图:
6. 播放:
在上图webrtc播放器页面,将url的IP地址换为自己的即可。
然后点击播放:
效果如下图
小提示:
我个人认为,可以使用srs自带的rtc.conf 在其中添加上rtmp_to_rtc on; 应该也能成功播放。
添加格式如下:
vhost rtc.vhost.srs.com {
rtc {
enabled on;
rtmp_to_rtc on;
rtc_to_rtmp on;
nack on;
twcc on;
}
}
至此就结束啦。
觉得有用记得点赞 收藏+关注。感谢感谢
在此附上SRS官方文档地址:
Introduction | SRS (ossrs.net)
添加更新:新增解决SRS播放WebRTC黑屏转圈加载问题博客;
解决WebRTC黑屏问题,包括内网、公网环境黑屏_欣欣芜湖的博客-CSDN博客