Объедините два файла.m4a или конвертируйте файл.wav в m4a
Я искал способ записи в mpeg-4 с возможностью паузы и возобновления, но казалось, что его нет. Поэтому я решил записать в сыром виде wave
отформатировать и преобразовать в .m4a
, Есть ли способ, которым я могу преобразовать .wav
подать в .m4a
в андроид. Я искал вокруг mencoder
порт для андроида, но не нашел, там были некоторые посты о портировании ffmpeg
на Android на linux
но не совсем понятно, как я могу использовать его в Android, чтобы объединить два .m4a
файлы или конвертировать .wav
подать в .m4a
,
2 ответа
Есть две возможные вещи, которые вы могли бы подразумевать под "объединением" аудиофайлов, и два разных способа сделать это с помощью ffmpeg:
Помещение двух отдельных звуковых дорожек в один файл
Как на DVD, где есть обычная звуковая дорожка и другая звуковая дорожка, такая как комментарий или дублированный язык. Чтобы сделать это с ffmpeg и двумя файлами m4a, используйте команду ffmpeg -i in-1.m4a -acodec copy out.m4a -i in-2.m4a -acodec copy -newaudio
, Порядок опций важен, поэтому не связывайтесь с ним.
Объединение двух аудио файлов
Заставить второй файл воспроизводиться сразу после первого. Самый простой способ сделать это - использовать программу, предназначенную для манипулирования звуком, такую как SoX. Похоже, что есть недавний, но нестабильный Android-порт SoX.
Если вы хотите выполнить конкатенацию строго в ffmpeg, то вы можете сделать следующее:
ffmpeg -i in-1.m4a -f s16le in-1.raw
Это выводит аудиофайл в необработанный PCM. Вам нужно обратить внимание на частоту дискретизации и количество каналов, потому что эта информация не будет сохранена в необработанном файле PCM, и она понадобится вам позже. ffmpeg покажет вам информацию о аудиопотоке во время перекодирования. Это будет выглядеть примерно такAudio: aac, 44100 Hz, stereo, s16, 63 kb/s
Это означает, что частота дискретизации составляет 44100, а количество каналов - 2 (стерео). Чаще всего вы будете иметь дело с частотой дискретизации 22050, 44100 или 48000; и 1 ("моно"), 2 ("стерео") или 6 ("5.1") каналов.ffmpeg -i in-2.m4a -f s16le in-1.raw
Теперь декодируйте второй файл в необработанный PCM.ffmpeg -f s16le -ar 44100 -ac 2 -i 'concat:in-1.raw|in-2.raw' -acodec libfaac out.m4a
Опять же, порядок вариантов очень важен. Изменить частоту дискретизации (-ar
) и каналы (-ac
) параметры в зависимости от вашего ввода.
Предполагая, что вы собираете ffmpeg с соответствующими форматами и кодеками, конвертируя wav
в m4a
так же просто, как:
ffmpeg -i in.wav out.m4a
Если вы работаете со звуком, вам лучше повезет с SoX.