Skip to content

liveDelay

Franken Zeng edited this page Jul 27, 2017 · 9 revisions

直播延时控制

因为网络抖动等原因,直接播放直播流,会出现延时越来越大的情况。金山云播放SDK特提供延时控制,可以保证观众和主播端画面固定的延时。

1. 定义

@property NSTimeInterval bufferTimeMax

具体参见bufferTimeMax

播放过程中支持设置,设置后立即生效

2. 示例代码

_player.bufferTimeMax = 5;

3. 说明

  • bufferTimeMax设置为播放直播流时的最大缓冲时长

  • 该设置是在直播延时和卡顿之间的一个折中方案

  • 如果不进行缓冲或者缓冲特别小,当网络发生抖动时,直播会频繁的出现卡顿

  • 如果缓冲过大或者将所有数据全部缓冲,当直播服务器端缓冲的数据过多时在开播后不会进行追赶,导致直播延迟变高

  • 设置bufferTimeMax后,当缓冲时长小于设置的值时,不会进行任何操作,正常播放。当缓冲的时长超过设置的值时,将会丢弃旧的数据进行追赶,使直播的延时控制在bufferTimeMax的值之内

4. HLS延时说明

请见wiki,如果HLS播放时没有正确设置bufferTimeMax,将导致严重的观看卡顿

5. 建议

5.1 卡顿查询

直播过程中,需要开发者在播放器上层自己监控播放卡顿情况,如何获取卡顿信息请见wiki

5.2 卡顿处理

  • 延时扩大阈值

直播观看过程中,如果发现频繁的卡顿(此时观众网络环境比较差,或者下行带宽不足),建议适量扩大bufferTimeMax

可以设置一个阈值,在一定播放时间内,卡顿系数超过阈值则扩大bufferTimeMax

例如1分钟出现3次(含)以上,则将bufferTimeMax增加5秒。

  • 关闭延时追赶

如果出现严重的卡顿,则建议关闭延时追赶。此时需要设置一个卡顿率红线,超过红线则关闭追赶。

_player.bufferTimeMax = 0
Clone this wiki locally