SRS RTMP/HLS低延时模式

目前主流的流媒体服务器主要有 nginx-rtmp、crtmpd、wowza、red5、adobe fms等。

支持的网络协议对比

协议是服务器的基础,协议决定了关键应用场景,譬如毫秒级别延时只能用udp,秒级别延迟用RTMP,十秒级别可以用HLS。

Feature

SRS

NGINX

CRTMPD

AMS

WOWZA

RTMP

Stable

Stable

Stable

Stable

Stable

HLS

Stable

Stable

X

Stable

Stable

HTTP FLV

Stable

X

X

X

X

HLS(aonly)

Stable

X

X

Stable

Stable

HDS

Experiment

X

X

Stable

Stable

MPEG-DASH

Experiment

X

X

X

X

HTTP Server

Stable

Stable

X

X

Stable

1、RTMP延时特点

延迟较低:

比起YY的那种UDP私有协议,RTMP算延迟大的(延迟在1-3秒),比起HTTP流的延时(一般在10秒以上)RTMP算低延时。

一般的直播应用,只要不是电话类对话的那种要求,RTMP延迟是可以接受的。在一般的视频会议(参考SRS的视频会议延时)应用中,RTMP延时也能接受,原因是别人在说话的时候我们一般在听,实际上1秒延时没有关系,我们也要思考(话说有些人的CPU处理速度还没有这么快)。

有累积延迟:

技术一定要知道弱点,RTMP有个弱点就是累积误差,原因是RTMP基于TCP不会丢包。所以当网络状态差时,服务器会将包缓存起来,导致累积的延迟;待网络状况好了,就一起发给客户端。这个的对策就是,当客户端的缓冲区很大,就断开重连。当然SRS也提供配置。

2、延时影响因素

SRS集群(边缘)不会增加延迟

C++音视频学习资料免费获取方法:关注音视频开发T哥,点击「链接」即可免费获取2023年最新C++音视频开发进阶独家免费学习大礼包!

3、编写配置文件

配置SRS为低延时模式,可以将RTMP延迟降低到0.8-3秒:

# conf/realtime.conf
listen              1935;
max_connections     1000;
vhost __defaultVhost__ {
    tcp_nodelay     on;
    min_latency     on;

    play {
        gop_cache       off;
        queue_length    10;
        mw_latency      100;
    }

    publish {
        mr off;
    }
}

低延时模式影响性能,更多参考如下:

github.com/ossrs/srs/w…

可以将HLS延迟降低到3-5秒:

listen              1935;
max_connections     1000;
vhost __defaultVhost__ {
    hls {
        enabled            on;
        hls_path           ./objs/nginx/html;
        hls_fragment       0.2;
        hls_window         2;
        hls_wait_keyframe  off;
    }
}

HLS还可考虑使用FLV协议替换

4、编码参数设置

GOP = 1;Profile = baseline; Tune = zerolatency (主要是GOP编码参数),例如OBS的编码设置如下:

测试结果,RTMP为1秒、m3u8为3秒:

作者:郎涯技术 链接:https://juejin.cn/post/6996664571117174798

#音视频开发##程序员#

展开阅读全文

页面更新:2024-03-30

标签:进阶   视频会议   弱点   客户端   级别   性能   协议   参数   模式   服务器   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top