SRS4.0-使用rtmp2rtc.conf-使用docker搭建srs,推送webrtc流时等待时间超过5s,且推流期间会导致播放webrtc流卡住不动的问题,webrtc推流响应的时间过长
srs4.0, 在浏览器中推送webrtc视频流,响应时间很长,导致播放的webrtc视频流被卡住srs4.0推送webrtc视频流响应时间很长,推送webrtc视频很慢,推送webrtc视频请求很慢
系统:windows10
内存:16G
cpu:Inter E5-2695 v3
docker-desktop: v4.10.1
业务大致逻辑
一、业务逻辑
1、一台电脑,使用ffmpeg推流,将摄像头和屏幕推送到srs流媒体服务器中
2、使用浏览器,播放视频1和视频2,播放的协议是webrtc协议 (延时在800多毫秒)
3、开启一个浏览器窗口,推送webrtc的视频流到srs中
问题:
在执行步骤3时,请求/rtc/v1/publish 接口,服务器等待5秒多。此时另外两个浏览器播放视频1和视频2就直接卡住5秒多。
二、srs的docker配置
1、启动srs的docker
docker run -it --name srs4.0 --restart=always -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 10080:10080/udp -p 8000:8000/udp registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/rtmp2rtc.conf
2、进入到docker中
docker exec -it srs4.0 /bin/bash
3、给srsdocker安装vim
apt-get update
apt-get install vim -y
4、修改srs容器的配置文件,rtmp2rtc.conf (在生成容器时就指定这个是配置文件)
vi conf/rtmp2rtc.conf : 内容如下
listen 1935; #必须有,rtmp协议,公网必须开放这个端口
max_connections 1000;
daemon off;
srs_log_tank console;http_api {
enabled on;
#必须有,webrtc播放和推流需要这个端口
listen 1985;
}http_server {
enabled on;
listen 8080;
#开发阶段需要,这个是srs自带的web页面,
dir ./objs/nginx/html;
}srt_server {
enabled on;
listen 10080;
maxbw 1000000000;
connect_timeout 4000;
latency 20;
peerlatency 20;
recvlatency 20;
}rtc_server {
enabled on;
listen 8000;
candidate 公网IP; #配置上公网IP,
}# @doc https://github.com/ossrs/srs/issues/1147#issuecomment-577607026
vhost __defaultVhost__ {
#这个是rtc配置,开启rtmp转rtc
rtc {
enabled on;
rtmp_to_rtc on;
rtc_to_rtmp on;
}
#开启http-flv
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
#rtmp的低时延配置
tcp_nodelay on;
min_latency on;play {
gop_cache off;
queue_length 10;
mw_latency 100;
}publish {
mr off;
}}
三、具体错误原因
1、对nginx进行过操作,配置能减少等待时间。没有用处
2、看了srs的官方文档,issue,都没有相关的问题出现过。
3、最后就是将docker-desktop 升级【真的是docker-desktop的原因】
将docker-desktop 由v4.10.1 升级到v4.17.1后,就没有遇到过这个问题。
更多推荐
所有评论(0)