SRS rtmp http-flv流低延時設置、測試

配置參考

https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatencyhtml

延遲影響因素

編碼器:不一樣的編碼器(免費或開源的),延遲也是不一樣的。nginx

流媒體服務器:SRS2git

流協議:好比:rtmp是實時性比較高的,http_flv也是實時性比較高的,HLS就不行了,官方說60s以內的均可以容忍……github

播放器:主要是播放器的緩衝區時長,好比flash播放器的緩存時長是3s,那麼必定會有3s的延時。算法

網絡:有網絡問題致使的累積延遲。shell

視頻碼率:200k和2M的碼率這個比較,固然也能夠歸到網絡緣由中去。api

SRS配置低延遲

listen              1935;
max_connections     1000;
srs_log_tank        file;
srs_log_file        ./objs/srs.log;
http_api {
    enabled         on;
    listen          1985;
}
http_server {
    enabled         on;
    listen          80;
    dir             ./objs/nginx/html;
}
stats {
    network         0;
    disk            sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
    #最小延遲打開,默認是打開的,該選項打開的時候,mr默認關閉。
    min_latency     on;
    #Merged-Read,針對RTMP協議,爲了提升性能,SRS對於上行的read使用merged-read,即SRS在讀寫時一次讀取N毫秒的數據
    mr {
        enabled     off;
        #默認350ms,範圍[300-2000]
        #latency     350;
    }
    #Merged-Write,SRS永遠使用Merged-Write,即一次發送N毫秒的包給客戶端。這個算法能夠將RTMP下行的效率提高5倍左右,範圍[350-1800]
    mw_latency      100;
    #enabled         on;
    #https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency#gop-cache
    gop_cache       off;
    #配置直播隊列的長度,服務器會將數據放在直播隊列中,若是超過這個長度就清空到最後一個I幀
    #https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency#%E7%B4%AF%E7%A7%AF%E5%BB%B6%E8%BF%9F
    queue_length    10;
    #http_flv配置
    http_remux {
	    enabled     on;
	    mount [vhost]/[app]/[stream].flv;
	    hstrs	on;
    }
}

測試

編碼器:OBS緩存

播放器:SRS-Player(http://www.ossrs.net/srs.release/releases/demo.html?ip=192.168.1.170) 服務器

測試協議:rtmp、http-flv網絡

碼率:

    200K延時 rtmp:1-2s(1s7) http_flv: 2s2

    800K延時 rtmp:2s     http_flv:3s30

相關文章
相關標籤/搜索