diciembre 16, 2017, 11:23:11 pm

Sincronizacion de archivos de audio



Autor Tema: Sincronizacion de archivos de audio  (Leído 3093 veces)

guaper_16

  • Avanzado
  • **
  • Mensajes: 25
  • Puntos +1/-0
Sincronizacion de archivos de audio
« : noviembre 20, 2014, 09:15:55 pm »
Sincronizacion de archivos de audio

Muchas veces se encontraran con que descargan una pelicula pero tenemos solo 1 pista de audio que no necesitamos y queremos tambien la pista correspondiente a nuestro pais, ¿que hacemos? ¿por donde empezar? 

Es lo que les explicaré a continuacion, donde aprenderán como se lleva a cabo la edicion/sincronizacion en archivos de audio para agregar dichas pistas en alguna de las peliculas de las que disponemos en nuestro catalogo, sea en el formato que sea.

Requisitos

Para comenzar necesitaremos de los siguientes programas:
No necesariamente utilizaremos todos los programas de la lista, pero los tendremos para según el caso de desfase que nos presente el audio ya tenemos las heramientas para afrontarlo.

Presentamos las 2 peliculas, "vengadores BDremux" te presento a "vengadores esp latino", "vengadores esp latino" te presento a "vengadores bdremux"    ;D ;D ;D

Bien... ya habiendolas presentados  ;D ;D ;D vamos a lo siguiente.

Dividiré en secciones segun el caso en que nos encontremos

« Última Modificación: noviembre 20, 2014, 09:23:42 pm por guaper_16 »
ETIQUETAS: Foro, Juegos, PC, Ayuda, Soporte, CompucaliTV


guaper_16

  • Avanzado
  • **
  • Mensajes: 25
  • Puntos +1/-0
Re:Sincronizacion de archivos de audio
« Respuesta #1 : noviembre 20, 2014, 09:16:24 pm »
Caso I
Igual fps, asincronía constante


Verificando el tiempo de desfase

El AVI contiene el audio español latino y el mkv el español castellano, aqui deseo incluir el audio español latino del AVI dentro del MKV, abrimos cada una con mediainfo para ver unos detalles importantes, verificamos que tengan aproximademente la misma duracion (no tiene que ser exactamente la misma pero en este caso si lo es) y a que velocidad de cuadros (fps) se reproduce.

Vemos que tienen la misma duracion y se reproducen a la misma velocidad de FPS, por lo que ya no tendremos que recodificar el audio para hacer el cambio de velocidad.  :)

Ya conocemos lo primordial, ahora tenemos que calcular el desfase que hay entre una y otra pelicula y para ello cargaremos en ambas instancias cada pelicula en Virtualdubmod, con este podremos comparar la diferencia en frames que tiene una respecto a la otra.

La carga de un archivo AVI se realiza facilmente, solo es abrir virtualdubmod, nos dirigimos a File -> open video file... y cargamos nuestro AVI, si la película tiene el audio MP3 de bitrate variable (VBR), nos saldrá un aviso que nos dice si queremos tratar el audio de bitrate variable como si fuera constante. Le decimos que NO, ya que si lo hace entonces se desincronizará el audio, y eso no nos gustaría, aqui ya tenemos cargado el video AVI donde lo queremos, pero aun falta cargar el MKV, el detalle es que virtualdubmod no carga archivos mp4 ni MKV entonces tenemos que crear un script sencillito para su carga.

Nos aseguramos de instalar ffmpegsource2 en el directorio C:\Program Files\AviSynth 2.5\plugins (logicamente teniendo instalado avisynth), debemos tener presente ahí los archivos FFMS2.avsi, ffms2.dll y ffmsindex.exe, nos vamos a donde tenemos nuestro MKV y creamos un nuevo documento de texto con el bloc de notas, a continuacion escribimos lo siguiente:
Cita
ffvideosource("C:/Users/Ruta de tu pelicula/Los Vengadores [BDremux].mkv",fpsnum=24000, fpsden=1001)
Guardamos y manualmente cambiamos la extension .txt por .avs (debe cambiar de forma el icono), por fin tenemos nuestro archivo el cual cargaremos en virtualdubmod.

