srs配置WebRTC

1. WebRTC简介

  1. WebRTC由Google发起的实时通讯解决方案,由一组标准、协议和JavaScript API组成,用于实现浏览器之间(端到端之间)的音频、视频及数据共享。WebRTC不需要安装任何插件,通过简单的JavaScript API就可以使得实时通信变成一种标准功能,其中包含视音频采集,编解码,数据传输,和音视频展示等功能

  2. 不光支持Web之间的音视频通讯,还支持Android以及IOS端,此外由于该项目是开源的,我们也可以通过编译C++代码,从而达到全平台的互通

  3. Web开发者可以基于集成WebRTC的浏览器提供的web API开发基于视频、音频的实时通信应用。
    srs配置WebRTC_第1张图片

  4. WebRTC基于UDP

2. SRS配置WebRTC

为什么使用WebRTC

  1. 浏览器无需安装任何插件即可实时播放视频
  2. 低延时。基于UDP
  3. 推流和直播现状
    直播推流场景一般是RTMP,事实上的标准协议,因为各种系统之间对接都会支持RTMP协议,所以虽然RTMP很老吐槽很多,但是还是比较方便对接的协议,直播播放一般不用RTMP,可以选择的协议就很多了,比如HTTP-FLV、HLS、DASH、WS-FLV,这些协议的特点都是TCP协议,也方便CDN系统分发直播流。但是,TCP有网络问题:
    • 互动:TCP在网络抖动时,延迟会变大。一般消息(弹幕)的延迟比较小,这时就会出现消息比画面更快的情况。
    • 同步:不同客户端的播放进度不同步,有些延迟大,有些延迟小。比如直播答题,或者直播拍卖,需要同步播放器的场景,就会造成问题

SRS对直播和RTC有两种能力的抽象,是流(Stream),一个流会有多个消费者(Consumer),流之间没有关联。 基于流,SRS构造了各种业务的能力,比如集群、录制、转码、转发。 基于这些业务能力,SRS提供了各种场景下的DEMO,比如低延迟直播、一对一通话、多人通话、连麦等等。
Adobe官宣了2020年底就不支持Flash,没有Flash了怎么播放RTMP
一种方案就是使用WebRTC进行替代
srs4.0开始陆续支持WebRTC的推流和播放功能,WebRTC播放器做直播
一般步骤:
1. ffmpeg将原始流(一般为RTSP)转码为RTMP
2. 将RTMP推流至SRS视频流媒体服务器
3. SRS将RTMP流转成WebRTC流,提供给客户端。配置请参考

这样可以做到较低延迟
发展如下所示

 SRS 4.0.14,支持了RTMP推流,WebRTC播放,即推送RTMP流到srs,由srs使用协议进行转换生成WebRTC进行拉流,参考Wiki: RTMP to RTC。
 SRS 4.0.76,支持了WebRTC推流,WebRTC播放,参考Wiki: RTC to RTC。
 SRS 4.0.95,支持了WebRTC推流,RTMP播放,参考Wiki: RTC to RTMP 和 #2303 。
 SRS 4.0.96,一对一通话DEMO,参考SFU: One to One。
 SRS 4.0.98,多人会议DEMO,参考SFU: Video Room。
 SRS 4.0.98,会议录制,直播连麦DEMO,参考Room to Live。

RTC比直播多了一个关键的配置,也是必须要反复确认配置对的,就是candidate,作者也强调了这个参数的重要作用candidate,简单的理解就是SRS内部会引用这个参数,所以需要配置这个参数的具体值,linux下面直接配置环境变量即可

export CANDIDATE= ip

将ip改为实际使用srs的ip,该变量的作用可以理解成:客户端可以连接的地址,即可以取到视频流的地址。
之后直接启动srs即可,

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

测试WebRTC的流可以直接使用srs提供的web播放工具即可

http://ossrs.net/players/rtc_player.html

srs配置WebRTC_第2张图片
格式为

webrtc://localhost/live/livestream

localhost/live/livestream改为自己实际的取流ip

3. 参考链接

  1. 低延时直播
  2. WebRTC简介
  3. srs启动WebRTC

你可能感兴趣的:(流媒体,srs,webrtc)