¿Cómo usar ffmpeg para agregar metadatos a un archivo AAC sin volver a codificar?

13

Estoy usando ffmpeg para extraer solo la transmisión de audio de un archivo de video:

ffmpeg -i video.mp4 -vn -acodec copy audio.aac

Esto produce un archivo de audio limpio pero sin metadatos.

Para agregar metadatos, ffmpeg tiene una opción de línea de comando:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.aac

Esto se ejecuta sin error, pero cuando el archivo de salida se verifica con ffprobe, no tiene etiquetas de metadatos.

Si el contenedor de salida se cambia a mp4, los metadatos se pueden configurar y aparecer en el archivo de salida:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.mp4

Aquí está lo interesante; si uso Banshee para editar los metadatos de un archivo .aac existente, luego uso ffmpeg para procesar el archivo de la misma manera, los metadatos originales se copian con éxito en el nuevo archivo .aac.

ffmpeg -i metadata.aac -vn -acodec copy audio.aac

pero los intentos de cambiar los metadatos no tienen efecto:

ffmpeg -i metadata.aac -vn -acodec copy -metadata title="My Title" audio.aac

Parece que el contenedor .aac puede contener metadatos y ffmpeg puede copiarlo de entrada a salida, pero no puede alterarlo cuando se usa el códec de copia.

¿Alguien sabe de una manera de obtener ffmpeg para alterar los metadatos en un contenedor aac sin volver a codificar?

Alternativamente, ¿hay otra herramienta genérica que podría estar usando para establecer los metadatos después de que se haya procesado el archivo?

Muchas gracias. Chris

Chris C.
fuente

Respuestas:

11

El objetivo era producir un archivo de solo audio a partir de un archivo de video sin volver a codificar e introducir metadatos reconocibles por los reproductores multimedia. El entorno es Debian GNU / Linux.

Me gustaría agradecer a @bootload por ponerme en el camino correcto para encontrar una respuesta.

Parece que ffmpeg no admite agregar etiquetas de metadatos a los archivos de salida .AAC, sin embargo, aquí hay dos soluciones posibles.

  1. Las utilidades de línea de comando id3 e id3v2 (disponibles en los repositorios estándar) pueden aplicar etiquetas id3 a un archivo de audio .aac. Nautilus reconoció los estilos de etiqueta v1 y v2, por lo que cualquiera debería funcionar. Las mismas etiquetas fueron reconocidas por el reproductor multimedia Banshee.
id3v2 -t "My Title" audio.aac
  1. ffmpeg puede agregar metadatos a un contenedor MP4, pero una extensión .mp4 en Nautilus aparecerá como un archivo de video. Apple Inc. utiliza extensiones no estándar del contenedor MP4 para distinguir los archivos de video (.m4v) de los archivos de audio (.m4a). Estas extensiones son reconocidas en Debian por Nautilus y por ffmpeg. Asi que,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

producirá un archivo de solo audio reconocido por Nautilus, y ffmpeg puede agregar metadatos de forma segura al contenedor.

Chris C.
fuente
3

¿Cuál es el hardware previsto? ¿Es para un dispositivo Apple iP *? Si es así, intente http://atomicparsley.sourceforge.net/ De lo contrario, intente http://ffmpeg.org/ffmpeg.html#Examples utilizando el método mex / demux "UTF-8-encoded" . (Extraiga los metadatos como archivo utf8 y modifique y vuelva a insertar).

carga de arranque
fuente
El entorno es Debian GNU / Linux.
Chris C.
La documentación de ffmpeg no es clara sobre cómo usar los metadatos muxer / demuxer, aunque el enlace del documento muestra el formato de archivo resultante. ¿Puede proporcionar un ejemplo de línea de comando de cómo se haría esto? Gracias.
Chris C.
@ChrisC no se ve bien. Sin leer las especificaciones de aac & ffmpeg para verificar esto, parece que los metadatos honrados por ffmpeg se enumeran aquí ~ wiki.multimedia.cx/index.php?title=FFmpeg_Metadata#Basic_Usage y acc no es compatible. Usando el cli para otros formatos, sigue el patrón 'ffmpeg -i track05.wav -metadata title = "Track # 5" -metadata author = "Unknown Artist" -acodec alac -y track05.m4a por ejemplo. El patrón generalizado es ffmpeg -i <SOURCE> -metadata key = "value" <SOURCE>. Este es exactamente el proceso que siguió :(
bootload
Vamos a ser muy específicos. ¿Cuál es el formato de los metadatos a los que desea codificar? ¿Estamos hablando de ID3? ¿Con qué formato vas a trabajar finalmente?
bootload
Eché un vistazo a mi alrededor para ver qué admite AAC. Puede que no haya un formato oficial, pero dentro de Debian ID3V1 e ID3V2 parecen funcionar. Banshee parece estar poniendo etiquetas ID3V2 cuando usa su editor.
Chris C.
1

MP4Box (parte del paquete "gpac") envuelve archivos AAC con contenedores MP4 sin alterar los datos originales. Los metadatos se pueden agregar utilizando casi cualquier pieza de software de etiquetado:

MP4Box -add old.aac new.mp4
Gid
fuente