Abrimos en otra instancia virtualdubmod (sin cerrar la otra con el AVI abierto) y nos vamos a File -> open video file... y cargamos el archivo "Los vengadores.avs", este tardará un poco en aparecer ya que antes tiene que crear un indice para la localizacion exacta de frames.


Procedemos a hacer las comparaciones de frames, en el AVI movemos el "corredizo" localizado en la linea de tiempo y usamos las flechas direccionales de nuestro teclado, avanzamos hasta notar un cambio de escena que será nuestro punto de referencia, encontrado lo mismo hacemos pero con el mkv.

Vemos que casi en el comienzo tenemos una diferencia de 1 solo frame, mostrandose antes en el mkv.

Para verificar que el desfase es constante (no cambia a lo largo del tiempo) nos movemos mas o menos hacia la mitad de la pelicula y de igual manera buscamos donde haya un cambio de escena, encontrado ese será nuestro 2do punto de referencia, buscamos la misma escena en ambos ficheros.

Notamos que el desfase sigue siendo el mismo de 1 frame mostrandose antes el frame en el mkv.

Volvemos a verificar la diferencia en frames casi al termino de la pelicula para ver si no ha variado el desfase con respecto al tiempo.

Sigue siendo el mismo, entonces tenemos un desfase constante de 1 frame el cual corregiremos.

Tenemos 1 frame de desfase (delay) constante, pero el audio no se mide en frames si no en segundos o milisegundos, hay que pasarlo a éste, tomamos el valor de fps al que incluiremos la pista de audio (mi mkv está a 23.976 fps por lo que tomo este valor) y hacemos 1 frame / 23.976 frame por segundo = 0.0417 segundos, lo pasamos a milisegundos multiplicandolo por 1000 y redondeamos, nos queda un valor de 42 ms, como necesitamos atrasar el audio colocaremos un valor negativo al desfase, asi de sencillo calculamos el desfase en segundos que tenemos.



Aplicando el tiempo de desfase

Ahora hemos de extraer esa pista de audio en el AVI, solo nos vamos a la pestaña Stream -> stream list


Vemos las pistas de audio que contiene, en mi caso solo tiene la de español latino en ac3, presionamos boton derecho -> direct stream copy para que conserve el audio tal y como está en su formato original, pulsamos Demux para que comienze la extracción.


Teniendo nuestro archivo de audio... siempre y cuando sea en los formatos soportados por delaycut (AC3, WAV, DTS, mpa, mp3, mp2) se puede aplicar un delay positivo o negativo sin recodificacion, por lo que no hay perdidas de calidad.

Algo que debemos tener en cuenta al momento de la extraccion de la pista de audio del AVI es saber si esta tiene delay "basura" usado comumente en rips hechos con VDMOD, el cual se puede corregir haciendo lo siguiente Extracción audios de AVI compensando Delay interno.

Ahora abrimos delaycut, cargamos nuestro ac3 y marcamos lo siguiente

Con esto recorta 42 ms al comienzo para lograr que comienze antes la reproduccion y agrega un silencio al final de 42 ms para que siga teniendo la misma duracion (por que hemos marcado original length), pulsamos process y obtendremos nuestro ac3 con el delay corregido.



Creando el nuevo MKV

Solo nos falta cargar esta pista de audio a nuestro mkv, abrimos mkvmerge, cargamos nuestro mkv desde el boton "Añadir" y seguido a ello cargamos nuestra pista corregida desde el mismo boton

Procuremos mover la pista recien añadida a la 2da fila de la lista para que sea esta la 1era que tome el reproductor ya que algunos suelen ignorar el flag de pista predefinida asignado en la pista, mejor tomar precauciones :-D ahora pulsamos "Iniciar multiplexado" y ya tenemos nuestro mkv con audio añadido.
« Última Modificación: noviembre 20, 2014, 09:39:15 pm por guaper_16 »

guaper_16

  • Avanzado
  • **
  • Mensajes: 25
  • Puntos +1/-0
Re:Sincronizacion de archivos de audio
« Respuesta #2 : noviembre 20, 2014, 09:17:04 pm »
Caso II
Distintos fps, asincronía constante

