拜伦的博客

Coder Byron

这里有关于iOS,机器学习的笔记心得,欢迎交流


音视频基础知识

目录

码率:

也叫比特率, Bits per second 每秒传输的数据量。 可以理解成吞吐量或带宽。 目的是用最低的比特率达到最少的失真

###帧率: Frames per second 每秒显示帧数。

常见编码标准:

MPEG-4, 其中第10部分提出新的视频编码方案,即与另一个组织共同开发的H.264。第三部分提出AAC音频编码方案,旨在替代MP3。 第14部分提出MP4封装格式包括音频编码方案和视频编码方案。

H.264:

定义了三种帧,I帧 P帧 B帧 1)I 帧:I帧即帧内编码帧、关键帧,可以理解为一帧画面的完整保留,解码时只需要本帧数据就可以完成,不需要参考其他画面,数据量比较大; 2)P 帧:P帧即前向预测编码帧,记录当前帧跟上一关键帧(或P帧)的差别,解码时依赖之前缓存的画面,叠加上本帧定义的差别,才能生成最终画面,数据量较 I 帧小很多; 3)B 帧:B帧即双向预测编码帧,记录当前帧跟前后帧的差别,解码时依赖前面的I帧(或P帧)和后面的P帧,数据量比I帧和P帧小很多。 直播场景中一般不适用B帧,因为受到一个B帧后还要等待之后的P帧才能解码,会有滞后性。

编码计算复杂度是H.263的3倍, 解码复杂度是H.263的2倍。但是相同视频 质量,可以比H.263节省50%码率

H.265:

High Efficiency Video Coding 简称HEVC。 与H.264类似,包含帧内预测,帧间预测,转化,量化,滤波,熵编码等。 在H.264基础上使用先进技术用以改善码流,编码质量,延时和算法复杂度之间的关系。 在码率减少51-74%情况下,265的视频质量与264近似甚至更好。 iOS11开始原生支持HEVC H.265

GOP:

Group of Pictures 一组连续的画面,由一张I帧和多张B/P帧组成,是视频编解码存取的基本单位。GOP组的长度格式也决定了码流的大小,形容一个I帧到下一个I帧之间间隔多少帧,增大GOP能有效减少编码后视频体积,但也会降低视频质量。

IDR帧:

一个序列的首个I帧叫做IDR帧,IDR帧都是I帧. 引入目的是为了解码的重同步,如果前序列出现重大错误,这里可以获得重新同步机会。 当解码到IDR帧时,会立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始新序列。

NAL:

Network abstract layer 网络抽象层

SPS:

Sequence Parameter Set ,序列参数集,保存了一组编码视频序列的全局参数,一般SPS 和PPS在整个码流的起始位置,特殊情况下也可能在中间出现,例如中间需要重新解码,或者参数信息发生编发例如屏幕宽高比变化。

PPS:

Picture Parameter Set 图形参数集,类似于SPS, 在码流里单独保存在一个NAL Unit中,保存在视频文件的文件头中。

DTS

Decoding Time Stamp 解码时间戳,表示送入解码器的顺序

PTS

Presentation Time Stamp 显示时间戳,表示解码后的帧显示时间 在没有B帧情况下,DTS和PTS输出顺序一致。 因为B帧需要依赖后续的帧,所以B帧解码要在后续P帧之后,但是显示又在后续P帧之前

音视频同步:

音频没有类似视频中的B帧,所以音频帧的DTS 和PTS顺序是一致的。 通常需要选择一个参考时钟,参考时间的时间是线性递增的,编码音视频流时一句参考时钟上的时间给每个数据打上时间戳,播放时读取数据帧上的时间戳,同时参考PTS安排播放。

视频传输协议优化:

  1. 服务端节点之间尽量使用RTMP,降低整体传输延迟
  2. 如果终端使用RTMP播放,应该在尽量靠近收流节点进行转码,这样传输的视频流从一开始就是最优大小
  3. 如有必要,使用定制的UDP协议替换TCP协议,省去弱网环境下的丢包重传。

视频传输网络优化:

  1. 在服务端节点中缓存GOP,配合播放器端的首开优化
  2. 服务端实时记录每个视频流在每个环节的帧率和码率,检测波动
  3. 客户端通过查询服务端准实时获取当前最优节点(5秒一次), 准实时下线当前故障节点和线路

推流、播放优化:

  1. 考察发送端系统的网络buffer大小
  2. 播放端的缓存对首开延迟也有较大影响,甚至可以在0缓存的情况下,将第一帧数据直接解码显示。但是如果弱网状态下,需要考虑网络波动造成的卡顿,还是需要增加一定的缓存。
  3. 可以使用动态缓存策略,参考第一帧的下载耗时决定后续播放过程中的缓存大小。
  4. 动态码率,在增加缓存依然无法满足当前码率的情况下,采用动态码率,减少延迟,当网络有所改善后,再动态增加码率。
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