«Правильный» способ извлечь аудио AAC из файла MP4?

995
einpoklum

Я использую Linux (Kubuntu 16.04), и у меня есть несколько файлов .MP4 со звуковыми дорожками, которые я хочу извлечь, сохранить как файлы .AAC / .M4A и тег.

Теперь я делаю извлечение, используя

MP4Box -raw $track_index my_file.mp4 

где индекс дорожки может быть 0, 1, 2 и т. д. Это работает, поскольку я могу воспроизводить результат в различных медиапроигрывателях ... но так ли это на самом деле?

Кто-то, кто просматривал мои файлы, сказал мне:

в заголовке файла отсутствует поле «ftyp», которое идентифицирует его как контейнер MPEG 4. Также нет полей «mdat», которые указывали бы на отдельные порции данных внутри контейнера MPEG 4.

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

Что я могу сделать, чтобы получить правильно структурированные, тегируемые файлы M4A / AAC? (Естественно, я ищу решение для командной строки.)

0

1 ответ на вопрос

1
Mockman

Не используйте «сырые». Используйте «один». Затем измените расширение на .m4a.

Из документации MP4Box:

-single TrackID : extracts track in a new MP4 with a single track. 

Я взял случайный MP4 и извлек аудио, используя эти два варианта. Затем я использовал Media Info для их проверки. Исходный вариант вывода имел формат файла ADTS, тогда как единственным выходным параметром был MPEG-4.

Кажется, что -raw создает файл транспортного потока, который не поддерживает метаданные, такие как теги. Когда я использую приложение Tagger, оно даже не видит выходной файл -raw, тогда как позволяет открывать вывод -single и редактировать для него теги.

https://gpac.wp.mines-telecom.fr/mp4box/mp4box-documentation/

+1, но знаете ли вы, как я могу обернуть файл транспортного потока в «нормальный» аудиопоток MP4? einpoklum 7 лет назад 0
Я не думаю, что транспортные потоки работают таким образом. Но -single автоматически создает нужный тип файла. Это не перекодировать. Исходя из того, что я понял, то, что вы предлагаете, будет состоять из одного шага и превратится в многоэтапный. Я бы изменил расширение, чтобы другим программам было понятно, что это именно аудиофайл. Mockman 7 лет назад 0
Я имел в виду, предполагая, что вы распаковали транспортный файл strea и у вас больше нет оригинального MP4 ... einpoklum 7 лет назад 0
Ааа ... дай мне немного подумать об этом. Но когда я смотрел на mp4box, мне показалось, что я вижу возможность создать новый файл контейнера. Так что, вероятно, было бы что-то вроде создания нового контейнера с этим аудиопотоком. Mockman 7 лет назад 0
Попробуйте это, возможно, вы могли бы использовать либо m4a, либо mp4 в качестве расширения выходного файла… mp4box -add _inputfile_ _outputfile_` Mockman 7 лет назад 0

Похожие вопросы