格式

  • Annex-B
  • AVCC(H.264) 和 HVCC

Annex-B

Annex-B格式 也叫MPEG-2 transport stream format格式(ts格式), ElementaryStream格式。

AVCC(H.264)

AVCC格式 也叫AVC1格式,MPEG-4格式,字节对齐,因此也叫Byte-Stream Format。用于mp4/flv/mkv, VideoToolbox。

结构

结构主要有两点区别:

  1. SPS和PPS的组织格式
  2. 数据分隔方式不同

Annex-B -结构

  1. SPS和PPS按照流的方式写在头部,一般位于IDR帧之前的位置
  2. 采用start code分隔NAL(start code为三字节或四字节,0x000001或0x00000001,一般是四字节);

AVCC -结构

  1. 在头部包含或则固定的位置包含SPS PPS等信息,如flv是在第一个视频tag的avc_decoder_configuration_record中包含
  2. 使用NAL的长度(固定为4字节)分隔NAL

Why?

统一的格式不香吗?为啥要搞几种?
原因在于媒体可分为本地文件和直播流

  • 如果是本地文件,则我们只需要读取一次SPS,PPS的信息,然后就可以一直进行解码了,所以将SPS PPS等信息放到文件的头部,打开文件,先读取这些信息初始化解码器,然后就可以顺利的解码了;其次本地文件不存在丢包或则中途进入一说,所有按照格式读取的话肯定能读取到NAL头的长度,所以像FLV,MP4,MKV这些常用的本地存储方式都用的AVCC封装。
  • 如果是直播流,那我们如果放到头部的话,中途播放的用户是无法接收到SPS PPS信息,无法初始化解码器,所以必须每隔一段时间发送一次SPS PPS等信息,一般是放在IDR帧之前进行发送,所以如mpeg-ts 这种常用的直播流就是使用Annex-B结构

mpeg-ts

Annex-B和AVCC

Annex-B和AVCC

flv

Annex-B和AVCC

相关文章:

  • 2022-02-26
  • 2021-09-21
  • 2021-08-05
  • 2021-08-24
  • 2022-12-23
  • 2021-12-07
  • 2021-08-25
  • 2021-11-18
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案