今天上网时偶尔发现这个在我脑海里疑惑的问题的答案。

H.264 Video Types

The following media subtypes are defined for H.264 video.

Subtype FOURCC Description
MEDIASUBTYPE_AVC1 'AVC1' H.264 bitstream without start codes.
MEDIASUBTYPE_H264 'H264' H.264 bitstream with start codes.
MEDIASUBTYPE_h264 'h264' Equivalent to MEDIASUBTYPE_H264, with a different FOURCC.
MEDIASUBTYPE_X264 'X264' Equivalent to MEDIASUBTYPE_H264, with a different FOURCC.
MEDIASUBTYPE_x264 'x264' Equivalent to MEDIASUBTYPE_H264, with a different FOURCC.

The main difference between these media types is the presence of startcodes in the bitstream. If the subtype is MEDIASUBTYPE_AVC1, thebitstream does not contain start codes.

H.264 Bitstream Without Start Codes

The MP4 container format stores H.264 data without start codes.Instead, each NALU is prefixed by a length field, which gives thelength of the NALU in bytes. The size of the length field can vary, butis typically 1, 2, or 4 bytes.

When start codes are not present in the bitstream, the following media type is used.

Major type MEDIATYPE_Video
Subtype MEDIASUBTYPE_AVC1
Format type FORMAT_MPEG2Video

The format block is an MPEG2VIDEOINFO structure. This structure should be filled in as follows:

  • hdr: A VIDEOINFOHEADER2 structure that describes the bitstream. No color table is present after the BITMAPINFOHEADER portion of the structure, and biClrUsed must be zero.
  • dwStartTimeCode: Not used. Set to zero.
  • cbSequenceHeader: The length of the dwSequenceHeader array in bytes.
  • dwProfile: Specifies the H.264 profile.
  • dwLevel: Specifies the H.264 level.
  • dwFlags: The number of bytes used for the length field that appears before each NALU. The length field indicates the size of the following NALU in bytes. For example, if dwFlags is 4, each NALU is preceded by a 4-byte length field. The valid values are 1, 2, and 4.
  • dwSequenceHeader: A byte array that may contain sequence parameter set (SPS) and picture parameter set (PPS) NALUs.

The MP4 container might contain sequence parameter sets (SPS) orpicture parameter sets (PPS) as special NAL units in file headers or ina separate stream (distinct from the video stream). When the format isestablished, the media type can specify SPS and PPS NAL units in the dwSequenceHeader array. If cbSequenceHeader is greater than zero, dwSequenceHeaderis the start of a byte array containing SPS and PPS NALUs, delimited by2-byte length fields, all in network byte order (big-endian). It ispossible to have both SPS and PPS, only one of these types, or none.The actual type of each NALU can be determined by examining thenal_unit_type field of the NALU itself.

When this media type is used, each media sample starts at thebeginning of a NALU, and NAL units do not span samples. This enablesthe decoder to recover from data corruption or dropped samples.

AVC1与H264的区别相关推荐

  1. AVC1和H264的区别及利用

    MP4的视频H264封装有2种格式:h264和avc1,对于这个细节,很容易被忽略.笔者也是在改编LIVE555流媒体时,增加mp4文件类型支持时遇到了该问题.(一)首先,从原理上了解一下这2种格式的 ...

  2. MP4文件两种格式AVC1和H264的区别及利用FFMPEG demux为h264码流事项

    原文:http://www.mworkbox.com/wp/work/314.html MP4的视频H264封装有2种格式:h264和avc1,对于这个细节,很容易被忽略.笔者也是在改编LIVE555 ...

  3. (转)MP4文件两种格式AVC1和H264的区别及利用FFMPEG demux为h264码流事项

    出自:http://www.mworkbox.com/wp/work/314.html 2013-05-04 MP4的视频H264封装有2种格式:h264和avc1,对于这个细节,很容易被忽略.笔者也 ...

  4. 技术贴:解码时AVC1和H264的区别

    我一直疑问为什么有些视频解码时显示格式是:H264,大部分又是:AVC1 我在搜索编程资料时在微软的msdn上发现的: 原文:http://msdn.microsoft.com/en-us/libra ...

  5. H264/AVC视频解码时AVC1和H264的区别

    The following media subtypes are defined for H.264 video.

  6. H.264 x264 h264 AVC1的关系和区别

    H.264是MPEG4的第十部分,是一个标准. 对头,国际上两个视频专家组(VCEG和MPEG)合作提出的标准,两个专家组各有各的叫法,所以既叫H.264,也叫AVC. x264是一个编码器,他参照的 ...

  7. AVC1与H264的差别

    今天上网时偶尔发现这个在我脑海里疑惑的问题的答案. H.264 Video Types The following media subtypes are defined for H.264 video ...

  8. 技术贴:解码时AVC1和H264的差别

    我一直疑问为什么有些视频解码时显示格式是:H264,大部分又是:AVC1 我在搜索编程资料时在微软的msdn上发现的: 原文:http://msdn.microsoft.com/en-us/libra ...

  9. FFmpeg的H.264解码器源代码简单分析:解码器主干部分

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

最新文章

  1. Flask 启动配置
  2. 数据中心未来会被以太网交换器商用IC占领吗?
  3. 绿盟科技网络安全威胁周报2017.17 请关注Squirrelmail 远程代码执行漏洞CVE-2017-7692...
  4. win10系统 计算机配置要求高吗,win10配置要求_win10配置要求高吗-太平洋电脑网
  5. c修改datatable单元格的值_神奇的VBA编程:批量拆分单元格数据
  6. okex java sdk_OKEX官网新手使用教程
  7. 支付宝 PEM routines:PEM_read_bio:no start line
  8. android自定义dialog 例子,android dialog自定义实例详解
  9. 广度优先搜索(BFS)——抓住那头牛(POJ 4001)
  10. TensorFlow-JS教程 一、Node.js 设置
  11. Linux下批量添加用户
  12. 程序员该如何转型 5G 开发?
  13. 各种数据库的分页查询
  14. LaTex 数学之括号
  15. D630,vista sp2,4GB Turbo Memory,ITMService.exe(SmartPinService),Posses lots of CPU Resources
  16. 树莓派Android Things物联网开发:已知Bug发行说明
  17. PHP几大框架的优点与缺点
  18. Yoshua Bengio——《Deep Learning》学习笔记1
  19. css实现六边形及其它灵活布局
  20. 使用 YAML 保存游戏数据 !

热门文章

  1. centos防火墙问题
  2. 对比JDBC,用MyBatis的好处及常见问题
  3. linux查看mysql用户权限_教您如何查看MySQL用户权限
  4. mysql查看用户名表_在Mysql中如何显示所有用户?
  5. 伍鸣: 公链才能承载NFT和数字藏品价值!
  6. macOS 13 Ventura后,打开软件显示“XXapp已损坏,无法打开”如何解决?
  7. 儒豹牛年元月手机搜索关键词
  8. Android第二十五课 native程序异常crash 定位
  9. Elasticsearch 6.6 官方文档 之「集群」
  10. [ 攻防演练演示篇 ] 利用谷歌 0day 漏洞上线靶机