html5 video tag codecs attribute

后端 未结 3 1787
时光说笑
时光说笑 2020-11-29 16:57

I am trying to specify a specific video/audio codec in the video tag using

3条回答
  •  眼角桃花
    2020-11-29 17:37

    The codecs parameter is specified by RFC 6381. Specifically, see section 3.3 for the meaning of avc1 and mp4a values.

    In the case of avc1.4D401E, avc1 indicates H.264 video, and this is followed by a dot and three 2-digit hexadecimal numbers defined by the H.264 standard:

    1. profile_idc
    2. the byte containing the constraint_set flags (currently constraint_set0_flag through constraint_set5_flag, and the reserved_zero_2bits)
    3. level_idc

    Some examples:

    • avc1.42E01E: H.264 Constrained Baseline Profile Level 3
    • avc1.4D401E: H.264 Main Profile Level 3
    • avc1.64001E: H.264 High Profile Level 3

    These are also the second, third, and fourth bytes of the Sequence Parameter Set and the AVC Configuration Box in an MP4 file. You can dump these bytes using a program such as mp4file: mp4file --dump movie.mp4. Look for the avcC (AVC Configuration) Box and the hexadecimal values for AVCProfileIndication, profile_compatibility, and AVCLevelIndication.

    As for mp4a.40.2, mp4a indicates MPEG-4 audio. It is followed by a dot and a hexadecimal ObjectTypeIndication (objectTypeId in mp4file output), which can be looked up on the MPEG4 registration site. If this hexadecimal value is 40 (ISO/IEC 14496-3 Audio), it is followed by another dot and an audio object type in decimal. These are listed in the ISO/IEC 14496-3 standard and on Wikipedia, and correspond to the first 5 bits of the DecoderSpecificInfo (decSpecificInfo) (unless these bits equal 31, in which case add 32 to the next 6 bits). mp4a.40.2 indicates AAC LC audio, which is what is usually used with H.264 HTML5 video.

    For example, codecs="avc1.42E01E, mp4a.40.2" would be correct for the movie below:

    $ 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)
    ...
    

提交回复
热议问题