MPEG-4格式和H.264(ISO14496)入门--Appl

2020-06-27  本文已影响0人  applecai

怎么说我也算是做协议开发的,14229,15765是我的专业内容。但是关于解码和文件格式一般都是有协议的,网上搜索了下spec名称为ISO14496,有一系列的白皮书呢!

快速入门了下MPEG4标准中的文件格式,box是一个主要概念。网上有ISO协议下载,也有现成的解析分析工具。我了解一个大概,比如moov box只有一个,包括了音频和视频的总信息。trak box至少有一个,一般为2个,一个为音频一个为视频信息。utda box保存的是帧的数据。

image.png

一,MPEG-4媒体文件主要信息

  1. MPEG-4标准为ISO14496系列,MP4格式在-12文件中可以看到。
  2. offset
    moov box中记录的每帧音视频数据位置信息,实际上都在mdat box中,通过解析moov box来获取到每帧音视频数据具体位置后,使得播放器能方便的拖拉进度条。
  3. DTS和PTS
    avcC box指定了该流的编码类型为H264
    stsc stsz stco三个box用于保存每帧视频或音频数据在文件中的保存位置。
    stts stss ctts三个box用于保存媒体数据和时间戳的对应关系。
  4. IPB帧的概念
    I帧表示关键帧,P帧为向前引用,B帧为双向(前后)引用。

二,MPEG-4媒体文件参考网址

1.MPEG-4标准
2.mp4文件格式解析
3.MP4格式解析二 ftyp/mvhd
4.mp4封装格式各box类型讲解及IBP帧计算
5.MP4格式分析之我见
6.IBP帧的定义

三,H.264协议

其实就是14496-10。H264功能分为两层,VCL(视频编码层)和 NAL(网络提取层)
SODB 数据比特串 ---->最原始的编码数据,即VCL数据
RBSP  原始字节序列载荷
EBSP  扩展字节序列载荷 (会填充0x30)


image.png

H264的码流分6层,其中宏块和IPB相关
1帧 = 1个或n个片
1片 = n个宏块
1宏块 = 16x16yuv数据


image.png

宏块结构


image.png

mb_type 确定该 MB 是帧内或帧间(P 或 B)编码模式,确定该 MB 分割的尺寸,mb_pred 确定帧内预测模式


image.png

解码顺序,由于B依赖前后帧,所以要先把后面的P帧先解码。若是网络直播,一般B帧出现的比较少,需要保证实时性。

运动补偿,帧内预测,残差补偿等算法还不太清楚,之后慢慢了解,慢慢看paper。今天先入门。

四,H.264解码工具

H.264 Visa 和StreamEye我都用了下。

五,参考网址

如何学习H264协议
H264基础简介
H264格式 详细介绍

上一篇下一篇

猜你喜欢

热点阅读