一、直播延时
直播延时主要分为直播起播延时,直播内容延时。
直播起播延时:从发出指令,到显示画面,所消耗的时间。
直播内容延时:用户端播放的画面和现场画面的时间差。
本篇侧重介绍起播延时及其优化方法,后续系列文章将分为《直播内容延时和优化方式》、《直播起播延时和内容延时的平衡》两篇继续介绍内容延时及优化。
二、各类直播的起播延时
起播延时超过1s,用户能明显感觉到停顿,影响主观体验。
各种直播类型的起播延时见下:
三、各类直播起播延时的构成及优化
3.1 数字电视数字电视采用广播方式,所有直播内容均广播到终端,数字电视的I帧间隔通常为1s以内,数字电视的起播延迟主要由本地的处理延迟构成。
-
数字电视起播延时构成
(1) 换频点(调谐)、解调、同步TS流:100ms
(2) PSI表读取视音频PID: 1秒
(3) 解扰100~200ms
(4) 同步视频流,找I帧进行解码: 200ms~500ms
(5) 根据视频和音频的PTS显示
-
数字电视起播延时优化
(1) 机顶盒采用多高频头加快解调
(2) 机顶盒采用内存存储视音频PID
(为了不影响技术同仁阅读体验就不植入了,插个硬广:希望了解更多在线视频技术的同学请订阅观止云公众号,除了干货什么也没有)
IPTV采用组播方式,直播内容均组播到楼宇交换机,用户通过组播协议来获取直播内容。
-
IPTV起播延时构成
(1) EPG获取组播地址:几十毫秒级,可以忽略
(2) 获取1个I帧的时间:工程中编码器I帧间隔一般设为2-3秒,因此获得第1个I帧的平均时间为1-1.5秒
(3) 终端编码器重新初始化时间:由于其一般在几十毫秒级,且可以与接受I帧的同时进行,因此可以忽略
(4) 终端播放缓冲区设置:一般为1-2秒;
-
IPTV起播延时优化
(1) 换台时切换为点对点单播
(2) 媒体服务器将缓存数据加速填满客户端缓冲区
(3) 客户端播放单播数据,并同步开始获取组播数据
(4) 客户端比较单播和组播获取数据,进行单播和组播的平滑切换
OTT直播指采用OTT机顶盒通过互联网观看电视直播,网络电视直播指采用PC、移动端等通过互联网观看电视节目,多采用HLS协议分发,采用CDN加速。
-
OTT/网络电视直播延时构成
(1) DNS解析:一般几十毫秒
(2) TCP三次握手:一般2个RTT,几十毫秒到几百毫秒
(3) 客户端发送HTTP请求:几十毫秒
(4) 服务器发送数据给客户端,填满客户端的缓冲区:几百毫秒到几秒,取决于用户到服务器的带宽条件
(5) 根据视频和音频的PTS显示:时间可忽略
-
OTT/网络电视直播延时优化
(1) 将用户调度至正确的CDN边缘
(2) CDN边缘节点推至离用户更近
(3) 采用Keep-Alive方式获取TS切片
(4) 可多线程获取切片文件,加快文件获取速度
(5) 终端播放缓冲区大小合理设置
(都说重要的要来三遍,我们只来两遍:希望了解更多在线视频技术的同学请订阅观止云公众号,除了干货什么也没有)
互动直播,指主播直播,且同步和粉丝互动的新型直播形态,对比传统电视直播,加入了互动的元素,引入了观众参与。主播采用PC、手机端即时拍摄,用户采用PC、手机等即时观看,多采用RTMP或HTTP-Flv协议分发,采用CDN加速。
-
互动直播/移动直播延时构成
(1) DNS解析:一般几十毫秒
(2) TCP三次握手:一般2个RTT,几十毫秒
(3) 服务器准备数据:几十毫秒
(4) 缓冲视频获取数据:几百毫秒到几秒,取决于用户到服务器的带宽条件
(5) 终端解码视音频显示:时间可忽略
-
互动直播/移动直播延时优化
(1) 将用户调度至正确的CDN边缘直播服务器
(2) CDN边缘节点推至离用户更近
(3) 直播服务器支持Gop-cache,支持缓存直播点之前的媒体数据
(4) 终端可快速获取直播服务器缓存数据,填满缓冲区,开始播放
(5) 设置合理的缓冲区大小
限于篇幅,本篇介绍至此,后续系列文章将分为《直播内容延时和优化方式》、《直播起播延时和内容延时的平衡》两篇继续只聊延时,不谈人生。