¿Por qué exportar un archivo .wav como .m4a crea un problema de sincronización en Audacity? (Sonido, Audio, Audacity, Sincronización, Ffmpeg)

kite preguntó.

Editar: es 0.0330s de retraso, no medio segundo lo siento. También el problema se produce al convertir el wav a .m4a en ffmpeg utilizando el ffmpeg básico -i input.wav output.m4a, y he utilizado la última versión de ffmpeg para ello.

Tenía un gran número de piezas de audio como .wav s16 y las mezclé en una sola pista .wav f32. A continuación, quería exportar esta pista a un aac con la tasa de bits más alta (320 parece ser lo más alto que permite Audacity) con el fin de colocarlo en un contenedor .mp4 (¿es este el códec de mayor calidad que puedo convertir y encajar en un mp4? Quiero la mayor calidad de audio que pueda conseguir).

Cuando sigo las instrucciones y exporto se crea un retardo de sincronización de medio segundo más o menos… lo suficiente como para dar un eco perceptible cuando se reproducen en tándem.Lo corregí manualmente en audacity con los ojos. Pero cuando exporto…. lo vuelve a desincronizar, y además prefiero evitar la pérdida que genera exportar un aac como un aac.

¿Hay algún arreglo que pueda hacer con audacity (usando la última versión 2.3.0) o algún otro programa gratuito? Tengo ffmpeg command prompt, y handbrake, por si hay algún comando que pueda recortar manualmente el audio o asignar la alineación correcta.

Me he dado cuenta de que Audacity utiliza la versión 2.2.2 de ffmpeg, y ffmpeg tiene muchas versiones más nuevas desde entonces… ¿podría el uso de esas versiones más nuevas solucionar el problema? En la biblioteca de preferencias dice:
ffmpeg library version: F(55.33.100),C(55.52.102),U(52.66.100)

¿Y cómo puedo hacer que Audacity utilice las versiones más nuevas? No entiendo muy bien si sólo llama a ffmpeg o si tiene que ser esta versión 2.2.2 porque lo diseñaron para permitir y trabajar con esa versión específicamente.

Puedes ver cómo exporté el archivo .wav original en la imagen de abajo:

1 respuestas
audionuma

Esto es más una solución que una respuesta, ya que no conseguí enlazar la librería libavformat con Audacity. Así que aquí hay algunas pistas usando FFmpeg versión 4.1 con libavformat.58.20.100.dylib en macOS.

Existe un problema potencial dependiendo del contenedor utilizado y de la versión de FFmpeg. Algunos contenedores (m4a y mp4, por ejemplo) incluyen unos metadatos que describen cuántas muestras silenciosas deben saltarse al descodificar el flujo de bits aac. Al menos las versiones recientes de FFmpeg son capaces de utilizar estos metadatos.

Ejemplo de prueba

  • Cree una pista de prueba en Audacity
  • Exporte la pista de prueba desde Audacity como wav PCM 24 bits 48 kHz export.wav
  • Utilice FFmpeg desde la línea de comandos para crear tres archivos de prueba:

ffmpeg -i export.wav c:a aac export_aac.aac

ffmpeg -i export.wav c:a aac export_m4a.m4a

ffmpeg -i export.wav c:a aac export_mp4.mp4

  • Utilice FFmpeg desde la línea de comandos para volver a convertir estos tres archivos a wav:

ffmpeg -i export_aac.aac export_aac.wav

ffmpeg -i export_m4a.m4a export_m4a.wav

ffmpeg -i export_mp4.mp4 export_mp4.wav

  • Importe los tres archivos wav en Audacity

  • Mira la captura de pantalla de abajo. Los archivos m4a y mp4 han sido decodificados por FFmpeg sin silencio, mientras que el archivo aac tiene silencio al principio.

Así que una solución para tu caso de uso podría ser exportar todos tus archivos como wav desde Audacity y luego usar FFmpeg para crear los archivos mp4.

Comentarios

  • OP informa de que «retraso de medio segundo más o menos«. Hay un fotograma de cebado en la cabeza, por lo que son 1024 muestras para AAC. Para un flujo de 48 kHz, eso es 0,021s. –  > Por Gyan.
  • @Gyan : ¿quieres decir que el retardo de 0,021 s que se puede ver en la captura de pantalla no está relacionado con el problema del OP? –  > Por audionuma.
  • Lo siento, en realidad es el caso en el que el archivo aac se reproduce 0,0330s más tarde que el archivo wav original. Así que es mucho menos de medio segundo. También apliqué el ffmpeg básico -i input.wav output.m4a en la última versión de ffmpeg y el retardo era el mismo que el encontrado en audacity. Así que por lo que veo el problema es de ffmpeg, ya que el problema de sincronización de audio aparece cuando se comprueba en otros programas que no sean audacity. –  > Por cometa.
  • @audionuma en realidad, es – el OP informó de un retraso mucho más largo inicialmente, ya corregido. –  > Por Gyan.
  • Al OP, usa ffmpeg para convertir directamente a AAC en un contenedor MP4 porque 1)el codificador AAC que usa Audacity es malo y de hecho, ya no es soportado por ffmpeg. 2)Los flujos ADTS (.aac) son crudos y no pueden almacenar priming skip, por lo que el decodificador procesará y emitirá el silencio inicial. –  > Por Gyan.