Autor Tema: El 'apasionante' mundo de la sincronía audio-vídeo  (Leído 370 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Crisco

  • Miembro nuevo
  • *
  • Desconectado Desconectado
  • Registrado: 07/12/2016
  • Mensajes: 13
  • Valoración: 0
¡Hola!

Soy nuevo en el foro, a cuya comunidad he llegado vía Google buscando soluciones a un problema que tengo y que, espero, podáis ayudarme a resolver.

Resulta que tengo un archivo de vídeo MKV con dos pistas de audio (inglés y español) y otras dos de subtítulos (también inglés y español). Al reproducir el vídeo, ambas pistas están perfectamente sincronizadas, por lo que, hasta ahí, ningún problema.

El conflicto se presenta cuando paso el MKV a XVID. Empleando MKVExtractGUI2, extraigo la pista de vídeo por un lado y la pista de audio en castellano por otro (el resto no me interesa). Recomprimo el vídeo utilizando la codificación XVID con VirtualDubMod y, cuando le agrego la pista de audio, que previamente he pasado a MP3, se va todo al garete, porque imagen y sonido quedan desincronizados. A priori no se trata de un problema al cambiar el formato del audio del AC3 original a MP3, dado que probé a agregarle el audio original directamente extraído del MKV, y se desincroniza igualmente. Destacar también que no he cambiado la tasa de frames del archivo original.

He probado con todas las soluciones del manual para sincronizar audio y vídeo que tenéis en vuestra web, y no ha habido manera de arreglarlo. Probé especialmente con la opción 'audio skew correction' del apartado 'Interleaving', de VirtualDubMod, pero no mejoraba en absoluto, literalmente: da igual que pusiera +3000 mseg que +10000 (el audio arranca antes de lo que debería hacerlo, por cierto), no hay ninguna diferencia. Lo más cerca que he estado de arreglarlo ha sido con la opción 'frame rate conversion', pasando de los 23,976 fps del vídeo original a 25,000, pero, aun así, el audio sigue sin cuadrar.

También probé recomprimir audio y vídeo en VirtualDubMod al mismo tiempo, pero nada. En fin, a ver si vosotros podéis darme alguna solución... Yo creo que si hubiera algún método efectivo para conocer la desincronía exacta, podría arreglármelas para solucionarlo, pero no conozco ningún método para calcularla (en plan, sabiendo que la desincronía es de 3459 mseg exactos, pues se le añade un silencio de esta duración al principio de la pista y solucionado).

Siento el parrafazo, pero quería ser detallado para no volveros locos. ¡Ayudadme!  :ayuda: :ayuda: Muchas gracias  :saludo:



tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 3.737
  • Valoración: 162
Bienvenido al foro Crisco.

El problema que cuentas puede tener 2 orígenes dependiendo de si es el vídeo o el audio del mkv el que no resiste la extracción.

1) El vídeo del mkv está a variable frame rate (VFR) y al recodificarlo lo has pasado a constante perdiendo la sincronía. Es típico de anime.

2) El vídeo es normal (CFR) pero para sincronizar el audio español han empleado métodos no adecuados. Si fuera esto la pista inglesa probablemente sincronizaría con el vídeo recomprimido.

No se si MKVExtractGUI2 tiene opciones para extraer los timecodes de las pistas, si no las tiene descargate y usa el paquete eac3to+UsEac3to de esta web.
Extrae los timecodes de las pistas de vídeo y audios, comprímelos y adjúntalos en el foro.

Ya las miraré a ver si puedo detectar el problema.
« Última modificación: 08 de Diciembre de 2016, 01:22 por tebasuna51 »

Crisco

  • Miembro nuevo
  • *
  • Desconectado Desconectado
  • Registrado: 07/12/2016
  • Mensajes: 13
  • Valoración: 0
Muchas gracias por tu respuesta, tebasuna51  :-) :-)

Sí, efectivamente, tal y como dices, la pista de audio en inglés sincroniza perfectamente con el vídeo (se me olvidó mencionarlo en el mensaje original). Voy a probar el eac3to+UsEac3to y, en cuanto tenga algo, lo subo  :arriba: :arriba:

Gracias de nuevo.

Crisco

  • Miembro nuevo
  • *
  • Desconectado Desconectado
  • Registrado: 07/12/2016
  • Mensajes: 13
  • Valoración: 0

No se si MKVExtractGUI2 tiene opciones para extraer los timecodes de las pistas, si no las tiene descargate y usa el paquete eac3to+UsEac3to de esta web.
Extrae los timecodes de las pistas de vídeo y audios, comprímelos y adjúntalos en el foro.


Aquí dejo los códigos de tiempo del vídeo y los dos audios, en un .zip. ¡Con lo que sea, me dices! ¡Muchas gracias!

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 3.737
  • Valoración: 162
Si no lo has hecho todavía hay que informar a UsEac3to de donde se encuentra MkvMerge en tu sistema.
En el menú 'Settings' -> 'Path to MkvMerge'
Si te sale 'The file already exist...' es que ya lo has hecho o que has instalado MkvToolNix en su carpeta por defecto.
Si no tienes que buscarlo en tu sistema para que UsEac3to sepa donde encontrarlo.
Solo hay que hacerlo la primera vez.

Y ya puedes hacer:

1) Arrastra y suelta el mkv en la ventana principal. Se mostrará un informe del mkv.

2) Pulsa 'MkvExtract/Mux' en la sección de 'Auxiliary Tools'. Aparecerá un nuevo informe del mkv y una ventana emergente.

