Я использую 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-контейнере без перекодирования?
С другой стороны, есть ли другой универсальный инструмент, который я мог бы использовать для установки метаданных после обработки файла?
Большое спасибо. Крис.
MP4Box (часть пакета "gpac") конвертирует файлы AAC в контейнеры MP4 без изменения исходных данных. Затем метаданные могут быть добавлены с использованием любого программного обеспечения для тегирования:
источник