atributo de códec de etiqueta de video html5

Estoy tratando de especificar un códec de video / audio específico en la etiqueta de video usando

 

pero no puedo encontrar la statement correcta de los codecs para reproducir el video, he descargado un analizador de video y puedo ver que es un avc1 y puedo ver que el mapa de audio es 40.2 pero puedo descifrar el rest del códec, ¿qué hace el 4d401e? significa en lo de arriba?

Saludos a Toby

El parámetro codecs está especificado por RFC 6381 . Específicamente, ver la sección 3.3 para el significado de los valores avc1 y mp4a .

En el caso de avc1.4D401E , avc1 indica video H.264, seguido de un punto y tres números hexadecimales de 2 dígitos definidos por el estándar H.264 :

  1. profile_idc
  2. el byte que contiene los indicadores constraint_set (actualmente constraint_set0_flag través de constraint_set5_flag , y los reserved_zero_2bits )
  3. level_idc

Algunos ejemplos:

  • avc1.42E01E : perfil de referencia avc1.42E01E H.264 nivel 3
  • avc1.4D401E : nivel 3 del perfil principal H.264
  • avc1.64001E : nivel de alto perfil H.264 3

Estos son también los bytes segundo, tercero y cuarto del conjunto de parámetros de secuencia y el cuadro de configuración de AVC en un archivo MP4. Puede volcar estos bytes usando un progtwig como mp4file : mp4file --dump movie.mp4 . Busque el avcC (Configuración AVC) y los valores hexadecimales para AVCProfileIndication , AVCLevelIndication y AVCLevelIndication .

En cuanto a mp4a.40.2 , mp4a indica audio MPEG-4. Le siguen un punto y un ObjectTypeIndication hexadecimal ( objectTypeId en la salida mp4file ), que se pueden buscar en el sitio de registro MPEG4 . Si este valor hexadecimal es 40 (audio ISO / IEC 14496-3), va seguido de otro punto y un tipo de objeto de audio en decimal. Estos se enumeran en el estándar ISO / IEC 14496-3 y en Wikipedia , y corresponden a los primeros 5 bits de DecoderSpecificInfo ( decSpecificInfo ) (a menos que estos bits sean iguales a 31, en cuyo caso se sumn 32 a los siguientes 6 bits). mp4a.40.2 indica audio AAC LC, que es lo que generalmente se usa con video HTML5 H.264.

Por ejemplo, codecs="avc1.42E01E, mp4a.40.2" sería correcto para la película siguiente:

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

mark4o da por mucho la mejor explicación que he visto de cómo descifrar la información del códec. Excelente.

Una pieza que puede requerir un poco más de detalle es cómo dividir el tipo de objeto de audio específico del valor decSpecificInfo. Encontrar la parte “mp4a.40” es muy clara, la sección “.2” puede ser un poco complicada.

Comenzamos con una secuencia de valores hexadecimales de un solo byte: “11 90” en el ejemplo de mark4o o “12 08” en mi caso. Ambos son un total de 2 bytes … puede haber más valores, pero solo los primeros 2 importan para encontrar el tipo de objeto (y generalmente solo el primer byte). Estamos buscando bits individuales así que convierta cada dígito en los valores hexadecimales en binarios; debe haber 4 dígitos binarios para cada dígito hexadecimal. Tome los primeros 5 dígitos binarios – 4 del primer dígito hexadecimal, 1 del siguiente – y convierta ese valor binario a decimal. Estos son los pasos:

 Example 1 (11 90): Starting value: 11 90 Separate the hex digits: 1 1 9 0 Convert each digit to binary: 0001 0001 1001 0000 Take the first 5 bits: 0001 0 Combine into binary value: 00010 Convert to decimal: 2 Example 2 (12 08): Starting value: 12 08 Separate the hex digits: 1 2 0 8 Convert each digit to binary: 0001 0010 0000 1000 Take the first 5 bits: 0001 0 Combine into binary value: 00010 Convert to decimal: 2 

Son del mismo tipo de objeto a pesar de tener diferentes valores decSpecificInfo.

Puede usar la herramienta MP4Box para encontrar cadenas de códec en formato RFC6381. Todavía tienes que unirlos con comas.

Puedes usar este comando:

MP4Box -info big.mp4 2>&1 | grep RFC6381 | awk '{print $4}' | paste -sd , -