SRS流媒体服务器实现webrtc/rtmp推拉流

要做一个在浏览器推摄像头流,在服务端拉流并在后台处理再展示给前端的实时服务。

选择了SRS流媒体服务器。

官方文档:https://gitee.com/winlinvip/srs-wiki/wikis/v4_CN_Home

一、下载并安装 SRS(这里没什么坑)
git clone https://gitee.com/winlinvip/srs.oschina.git srs
cd srs/trunk
./configure && make

二、配置网络端口打开(默认开通可跳过)
因为我的服务器是受安全组控制的,想要正常运行webrtc和rtmp的功能,一些需要开通的端口:

UDP_8000
TCP_1985
TCP_1935
TCP_8080

三、打开服务器的SRS网页
http://{SRS服务器所在ip}:8080/players/rtc_publisher.html


4578446dc1358de5ca96016acb921b9.png

这时推流是不行的,有没有成功推流可以打开console网页查看:
http://{SRS服务器所在ip}:1985/console/ng_index.html


f0e483c64e888f286e1c12c352a8681.png

四、原因就是浏览器要求使用webrtc时需要https

在网上搜索说配置浏览器的启动参数,这种方法试了不行。
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --allow-running-insecure-content --unsafely-treat-insecure-origin-as-secure="http://{ip}:8080"

采取的方案是配置一台Nginx,申请个免费的HTTPS证书,并配置转发:

4.1 安装Nginx
yum install -y nginx

4.2配置Nginx证书
参考 https://blog.csdn.net/yybk426/article/details/94649834

4.3配置Nginx


053521adb88ef461aab611c01140234.png

上图前面是证书的配置,后面是SRS的转发配置:
说明:
所有通过HTTPS 443端口访问的转发到本地(Nginx服务器)8080端口;
其中,带rtc的转发到本地(Nginx服务器)1985端口
原因是:打开推流界面->网络,js发送了一个请求到服务器1985端口


908256a9b9cfb7f63645cb0f66f5dff.png

地址是http://{ip}:1985/rtc/v1/publish/
所以,把https://{ip}/rtc/v1/publish/ 映射成http://{ip}:1985/rtc/v1/publish/

五、推拉流
用SRS网页的默认地址就可以正常webrtc推流了,拉流也一样。
或者使用rtmp拉webrtc推上去的流,再或者rtmp推流,webrtc拉流也可。

你可能感兴趣的:(SRS流媒体服务器实现webrtc/rtmp推拉流)