Как использовать ffmpeg для добавления метаданных в файл AAC без перекодирования?

13

Я использую ffmpeg для извлечения только аудиопотока из видеофайла:

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

Это создает чистый аудиофайл, но без метаданных.

Чтобы добавить метаданные, ffmpeg имеет параметр командной строки:

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

Это выполняется без ошибок, но когда выходной файл проверяется с помощью ffprobe, он вообще не имеет тегов метаданных.

Если выходной контейнер изменен на mp4, метаданные могут быть установлены и появятся в выходном файле:

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

Вот интересная часть; если я использую Banshee для редактирования метаданных существующего файла .aac, а затем использую ffmpeg для такой же обработки файла, исходные метаданные успешно копируются в новый файл .aac.

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

но попытки изменить метаданные не имеют никакого эффекта:

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

Таким образом, кажется, что контейнер .aac может содержать метаданные, а ffmpeg может копировать их из входных данных в выходные, но не может изменять их при использовании кодека копирования.

Кто-нибудь знает способ заставить ffmpeg изменять метаданные в aac-контейнере без перекодирования?

С другой стороны, есть ли другой универсальный инструмент, который я мог бы использовать для установки метаданных после обработки файла?

Большое спасибо. Крис.

Крис С.
источник

Ответы:

12

Цель состояла в том, чтобы создать аудиофайл из видеофайла без перекодирования и ввести метаданные, распознаваемые медиапроигрывателями. Средой является Debian GNU / Linux.

Я хотел бы поблагодарить @bootload за то, что помог мне найти ответ.

ffmpeg не поддерживает добавление тегов метаданных в выходные файлы .AAC, однако здесь есть два возможных обходных пути.

  1. Утилиты командной строки id3 и id3v2 (доступны из стандартных репозиториев) могут применять теги id3 к аудиофайлу .aac. Nautilus распознал стили тегов v1 и v2, поэтому любой из них должен работать. Те же теги были признаны медиаплеером Banshee.
id3v2 -t "My Title" audio.aac
  1. ffmpeg может добавлять метаданные в контейнер MP4, но расширение .mp4 в Nautilus будет отображаться как видеофайл. Apple Inc. использует нестандартные расширения контейнера MP4, чтобы отличать видеофайлы (.m4v) от аудиофайлов (.m4a). Эти расширения распознаются в Debian Nautilus и ffmpeg. Так,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

создаст файл только для аудио, распознаваемый Nautilus, и ffmpeg может безопасно добавить метаданные в контейнер.

Крис С.
источник
3

Что такое предполагаемое оборудование? Это для устройства Apple iP *? Если это так, попробуйте http://atomicparsley.sourceforge.net/ В противном случае попробуйте http://ffmpeg.org/ffmpeg.html#Examples, используя метод mex / demux «INI-кодирование INTF-8» . (Извлеките метаданные в виде файла utf8, измените и снова вставьте).

Bootload
источник
Средой является Debian GNU / Linux.
Крис С.
В документации ffmpeg не ясно, как использовать метаданные muxer / demuxer, хотя ссылка на документ показывает полученный формат файла. Можете ли вы привести пример командной строки, как это будет сделано? Благодарю.
Крис С.
@ChrisC выглядит не очень хорошо. Без пробираться через КРК и FFmpeg спецификацию , чтобы убедиться в этом, похоже , метаданные честь по FFmpeg перечислены здесь ~ wiki.multimedia.cx/index.php?title=FFmpeg_Metadata#Basic_Usage и акк не поддерживаются. Используя cli для других форматов, вы следуете шаблону 'ffmpeg -i track05.wav -metadata title = "Track # 5" -metadata author = "Unknown Artist" -acodec alac -y track05.m4a, например. Обобщенный шаблон: ffmpeg -i <SOURCE> -metadata key = "value" <SOURCE>. Это именно тот процесс, которым вы следовали :(
bootload
Давайте получим очень конкретным. В каком формате метаданных вы хотите кодировать? Мы говорим ID3? С каким форматом вы собираетесь наконец работать?
загрузка
Я посмотрел вокруг, чтобы увидеть, что поддерживает AAC. Возможно, не существует официального формата, но в Debian ID3V1 и ID3V2 оба работают. Банши, кажется, ставит теги ID3V2 при использовании своего редактора.
Крис С.
1

MP4Box (часть пакета "gpac") конвертирует файлы AAC в контейнеры MP4 без изменения исходных данных. Затем метаданные могут быть добавлены с использованием любого программного обеспечения для тегирования:

MP4Box -add old.aac new.mp4
Gid
источник