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
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