音视频面试题集锦第 1 期
转自:https://gjzkeyframe.github.io/posts/av-interview-qa-1/
下面是音视频面试题集锦第 1 期:
1)RTMP 消息分优先级的设计有什么好处?
RTMP 的消息优先级是:控制消息 > 音频消息 > 视频消息。当网络传输能力受限时,优先传输高优先级消息的数据。
要使优先级能够有效执行,分块也很关键:将大消息切割成小块,可以避免大的低优先级的消息(如视频消息)堵塞了发送缓冲从而阻塞了小的高优先级的消息(如音频消息或控制消息)。
2)什么是 DTS 和 PTS?它们有什么区别?
DTS 是解码时间戳;PTS 是显示时间戳。
虽然 DTS、PTS 是用于指导播放端的行为,但它们是在编码的时候由编码器生成的。
当视频流中没有 B 帧时,通常 DTS 和 PTS 的顺序是一致的。但如果有 B 帧时,就回到了我们前面说的问题:解码顺序和播放顺序不一致了。DTS 告诉我们该按什么顺序解码这几帧图像,PTS 告诉我们该按什么顺序显示这几帧图像。
3)什么是 IDR 帧?它和 I 帧有什么区别?
IDR 帧全称叫做 Instantaneous Decoder Refresh,是 I 帧的一种。IDR 帧的作用是立刻刷新,重新算一个新的序列开始编码,使错误不致传播。
IDR 帧有如下特性:
- IDR 帧一定是 I 帧,严格来说 I 帧不一定是 IDR 帧(但一般 I 帧就是 IDR 帧);
- 对于 IDR 帧来说,在 IDR 帧之后的所有帧都不能引用任何 IDR 帧之前的帧的内容。与此相反,对于普通的 I 帧来说,位于其之后的 B 和 P 帧可以引用位于普通 I 帧之前的 I 帧(普通 I 帧有被跨帧参考的可能);
- 播放器永远可以从一个 IDR 帧播放,因为在它之后没有任何帧引用之前的帧。因此,视频开头的 I 帧一定是 IDR 帧;一个封闭类 GOP 的开头的 I 帧也一定是 IDR 帧。
所以,在直播场景通常每个 I 帧都是 IDR 帧,这样服务端下发流数据的时候总是从一个 I 帧开始,播放器就可以立即开始播放。
4)什么是 SPS 和 PPS?它们有什么区别?
SPS,Sequence Paramater Set,保存了一组编码后的图像序列所依赖的全局参数。
PPS,Picture Paramater Set,保存了每一帧编码后的图像所依赖的参数。
SPS 中的信息至关重要,如果其中的数据丢失,解码过程就可能失败。SPS 和 PPS 通常作为解码器的初始化参数。一般情况,SPS 和 PPS 所在的 NAL 单元位于整个码流的起始位置,但是在某些场景下,在码率中间也可能出现这两种结构:
- 解码器要在码流中间开始解码。比如,直播流。
- 编码器在编码过程中改变了码率的参数。比如,图像的分辨率。
5)什么是 SEI?我们可以用它来做什么?
...
全文链接:点击看全文

浙公网安备 33010602011771号