<video poster="movie.jpg" controls> <source src="movie.mp4" type='video/mp4; codecs="avc1.4D401E,mp4a.40.2"'/> <p>This is fallback content</p> </video>
但是找不到正确的编解码器语句来播放视频,我已经下载了一个视频分析仪,可以看到它的avc1,并且可以看到音频map.40.2,但可以解决其余的编解码器,什么是4d401e在上面是什么意思?
干杯
托比
解决方法
在avc1.4D401E的情况下,avc1表示H.264视频,后面跟着一个点和三位由the H.264 standard定义的2位十六进制数字:
> profile_idc
>包含constraint_set标志的字节(当前的约束_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之类的程序转储这些字节。查找avcC(AVC配置)框和AVCProfileIndication,profile_compatibility和AVCLevelIndication的十六进制值。
对于mp4a.40.2,mp4a表示MPEG-4音频。后跟一个点和十六进制的ObjectTypeIndication(mp4file输出中的objectTypeId),可以在the MPEG4 registration site查找。如果这个十六进制值为40(ISO / IEC 14496-3音频),则后面是另一个点和一个音频对象类型为十进制。这些列在ISO / IEC 14496-3标准和Wikipedia中,并且对应于DecoderSpecificInfo(decSpecificInfo)的前5位(除非这些位等于31,在这种情况下将32加到接下来的6位)。 mp4a.40.2表示AAC LC音频,这通常与H.264 HTML5视频一起使用。
例如,编解码器=“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) ...