该codecs
参数由RFC 6381指定。具体的含义和值请参见3.3 节。avc1
mp4a
在 的情况下avc1.4D401E
,表示 H.264 视频,后面是一个点和三个H.264 标准avc1
定义的 2 位十六进制数字:
profile_idc
constraint_set
包含标志的字节(当前constraint_set0_flag
通过constraint_set5_flag
, 和reserved_zero_2bits
)
level_idc
一些例子:
avc1.42E01E
: H.264 受限基线配置文件级别 3
avc1.4D401E
: H.264 Main Profile Level 3
avc1.64001E
: H.264 High Profile Level 3
这些也是 MP4 文件中序列参数集和 AVC 配置框的第二、第三和第四个字节。您可以使用诸如mp4file
:之类的程序转储这些字节mp4file --dump movie.mp4
。查找(AVC 配置)框和、和avcC
的十六进制值。AVCProfileIndication
profile_compatibility
AVCLevelIndication
至于mp4a.40.2
,mp4a
表示 MPEG-4 音频。它后面是一个点和一个十六进制ObjectTypeIndication
(objectTypeId
在输出中),可以在 MPEG4 注册站点mp4file
上查找。如果此十六进制值为(ISO/IEC 14496-3 Audio),则后面跟着另一个点和十进制的音频对象类型。这些列在 ISO/IEC 14496-3 标准和Wikipedia中,对应于( ) 的前 5 位(除非这些位等于 31,在这种情况下,将 32 添加到接下来的 6 位)。 表示 AAC LC 音频,通常用于 H.264 HTML5 视频。40
DecoderSpecificInfo
decSpecificInfo
mp4a.40.2
例如,codecs="avc1.42E01E, mp4a.40.2"
对于下面的电影是正确的:
$ mp4file --dump movie.mp4
...
type avcC (moov.trak.mdia.minf.stbl.stsd.avc1.avcC) ◀━━ avc1
configurationVersion = 1 (0x01)
AVCProfileIndication = 66 (0x42) ◀━━ 42
profile_compatibility = 224 (0xe0) ◀━━ E0
AVCLevelIndication = 30 (0x1e) ◀━━ 1E
...
type esds (moov.trak.mdia.minf.stbl.stsd.mp4a.esds) ◀━━ mp4a
version = 0 (0x00)
flags = 0 (0x000000)
ESID = 2 (0x0002)
streamDependenceFlag = 0 (0x0) <1 bits>
URLFlag = 0 (0x0) <1 bits>
OCRstreamFlag = 0 (0x0) <1 bits>
streamPriority = 0 (0x00) <5 bits>
decConfigDescr
objectTypeId = 64 (0x40) ◀━━ 40
streamType = 5 (0x05) <6 bits>
upStream = 0 (0x0) <1 bits>
reserved = 1 (0x1) <1 bits>
bufferSizeDB = 0 (0x000000) <24 bits>
maxBitrate = 78267 (0x000131bb)
avgBitrate = 78267 (0x000131bb)
decSpecificInfo
info = <2 bytes> 11 90 |..| ◀━━ 2 (first 5 bits in decimal)
...