Descarga Gratis ya!

30 may 2007

Sincronizar audio y vídeo en archivos AVI

Sincronizar audio y vídeo en archivos AVI: en este manual veremos la forma de solucionar el problema de que el vídeo y el audio no se reproducen a la vez en archivos AVI. En él se incluyen los pasos para solucionar distintos tipos de desincronizaciones, ya sean de tiempo constante, variable, o una mezcla de las dos.

Sincronización de audio y vídeo en archivos AVI

Se pueden dar tres tipos de desincronización distintos. El primero es una desincronización constante en el tiempo: esto quiere decir que el audio estará atrasado o adelantado el mismo tiempo a lo largo de todo el vídeo. El segundo es una desincronización progresiva, es decir, cuando el tiempo entre audio y vídeo va aumentando a medida que avanza el vídeo. Y el último tipo, desincronizacion total, viene a ser una mezcla de los otros dos, o sea que el audio está en efecto desfasado en tiempo con el vídeo, pero a su vez ese desfase varia a lo largo de la película. Este último es el más complicado de solucionar, a veces sin éxito o mediante un método de fraccionamiento del vídeo en pequeñas partes que lo hace muy poco recomendable.

El programa que necesitaremos es el VirtualDubMod, que podemos encontrar aquí:

Descargar VirtualDubMod

La imagen de la derecha trata de ilustrar los diferentes tipos de desincronización a los que nos podemos enfrentar.

Sincronización

Detectando el tipo de desincronización

Se procede a cargar el vídeo en el VirtualDubMod, para ello ir a File -> Open video file. En el caso de tener audio VBR (bitrate variable) aparecerá un mensaje advirtiéndolo, donde deberemos elegir si pensamos extraer el audio a un archivo WAV descomprimido, o elegir No si lo pensamos extraer en su formato original (por ejemplo MP3), que será lo habitual (por tanto normalmente elegiremos No).

VirtualDubMod

Una vez cargado el vídeo, vamos a File -> File Information, y comparamos la duración del audio con la del vídeo, como se ve en la imagen. Si no existe diferencia notable (en este caso por ejemplo es despreciable) entonces se puede suponer que la desincronización es constante.

VirtualDubMod

Vale aclarar que este método no es 100% fiable, y siempre es mejor reproducir el vídeo para asegurarse de reconocer el tipo de desincronización.

Solucionando la desincronización

En función del tipo de desincronización que hayamos detectado, seguiremos unos pasos u otros.

Desincronizacion progresiva (método 1)

Como se comentó antes, se produce cuando audio y vídeo tienen diferente duración. En este caso se apela a un ajuste del framerate del vídeo para corregir la diferencia de tiempos. Como este ajuste es despreciable (a no ser que la diferencia sea muy grande) no suele presentar problemas de compatibilidad.

Previamente a este ajuste es necesario separar audio y vídeo, para ello vamos a Streams -> Stream list -> Demux (para guardarlo en el formato original, lo habitual) o Save WAV (si lo queremos pasar a un archivo WAV descomprimido), dependiendo del uso que se le dará y del formato en que se encuentre, y guardamos el archivo de audio. Luego deshabilitamos esta pista con Disable y hacemos clic en OK. Sólo falta ir al menú Video y seleccionar Direct stream copy. Finalmente guardamos el vídeo en File -> Save As...

Ahora sí, abrimos el vídeo sin audio que acabamos de crear y le agregamos el audio recién extraído yendo a Streams -> Stream list y usando Add. También seleccionamos Direct stream copy para este audio. Y ahora es el turno de la sincronización: para acceder a la herramienta vamos al menú Video -> Frame Rate. Como se puede ver en la imagen hay que seleccionar Change so video and audio durations match, y el valor entre paréntesis muestra el nuevo valor de framerate que tendrá el vídeo. Finalmente hay que guardar el archivo.

VirtualDubMod

Desincronizacion progresiva (método 2)

