要说在视频直播软件开发的过程中,什么是技术人员最头疼的?肯定有人会毫无疑问的回答:直播的卡顿和延时!没错,这两位可以说是直播中的“老朋友”了。毫不夸张的说,每一个直播平台都遇到过这两种问题。所以,今天我们就来聊一下设备端存在的延时是怎么个情况。
音视频数据在设备端产生的延时是可以进行细分的。设备端的延时主要是与编解码算法、音视频数据量和硬件性能相关的,并且设备端的延时可以达到30-200ms甚至更高。因此,音频和视频在采集端或者是播放端所产生延时的过程是基本一致的,但原因不同。
1. 音频在设备端的延时
(1)采集后的音频会先经过声卡进行信号转换,声卡的本身会产生延时。
(2)音频进入前处理和编码阶段后,如果采取标准编码,那么最低算法的延时就需要2.5-60ms。
(3)音频播放过程中出现延时,大多数与播放端的硬件性能相关。
(4)在前处理和后处理这些算法的过程中,都会带来算法延时。
(5)如果在抗丢包处理中,增加重传算法和前向纠错算法的话,延时一般会在20-200ms左右。但是如果受到了jitter buffer影响,可能会更高。
2.视频在设备端的延时
(1)一般视频在进行采集时都会遇到成像延时,主要是由CCD相关的硬件产生。目前市面上较好的CCD一秒可以达到50帧,延时约为20ms。
(2)用H.264举例的话,主要包含I、B、P帧。如果是每秒30帧相连帧,并且不包括B帧。因为B帧的解码,依赖于前后视频帧会增加一定的延时,所以采集到的一帧数据可能就会直接进入编码器。没有B帧时,编码的帧延时可以忽略不计。但如果有B帧,就会带来算法延时。
(3)在渲染情况下,一般延时比较,但是也会受到音画同步和系统性能的影响增大延时。
(4)与音频相同的是,视频也会遇到端网络延时的状况。
其实在设备端,CPU和缓冲都会同时处理来自多个应用和外接设备的请求。如果某个出现问题的设备请求占用了CPU,那么就会导致音视频的处理请求出现延时的情况。就拿音频来说吧,如果出现上述情况,CPU可能会没办法及时填充音频缓冲区,音频也会出现卡顿。
由此可见,在视频直播软件开发的过程中设备整体的性能,还是会给音视频的采集、编解码和播放造成一定影响从而产生延时的。所以,还需要在这方面多多注意。
本文声明原创,转载请注明出处。