Какой самый простой способ обернуть необработанный файл .aac в контейнер .m4a

Этот вопрос возникает из следующего вопроса:

Как программно преобразовать mp3 в Воспроизводимый в itunes файл aac / m4a?

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


person Community    schedule 16.09.2008    source источник
comment
Если вы хотите сделать это на языке Java, не возясь с NDK и FFMPEG, посмотрите мой ответ здесь.   -  person Kingston    schedule 14.07.2016


Ответы (4)


mp4box, если вам нужен специальный инструмент; это, наверное, самый простой путь. ffmpeg тоже может с этим справиться.

person Dark Shikari    schedule 16.09.2008
comment
В дополнение к этому, использование ffmpeg так же просто, как ffmpeg -i in.m4a -o out.aac. :) - person porges; 16.09.2008
comment
mp4box примерно такой же, и я бы рекомендовал его вместо ffmpeg, потому что он помещает атом moov в начало, а не в конец, что важно для прогрессивной загрузки, воспроизведения iPod и т. д. - person Dark Shikari; 16.09.2008
comment
Формат для ffmpeg на самом деле: «ffmpeg -i foo.aac foo.m4a», превращая необработанный aac в m4a. - person Smar; 18.01.2011
comment
Вы уверены, что это не перекодирование? См. мой ответ - person Alastair; 13.03.2014
comment
ffmpeg также может помещать атом moov в начало: -movflags +faststart. Да, это с одним о в movflags. - person MSalters; 15.06.2017
comment
Как заявил Аластер, вы должны добавить опцию -acodec copy, иначе поток перекодируется. - person Gras Double; 05.06.2018

ffmpeg - универсальный (де) мультиплексор / транскодер. MP4Box - это (де) мультиплексор / транскодер из GPAC, пакета, посвященного программным технологиям, связанным с MP4. Прямо сейчас кажется более разумным использовать MP4Box, потому что он правит атом moov в начале файла, что важно для потоковой передачи и воспроизведения iPod.

Используйте ffmpeg следующим образом:

ffmpeg -i input.aac -codec: copy output.m4a

Используйте MP4Box следующим образом:

MP4Box -add input.aac#audio output.m4a
person Community    schedule 10.06.2011
comment
@ColonelPanic Что вы пробовали? Как узнать, что это не упаковка? - person djeikyb; 29.01.2013
comment
Вывод на консоль предполагал, что ffmpeg был перекодирован - это тоже заняло некоторое время, а размер файла был существенно другим. Но команда mp4box работала отлично и быстро, спасибо. - person Colonel Panic; 29.01.2013
comment
На странице руководства @ColonelPanic ffmpeg говорится, что ему нужен -codec copy. Спасибо, что уловили это. - person djeikyb; 30.01.2013
comment
Мне не повезло, ffmpeg сказал, что вход поврежден, MP4Box преобразовал, но записал только 1,5 секунды звука (на самом деле это 20 минут). - person Rob; 16.01.2014
comment
Я использовал MP4Box, и я не знаю, имеет ли это значение, но я добавил -ipod в конце, и он отлично работал с iTunes. - person robotik; 06.09.2018
comment
Интересно то, что полученный инкапсулированный m4a меньше, чем необработанный aac. похоже, это потому, что в m4a заголовок пакета короче. - person robotik; 06.09.2018

avconv -i input.aac -acodec copy output.m4a

В моем случае без явного флага для копирования он перекодирует звук по какой-то странной причине.

person Community    schedule 13.03.2014
comment
Может быть, пару слов о avconv, что это такое, где вы это берете, чем отличается от ffmpeg? - person einpoklum; 10.01.2016
comment
Я столкнулся с такой же ситуацией с ffmpeg. Без добавления этого -acodec copyoption поток перекодируется. Но не думаю, что это странно, думаю, это логично с точки зрения парсера команд. - person Gras Double; 05.06.2018

Просто используйте любой mp4-Muxer, такой как Yamb, для создания mp4-файла, содержащего только aac звуковую дорожку, а затем измените расширение файла на m4a.

person Community    schedule 11.12.2017