2023-07-04-ma-liu-ge-shi-annexb-avcch264-yuhvcch265-extradata
前言
介绍H.264结构的文章铺天盖地,无责任翻译、无责任转载以及部分经验之谈(目前搜索最靠前的一篇实际是对stackoverflow上答案的翻译。。链接后面给出了),所以缺的不是资料,是叙述准确的资料。来吧,看这篇整理就够了。
典型问题
iOS 硬解264视频(MP4),出现绿屏,或上半部分正常下半部分绿屏。
iOS 硬解265视频,同样也要解决的extradata处理问题。
参:iOS11 VideoToolbox硬解HEVC
首先来看两种格式:
Annex-B 和 AVCC/HVCC
H.264码流分Annex-B和AVCC两种格式。
H.265码流是Annex-B和HVCC格式。
(以下内容针对H.264,但大体也适用于H.265/HEVC)
别名
AVCC格式 也叫AVC1格式,MPEG-4格式,字节对齐,因此也叫Byte-Stream Format。用于mp4/flv/mkv, VideoToolbox。
Annex-B格式 也叫MPEG-2 transport stream format格式(ts格式), ElementaryStream格式。
Annex-B 附录B, 指ITU-T的 Recommendation(h.264和h.265)在附录B中规定码流格式。
结构上的区别:
区别有两点:一个是参数集(SPS, PPS)组织格式;一个是分隔。
- Annex-B:使用start code分隔NAL(start code为三字节或四字节,0x000001或0x00000001,一般是四字节);SPS和PPS按流的方式写在头部。
- AVCC:使用NALU长度(固定字节,通常为4字节)分隔NAL;在头部包含extradata(或sequence header)的结构体。(extradata包含分隔的字节数、SPS和PPS,具体结构见下)
Annex B
extradata
H.264/AVC extradata 语法
参考:《ISO/IEC 14496-15 NAL unit structured video》AVCDecoderConfigurationRecord
结构:(最小长度7字节)
说明:
FFmpeg中,extradata解析,见ff_h264_decode_extradata()
注意:
第5字节的最后2位,表示的就是NAL size的字节数。在AVCC格式中,每个NAL前面都会有NAL size字段。NAL size可能是1字节、2字节或4字节(4字节较常见),解析extradata重要目的就是确认这个值。(而Annex-B格式,要split NAL,只要去探测0x000001就可以了)
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgahhfk
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01