Como mencioné anteriormente antes que nada hemos de ver que es lo que trae cada video. Mas que nada ver la velocidad de reproduccion y duracion del fillm. Si tenemos que el programa mediainfo se añadiera al shell de windows basta con posicionarnos sobre los videos que vamos a tratar y seleccionar mediainfo, aqui ya tengo las caracteristicas de ambos videos



Esta vez deseo agregar el audio latino del archivo .avi a un .mkv con mas calidad, vemos que el avi originalmente tenía una velocidad de 24 fps y fue modificado a 23.976 fps (desconozco el motivo, pero asi lo hicieron   :sospecha:), por tanto el audio ahora es mas largo que la duracion de la pista de video mkv, asi que nos quedan 2 caminos: modificar la duracion/velocidad de la pista de audio latino para que sea mas corta o modificar la velocidad de reproduccion del mkv a 23.976 fps para que ajuste perfectamente con la pista de audio latino.

Modificar la velocidad de reproduccion del mkv sería lo mas sencillo si solo quisiera conservar el audio latino, pero como el mkv lleva pista 2 pistas de audio y quiero conservarlas y agregarle una 3er pista (latino) no sería lo mas congruente, ya que las pistas que están en el mkv están perfectamente sincronizadas para un mkv que corre a 24 fps, si lo modificara a 23.976 fps tambien tendría que modificar la duracion de las pistas de audio que lleva, por tanto tendría que recodificar dichas pistas con la desventaja de hacer mas trabajo y tener perdida de calidad (cada recodificacion lleva perdidas).

Dicho lo anterior tomaré el camino 1, modificar la velocidad/duración de la pista de audio en latino haciendo una recodificacion (no me queda de otra).



Verificando el tiempo de desfase

Como expliqué anteriormente para el mkv hemos de crear un script avs que nos permita la carga en virtualdub, abrimos ambos videos en 2 instancias de VDUB y vamos anotando la cantidad de frames de diferencia que tienen uno del otro.







Vemos que es el mismo desfasamiento para los 3 puntos de comparacion, en mi caso el desfasamiento es de 1099 frames, ahora tengo que pasar ese desfasamientos a milisegundos, pues un audio se trabaja en tiempo, no en frames, entonces como el mkv corre a 24 fps hago 1099 frames/24 fps = 45.7916s*1000 = 45792 ms, esto indica que he de aplicar un simple retardo para corregir dicho desfasamiento, como los frames en el avi se mostraban antes solo he de aplicar un retardo positivo de +45972 ms para agregar 45972ms de silencio codificado y lograr adelantar la pista.



Corrigiendo el tiempo de desfase

Como recordarán las pistas vienen a distinto framerate por tanto hay que corregirlo, primeramente extraemos la pista de audio latino en VDMOD, nos vamos a stream - > stream list, seleccionamos la pista y boton derecho -> direct stream copy -> demux, ya tenemos nuestra pista, ahora con solo arrastrar y soltar la agregamos a UsEac3To, me ha aparecido este mensaje



Lo que solo indica que dicha pista contiene bytes 'basura' que hay que corregir por silencio codificado como se explica aqui Extracción audios de AVI compensando Delay interno.

Habiendo obtenido la pista corregida la cargamos nuevamente en UsEac3To y marcamos lo siguiente



Si la pelicula con la que trabajen tiene diferencias de fps entre 25 y 23.976 fps basta con marcar las opciones speedup o slowdown, segun lo necesiten, la opcion speedup pasa de un archivo de audio 23.976 fps a 25 fps y la opción slowdown hace lo contrario, yo lo tuve que especificar de ese modo pues ninguna de esas opciones incluye una modificacion de x-> 24 fps o de 24 fps -> x, he marcado de delay 50792ms, 5 segundos mas de los que había calculado ya que mi audio latino contenía 5 segundos de delay 'basura' que tuve que indicarselos manualmente. Tambien indiqué manualmente el bitrate del audio por que eac3to me arroja por defecto un audio de 448 kbps y yo necesitaba un audio con igual bitrate al original.

Y es todo, solo basta pulsar RUN CL y esperar que nos entregue la pista recodificada corregida, esta pista solo la agregan al mkv con mkvmerge y listo.

guaper_16

  • Avanzado
  • **
  • Mensajes: 25
  • Puntos +1/-0