Existe otro método que evita la modificación del framerate del vídeo, modificando en su lugar el audio, logrando así el mismo resultado que es modificar su duración. En primer lugar hay que ir a File -> File Information y apuntar la duración del vídeo, la del audio, y el framerate del vídeo. A continuacion habrá que hacer algunos cálculos, nada muy complicado. Lo mejor como siempre es ilustrarlo con un ejemplo:

  • Supongamos que el vídeo dura 2:12:41.40, el audio 2:12:35.64 y el framerate del vídeo es 25 fps.
  • Pasamos las duraciones a segundos:
    2:12:41.40 = 2*3600 + 12*60 + 41 + 0.40 = 7961.40 (A)
    2:12:35.64 = 2*3600 + 12*60 + 35 + 0.64 = 7955.64 (B)
  • Framerate del audio = (A / B) * framerate vídeo. Conviene sacar 4 decimales. En este ejemplo:
    (7961.40 / 7955.64) * 25 = 25.0181 fps

Acto seguido extraemos el audio desde Streams -> Stream list -> Demux, y lo recomprimimos con el programa BeLight haciendo un cambio de framerate del calculado (25.0181) al que debería tener (25 fps), y lo volvemos a poner al vídeo usando Streams -> Stream list -> Add. Por último, debemos guardar el vídeo, y asunto solucionado.

La forma de cambiar la duración del audio está explicada con mayor detalle en este manual. En él se cambia también el framerate al vídeo, pero es algo que en este caso no tenemos que hacer, pues simplemente queremos cambiar el audio sin tocar el vídeo.

Desincronización constante

Ésta es la más fácil de corregir, ya que se trata simplemente de desplazar el audio completo hacia atrás o adelante en el tiempo (dependiendo de si el audio se reproduce después o antes que el vídeo, respectivamente). Se corrige mediante una herramienta dedicada a ello, que permite ajustar el delay (retraso) del audio. En Streams -> Stream list hacemos clic con el botón derecho sobre el audio afectado, y seleccionamos Interleaving. De paso controlar que esté en Direct stream copy. Los valores se introducen en Delay audio track by y se miden en milisegundos (ms). Un número positivo atrasará el audio mientras que uno negativo lo adelanta. Para saber qué valor poner, lo ideal es medir el tiempo aproximadamente, reproduciendo el vídeo desincronizado, como para tener un valor de referencia, y luego procesar una parte a ver si sirvió, y si no ir ajustándolo mas finamente y procesando pequeños trozos para ver cómo va quedando.

VirtualDubMod

Por ejemplo, si observamos que el audio sale un segundo más tarde de lo debido, el valor a introducir sería -1000

Se puede dar también el caso de que el AVI luzca perfectamente sincronizado en el PC, pero después de grabarlo e ir a probarlo en nuestro reproductor de salón, nos encontremos nuevamente con la desincronización constante. Esto se produce debido a que el reproductor ignora el interleaving/delay que hemos configurado y comienza a reproducir el audio al mismo tiempo que el vídeo, haciendo caso omiso al retraso o adelanto que le agregamos.

Para solucionar este inconveniente habrá que hacer uso nuevamente del VirtualDubMod. Esta vez extraeremos el audio a un archivo WAV, desde el menú Streams -> Stream list -> Save WAV. Ahora necesitaremos algún editor de audio no muy complejo, como el muy fácil de usar y gratuito Audacity. Con este programa debemos agregar un silencio al comienzo de la pista de audio igual en duración al delay que habíamos configurado anteriormente, y cortar ese tiempo exacto al final de la pista. Es muy importante cortar el mismo tiempo exacto que estamos agregando, pues si no es así no coincidiran las duraciones del audio y el vídeo y habremos creado una desincronización progresiva, todo esto en caso de que el audio haya que atrasarlo. Si hay que adelantarlo se deberán cortar en el inicio esos segundos (o milisegundos) del audio y agregar el silencio de igual duración al final de la pista.

