系统: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后,就没有遇到过这个问题。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