Re:Sincronizacion de archivos de audio
« Respuesta #3 : noviembre 20, 2014, 09:17:34 pm »
Caso III
Igual fps, asincronía progresiva

Bueno compañero, si has llegado a este apartado es por que te tocó la malisima suerte de encontrarnos con una asincronía progresiva en la que en cada instante de tiempo es distinto el desfase, por lo que hemos de trabajarlo a tramos para lograr hacer un buen trabajo.

Veamos el caso (traten de haber entendido claramente el apartado "verificando el desfase" en el caso 1).

Esta ves me he bajado la pelicula BDRip MKV de "American pie la reunion" de una pagina española con audio castellano e ingles, deseo incluirle el español latino por lo que me he bajado un rip AVI XviD que lo contiene.

Observemos lo que trae cada video

Vemos que ambos corren a 23.976 fps por lo que no habremos de hacer un cambio de fps en el audio, la duracion en cada uno es distinta, si en mediainfo nos vamos a Depurar -> modo avanzado veremos la duracion exacta de cada video, siendo especificos el MKV dura 1 hora 52 minutos 52 segundos (1:52:52.854) y el AVI 1 hora 53 minutos 48 segundos (1:53:48.408).



Verificando el tiempo de desfase

De la misma manera que hicimos anteriormente cargamos ambos videos en VDMOD, para cargar el MKV recuerden hacerlo por medio de un script de avisynth (como carga pueden usar ffmpegsource2) y comenzamos a comparar la diferencia en frames entre uno y otro video la misma escena, usaremos solo 3 puntos de referencia inicio - medio - final como hicimos anteriormente.

1er referencia

El desfase es de 1 solo frame, mostrandose antes en el video MKV.

2da referencia

Esta ves tenemos 480 frames de desfase mostrandose igualmente antes en el MKV.

3er referencia

Aqui tenemos un desfase de 1509 frames mostrandose antes en el MKV.

Con esto concluimos que tenemos un desfase progresivo por lo que no se puede solucionar solo aplicando un retardo (delay) en la pista, entonces tenemos 2 opciones...

1. Igualar en tiempos ambas pistas y rogar a los angeles que la pista quede sincronizada con nuestro video.
2. Cargar en un editor de audio medio-avanzado que nos permita verficar la amplitud de las ondas e ir comparando que las amplitudes correspondan en los mismos instantes de tiempo a una pista que ya se encontraba perfectamente sincronizada.



Corrigiendo el tiempo de desfase


Como es logico primero tomamos el camino facil (opcion 1)

Opcion 1

Extraemos el AC3 contenido en el AVI cargandolo en VDMOD, nos vamos a stream - > stream list, seleccionamos la pista y boton derecho -> direct stream copy -> demux, lo he nombrado "audio bad", ya tenemos el AC3, ahora igualaré los tiempos de un audio sincronizado con este que intentamos sincronizar.

- Audio sincronizado (1:52:52.854 = 6772.854 segundos)
- Audio a arreglar (1:53:48.408 = 6828.408 segundos)

Con estos tiempos sacaremos el valor de porcentaje de diferencia con una ecuacionsita

(Tiempo a corregir / tiempo correcto) * 100

(6828.408 / 6772.854) * 100 = 100.8202

Este porcentaje lo introduciremos dentro de las opcione que nos ofrece behappy, cargamos el audio AC3 usando como decodificador NicAC3source, marcamos la casilla Time stretch y pulsamos el boton configure



Dentro de este marcamos Custom y colocamos el valor obtenido anteriormente y marcamos tempo changed pitch correction, con eso hace un cambio de tiempo sin cambiar el tono de las voces, pulsamos OK.

Ahora elegimos el codificador que usaremos, que seguirá siendo AC3, he seleccionado el codificador aften a un bitrate de 384 kbps, las demas opciones las dejé por defecto, al audio lo llame audio 5.1 fix, pulsamos el boton Enqueque para enviarlo a la cola de trabajo


En la pestaña queque no hacemos nada mas que pulsar start y esperar que termine la codificacion, con ello tendremos nuestro audio con una duracion identica al audio que ya estaba sincronizado.

Abrimos mkvmerge, añadimos el mkv y la pista de audio corregida e iniciamos el multiplexado, en la mayoría de los casos esto debiera ser suficiente para sincronizarlo pero en mi caso no ha quedado sincronizado, se sigue desfasando progresivamente por lo que me veo obligado a intentar otra opcion.