Procedamos: una vez dentro de Audacity, cargamos el audio con Archivo -> Abrir, y seleccionamos el archivo WAV del audio (o MP3 si lo extrajimos en dicho formato). Para añadir un silencio primero vamos al menú Editar -> Mover cursor, y moveremos el cursor al principio o final de la pista según dónde queramos agregar el silencio. Luego hay que ir al menú Generar -> Silence e indicar el tiempo, recordando que debe ser exactamente el mismo que habíamos configurado en el delay del VirtualDubMod. Haciendo clic en la flecha de la ventana Silence Generator se puede especificar el formato de tiempo introducido, siendo recomendable usar hh:mm:ss + milliseconds, que permite ajustar hasta las milésimas de segundo. En el siguiente ejemplo se hace un ajuste de 1550 milisegundos.

Audacity

Ahora debemos cortar el trozo sobrante, para ello vamos al menú Editar -> Snap-To -> Apagado (esto es para poder marcar un trozo de forma muy exacta), y seleccionamos el trozo a eliminar con el ratón. Puede ser útil ampliar la vista usando los botones de zoom marcados con 1. El tiempo seleccionado se puede ver abajo (2, donde también conviene ajustar el formato de tiempo a hh:mm:ss + milliseconds usando la flecha). Se debe seleccionar el trozo de igual duración al silencio agregado, al principio o final de la pista según corresponda. Una vez seleccionado ir al menú Editar -> Borrar para eliminarlo.

Audacity

Para guardar el archivo, antes será necesario especificar la ruta al codec MP3 Lame (archivo lame_enc.dll), únicamente la primera vez que usemos el programa, ya que no viene incluido con Audacity por razones de licencia. Puede ser descargado desde aquí. Esto se hace desde el menú Editar -> Preferencias -> Formatos de archivo, donde también debemos elegir el bitrate de salida del MP3. Hecho esto, nos aseguraremos de que, en la ventana principal abajo a la izquierda, esté seleccionada una Frecuencia del proyecto (Hz) de 44100 Hz si se trata de un vídeo para grabar a CD, o de 48000 Hz si es para grabar en DVD.

Audacity

Ahora exportaremos el MP3 yendo al menú Archivo -> Export As -> MP3, elegiremos un nombre y lo guardaremos. Si lo quisiéramos mantener en formato WAV, pues simplemente seleccionaríamos WAV como formato de exportación. Ya sólo queda unirlo al vídeo, usando las ya conocidas funciones del VirtualDubMod: Streams -> Stream list -> Add para añadirlo, y Disable para eliminar el audio antiguo. Por último, guardaremos el vídeo definitivo ya sincronizado.

Desincronización total

La más temida, pero también la mas rara, por suerte. Cuando el audio y vídeo tienen distinta duración y además se encuentran desfasados en tiempo. En este caso se trata de aplicar ambos métodos de sincronización por separado, primero el progresivo (se igualan las duraciones) y luego el constante (se corrige el desfase). Con suerte lograremos nuestro cometido, si no ya se pone muy complicado (o más engorroso) y escapa a la finalidad de este manual.

Guardando el vídeo

Habiendo corregido ya la desincronización, procedemos a guardar el vídeo. Para ello vamos al menú Video y seleccionamos Direct stream copy (esto es importante) y por último a File -> Save As, y lo guardamos como archivo AVI.

Es muy probable que debamos repetir estos pasos varias veces hasta lograr una sincronización perfecta. Lo ideal es procesar pequeños trozos para no esperar que se procese todo el vídeo cada vez. Es importante destacar que estos métodos no son mágicos y que incluso en el peor de los casos no sea posible solucionar la desincronización.

No hay comentarios:

Sitio Recomendado

la fuente principal de los manuales que aquí encontrará es: Mundo Divx ¡Entre ya para empezar a descargar los programas!