WebRTC经过这么多年的发展,目前已经比较成熟的协议之一,播放也比较稳定,协议也已经成为了RFC,相应的开源项目也越来越多,但是基于WebRTC协议的部署简单,性能强悍,功能强大流媒体服务器的项目还比较稀少。其他服务器比如Mediasoup,Janus,Medooze ,要么就是设计复杂,接入成本要,要么就是性能较差,还就是多种语言结合,学习成本较高。 而SRS聚焦视频相关,功能专一,语言使用了高性能的c++,并且支持Rtmp转Webrtc等其他强大的功能的媒体服务器。

安装和配置SRS

1.源码编译安装运行SRS

git clone -b develop https://gitee.com/ossrs/srs.git &&
cd srs/trunk && ./configure && make && ./objs/srs -c conf/srs.conf
注:需要配置Candidate,官网链接https://github.com/ossrs/srs/wiki/v4_CN_WebRTC

javacv推流到流媒体服务器 webrtc流媒体转发服务器_音视频

使用这个命令开启RTC支持

env CANDIDATE="192.168.3.10" \
  ./objs/srs -c conf/rtc.conf

2.SRS常用命令

sudo ./etc/init.d/srs stop           // 停止srs
./objs/srs -c    conf/srs.conf      // 启动srs
./etc/init.d/srs  status                // 查看srs服务状态
tail -n 30 -f ./objs/srs.log.          // 查看SRS的日志

3.配置nginx代理
若不需要浏览器推流,可以不用设置nginx代理,使用localhost访问

server {
       listen 443 ssl;
       ssl on;
       server_name   yourhost;  
       ssl_certificate     /etc/nginx/cert/your.pem;
       ssl_certificate_key /etc/nginx/cert/your.key;
       gzip            on;
       gzip_types      text/plain application/xml text/css application/javascript;
       gzip_min_length 1000;
        location / {
        proxy_redirect                      off;
        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_read_timeout          1m;
        proxy_connect_timeout       1m;
        proxy_pass                          http://127.0.0.1:8080;
         }
       location ~ ^/(console|players)/ {
          proxy_pass http://127.0.0.1:8080/$request_uri;
       }
       location ~ ^/.+/.*\.(flv|m3u8|ts|aac|mp3)$ {
           proxy_pass http://127.0.0.1:8080$request_uri;
        }
        location ~ ^/(api|rtc)/ {
           proxy_pass http://127.0.0.1:1985$request_uri;
        }
    }

注意:your 代表需要配置你自己的域名信息,由于使用浏览器推流必须使用https协议,所以我这边配置了证书

本文福利, C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部↓↓

4.访问配置的域名

访问nginx配置的网址 https://webrtc.yourhost.com/

出现如下内容,则服务端架设成功

javacv推流到流媒体服务器 webrtc流媒体转发服务器_音视频_02

5.使用webrtc协议推流

推流链接:https://webrtc.yourhost.com/players/rtc_publisher.html?vhost=d.ossrs.net&server=d.ossrs.net&api=443&autostart=true&schema=https&stream=show 也可以使用官网链接,url填入你服务器的url 

javacv推流到流媒体服务器 webrtc流媒体转发服务器_javacv推流到流媒体服务器_03

rtc推流

6.使用webrtc协议拉流

拉流链接:https://webrtc.yourhost.com/players/rtc_player.html?vhost=d.ossrs.net&server=d.ossrs.net&api=443&autostart=true&schema=https&stream=show 也可以使用官网链接,url填入你服务器的url

javacv推流到流媒体服务器 webrtc流媒体转发服务器_视频编解码_04

rtc拉流

7.推拉流过程中服务端监控 

javacv推流到流媒体服务器 webrtc流媒体转发服务器_实时音视频_05

总结

虽然整片文章看起来不复杂,流程很简单。但是官网的文档中的知识点比较分散,所以大家要想快速的搭建的话就参考我这篇文章。