Opcion 2

Esta es la mas dificil de todas ya que al haber inentado la opcion 1 y no obtener el resultado esperado me da a entender que estoy tratando con versiones de la pelicla distintas, alguna de ellas tiene escenas de mas/menos por lo que habremos de corregirlas poco a poco, esta ves utilizaré audacity para mi "cometido".

Como no sé trabajar en audacity con pistas 5.1 para aplicar los efectos que haremos las pasaré a estereo 2.0 (si alguien sabe... la informacion es bienvenida), abrimos audacity, nos dirigimos a Archivo -> abrir y cargamos el audio sincronizado (lo llamé AP ingles 2.0.ac3), se nos muestra la forma de onda de cada canal , importamos el audio a sincronizar desde Archivo -> importar -> español 2.0, ya tenemos ambos audios cargados en el mismo proyecto, seleccionamos la herramienta lupa y hacemos zoom para ir viendo las diferencias entre un audio y otro poco a poco.


Comienzo a mover la barra de desplazamiento inferior hasta encontrar una onda en la que se amplifique el sonido en ambas pistas para que sea mi punto de referencia, a lo largo del trayecto fui encontrando varias amplitudes y el audio seguía sincronizado hasta que encontre esta diferencia

Coloco el punto de insercion unos segundos antes de donde se encuentra el desfase por que aun no se en donde se encuentre y presiono play, se escuchan ambas pistas a la vez (ingles y español) y noto que el desfase se comienza a hacer justo entre los tiempos 41m 50s y 43m 21s.

Entonces abro con WMP el video con audio latino y con MPC-HC abro el MKV con audio ingles y coloco el MKV cerca del rango de tiempos ya calculado, ahora intento que vayan acorde en reproducciones iguales ambos videos a ver en que momento tiene esa escena adicional

Hasta aqui van iguales.

Continúo con la reproduccion y...

Aqui ya se ha generado el desfase y justamente si era el momento que contenía una escena adicional ya que en una la muchacha si se acercaba a darle un beso y a seducirlo :-D y en la otra simplemente se saltaba esa parte.

Me voy a calcular el tiempo exacto de desfase (o el tiempo que dura la escena adicional, lo que se les haga mas sencillo), para calcularlo solo me baso en la amplitud de las ondas como ya les he mencionado, aqui busco un punto de referencia cercano a donde se generó el desfase, mas sencillo en donde haya un sonido fuerte y busco ese mismo sonido en la otra pista, calculo la diferencia entre ambas y ese es el tiempo que hay que recortar.

Verán que el tiempo de diferencia es de 16.3 segundos, es el tiempo que dura la escena adicional

Para calcular el momento exacto en que comienza esa escena adicional pongo a reproducir ambos videos al mismo tiempo y apunto el  momento justo en que encuentra esa diferencia de escena, en mi caso la he encontrado en el momento 42m 13.519s, a ese valor sumo 16.3 segundos entonces terminaría la seleccion en 42m 29.819 segundos


Este es el tiempo que hay que recortar, seleccionamos la pista y el fragmento y vamos a Editar -> eliminar audio -> cortar, nos hemos deshecho del trozo inecesario, continuamos buscando diferencias a lo largo de la pista y al final solo exportamos el audio desde archivo -> exportar

Espero sea entendible, cualquier duda pueden comentarloa aqui abajo

erikco88

  • Avanzado
  • **
  • Mensajes: 6
  • Puntos +0/-0
Re:Sincronizacion de archivos de audio
« Respuesta #4 : octubre 09, 2015, 05:57:48 pm »
lo voy a intentar con una pelicula que el audio esta algo retrasado aunque molesta, voy a probarlo.

 

¿Como convertir el audio de un video a otro formato?

Iniciado por wuorquer

Respuestas: 3
Vistas: 794
Último mensaje marzo 03, 2016, 07:35:05 pm
por alvarito
Seleccionar pista de audio y subtitulos en el reproductor VLC

Iniciado por willy2016

Respuestas: 2
Vistas: 1218
Último mensaje octubre 24, 2016, 08:24:54 pm
por interlina