Есть две возможные вещи, которые вы могли бы подразумевать под «объединением» аудиофайлов, и два разных способа сделать это с помощью 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
) в соответствии с вашим входом.