3) En la nueva ventana selecciona 'Extract timecodes of track', como en la 'Select mkv track' ya aparecerá la primera pista, normalmente el vídeo, pulsa directamente 'EnQueue'

4) En 'Select mkv track' selecciona la segunda pista, normalmente el primer audio, y pulsa  'EnQueue'

5) En 'Select mkv track' selecciona la tercera pista, normalmente el segundo audio, y pulsa  'EnQueue'

6) Cierra la ventana emergente y en la ventana principal pulsa 'RUN Que.'

EDITO: parece que ya lo has resuelto, dejo la información por si lo has resuelto por otro método

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 3.737
  • Valoración: 162
Pues no lo entiendo, por los timecodes el audio español parece que solo necesita un delay inicial de 1300 ms.
Y le sobran 278 ms al final pero eso carece de importancia para la sincronia.

¿El mkv se reproduce en sincronía con el audio español?

Prueba con ese delay a ver.

Si hubieras extraido el ac3 con UsEac3to el problema se habría resuelto automáticamente.
Si has cargado el mkv en UsEac3to verás que detecta el delay iniicial y al extraerlo lo corrige.

Crisco

  • Miembro nuevo
  • *
  • Desconectado Desconectado
  • Registrado: 07/12/2016
  • Mensajes: 13
  • Valoración: 0
Pues nada, he probado a extraer el AC3 con UsEac3to, lo he cargado en el vídeo recomprimido en XVID y sigue desincronizándose. También he probado a aplicarle el delay que me comentas, y nada  :decabeza: :decabeza:

A lo que me preguntabas sobre si el MKV se reproduce sincronizado, sí; se reproduce sin problemas. Sólo se desincroniza al pasarlo a XVID.

Por cierto... Viendo los timecodes, ¿cómo has sacado que la desincronía serían 1300 ms? ¿Y lo de que le sobran al final 278?

¡Muchas gracias!

Crisco

  • Miembro nuevo
  • *
  • Desconectado Desconectado
  • Registrado: 07/12/2016
  • Mensajes: 13
  • Valoración: 0
Me he dado cuenta de que, en el cuadro principal donde UsEac3to te muestra la información del MKV cargado, al final de esta aparece el siguiente mensaje: "[v01] The video bitstream is encoded in a non-standard framerate.  <WARNING>". ¿Es posible que se deba a esto?

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 3.737
  • Valoración: 162
Por cierto... Viendo los timecodes, ¿cómo has sacado que la desincronía serían 1300 ms? ¿Y lo de que le sobran al final 278?
Fácil.
El timecode del audio:
Código: [Seleccionar]
# timecode format v2
1300
...
7580052
Lo que indica que debe empezar a reproducirse el milisegundo 1300 (delay), y acabar el milisegundo 7580052.

El timecode del vídeo:
Código: [Seleccionar]
# timecode format v2
0
...
7579774.708298
Debe empezar a reproducirse en el milisegundo 0, y acabar en el 7579774  (278 ms antes de que acabe el audio)

Realmente tengo un programita que analiza las estadísticas de los timecodes y del audio me indica:
Código: [Seleccionar]
Delay inicial: 1300
Frame: 0, Duracion max: 32
Frame: 0, Duracion min: 32
Duracion: 7580052 ms
Frames  : 236836
Fps mim : 31,25
Fps max : 31,25
Fps med : 31,25

Lo que significa que la reproducción debe ser natural, sin saltos, todas las frames con la duración natural de un AC3: 32 ms.

Y del vídeo:
Código: [Seleccionar]
Delay inicial: 0
Frame: 0, Duracion max: 42
Frame: 0, Duracion min: 42
Frame: 1, Duracion min: 41
Duracion: 7579774 ms
Frames  : 181733
Fps mim : 23,8095238095238
Fps max : 24,390243902439
Fps med : 23,9760446683503

Las diferencias solo son de redondeo al milisegundo de la duración natural de un vídeo 23.976 (41,708 ms) dando una fps media correcta.
Supongo que el vídeo XviD lo has codificado a 23.976 ¿No?

Me he dado cuenta de que, en el cuadro principal donde UsEac3to te muestra la información del MKV cargado, al final de esta aparece el siguiente mensaje: "[v01] The video bitstream is encoded in a non-standard framerate.  <WARNING>". ¿Es posible que se deba a esto?

No sé, me gustaría ver el log completo de la extracción del AC3 con UsEac3to.
« Última modificación: 08 de Diciembre de 2016, 20:31 por tebasuna51 »

Crisco

  • Miembro nuevo
  • *
  • Desconectado Desconectado
  • Registrado: 07/12/2016
  • Mensajes: 13
  • Valoración: 0
¡Ya conseguí arreglarlo! De hecho, fue bastante fácil: como me dijiste que UsEac3To corregía automáticamente el desfase al extraer la pista de audio, probé a sacarla del MKV y añadirla al XVID que había recomprimido. Estaba desincronizada, igualmente, pero me percaté de que, en realidad, había empleado la opción 'Extract selected tracks' del apartado Mkv Extract/Mux, por lo que, a efectos prácticos, lo había hecho a través de MkvToolNix. Sin embargo, al utilizar la opción 'demux' del apartado 'Global Parameters', sí que me extrajo la pista de audio con la desincronización corregida  :si: :si:

Te agradezco toda la ayuda porque, además de conseguir arreglar el archivo, me has descubierto el UsEac3To, que me parece bastante útil.

¡Muchas gracias!  :arriba: :arriba:
« Última modificación: 09 de Diciembre de 2016, 23:55 por Crisco »