El problema:
Hay un montón de archivos de video que solo se pueden reproducir con un reproductor personalizado y me gustaría realizar ingeniería inversa para que el video se pueda reproducir en reproductores multimedia comunes (como VLC o MPC).
Lo que he descubierto hasta ahora:
El sondeo de los archivos reveló que son del tipo EBML que utiliza elContenedores de medios Matroska.
Así que cambié la extensión del archivo a .mkv y examiné más a fondo el archivo conMKVToolNixyFFMPEG.
MKVToolNixEl sondeo reveló que había una pista de video codificada con h.264 y una pista de audio codificada con codificación AC3.
Pero la pista de audio había sido "marcada" como video y la pista de video como audio, cambiando deliberadamente la etiqueta "tipo de pista".
MKVToolNixcaptura de pantalla de la información de la pista:
- FFMPEGtambién confirma lo mismo:
[matroska,webm @ 0x7f966c800a00] No se pudo abrir el códec en avformat_find_stream_info
[h264 @ 0x7f966c811a00] El tipo de códec o la identificación no coinciden
[ac3 @ 0x7f966c812600] El tipo de códec o la identificación no coinciden[matroska,webm @ 0x7f966c800a00] No se pudieron encontrar los parámetros del códec para la transmisión 0 (Audio: h264 (alto), 0 canales): frecuencia de muestreo no especificada Considere aumentar el valor para las opciones 'analyzeduration' y 'probesize'
[matroska,webm @ 0x7f966c800a00] No se pudieron encontrar los parámetros del códec para la secuencia 1 (vídeo: ac3, ninguno, 192 kb/s): tamaño no especificado Considere aumentar el valor de las opciones 'analyzeduration' y 'probesize'
(redactado)
Duración: 01:46:42.00, inicio: 0.035000, bitrate: 2629 kb/s
... Stream #0:0(eng): Audio: h264 (Alto), 0 canales (predeterminado)Transmisión #0:1(eng): Vídeo: ac3, ninguno, 192 kb/s, 31,25 fps, 31,25 tbr, 1k tbn, 1k tbc (predeterminado)
Dudas:
¿Es posible editar el contenedor Matroska y cambiar la etiqueta "tipo de pista" de las pistas multimedia?
¿Es posible utilizarffmpeg¿Para especificar el códec de entrada correcto tanto para la pista de vídeo como para la de audio y extraerlos (preferiblemente sin volver a codificarlos)?
Respuesta1
No pude presentar ningún editor EBML o editor contenedor Matroska Media que me permitiera cambiar fácilmente los valores del "tipo de pista" en los archivos Matroska.
Así que todo fue necesario usar un editor hexadecimal para editar los archivos binarios directamente. Habría sido una tarea que llevaría mucho tiempo si no fuera por MKVToolNix. ElHerramienta de información MKVToolNix¡Ahora incluye la ingeniosa característica de especificar la posición de los datos (de una etiqueta) en un archivo Matroska!
De acuerdo a esto "Tipo de pista: audio" está ubicado en la posición 414 y "Tipo de pista: vídeo" se encuentra en la posición 532 del archivo Matroska.
Captura de pantalla de la vista de información MKVToolNix:
Después de abrir el archivo en el editor hexadecimal (versión de prueba de¡Sinalízalo! Propara macOS), simplemente busque los datos en la posición señalada por MKVToolNix Info. Captura de pantalla:
Encontramos que la posición 414 contiene los datos 83 81 02
(audio- para la etiqueta'Tipo de pista') y la posición 532 tiene los datos 83 81 01
(video- para la etiqueta'Tipo de pista'). Entonces sólo necesitamos intercambiar y reemplazar estos datos.