LowLatency的HLS低延迟直播协议详解

HLS全称为HTTP Live Streaming,其中m3u8作为描述协议,指向一系列切片文件。支持多码流与自适应码率,支持广告无缝播放,支持CMAF协议的低延时直播,也支持CDN动态选择。

我们先看下HLS整体架构,由三部分构成:服务端、CDN分发、客户端,切片文件可以是ts或者mp4。如下图所示:

一、自适应码率
服务端提供多个不同码率的码流,客户端根据估计的码率来选择最合适的码流,实现自适应码率的流畅播放。码流描述使用EXT-X-STREAM-INF表示,BANDWIDTH表示带宽,RESOLUTION表示分辨率,如下所示:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/lo_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com

HLS协议低延迟模式需要在服务器端和客户端同时进行设置。以下是一些常用的设置方法: 1. 服务器端设置 在使用HLS协议的服务器中,可以通过修改配置文件的方式来设置低延迟模式。具体的设置方法需要根据所使用的服务器软件进行调整,一般来说需要设置以下参数: ``` hls_low_latency on; // 开启低延迟模式 hls_playlist_length 3; // 设置M3U8文件的长度(单位:秒) ``` 其中,hls_low_latency参数用于开启低延迟模式,hls_playlist_length参数用于设置M3U8文件的长度。一般来说,设置M3U8文件的长度为3秒左右可以达到较好的效果。 2. 客户端设置 在客户端使用HLS协议进行播放时,可以通过设置播放器的参数来开启低延迟模式。以下是一些常用的参数设置方法: ``` ijkplayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-low-latency", 1); // 开启低延迟模式 ijkplayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "hls-segment-threads", 1); // 设置HLS分段下载线程数量 ijkplayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "hls-segment-threads", 1); // 设置HLS分段下载线程数量 ijkplayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "nobuffer"); // 设置不缓存数据 ``` 其中,enable-low-latency参数用于开启低延迟模式,hls-segment-threads参数用于设置HLS分段下载线程数量,nobuffer参数用于设置不缓存数据。这些参数的具体含义和使用方法可以参考ijkplayer的官方文档。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值