Объединить два файла .m4a или преобразовать файл .wav в m4a - PullRequest
4 голосов
/ 07 ноября 2011

Я искал способ записи в mpeg-4 с возможностью паузы и возобновления, но казалось, что его нет. Поэтому я решил записывать в формате wave и конвертировать в .m4a. Есть ли способ, которым я могу конвертировать .wav файл в .m4a в Android. Я искал mencoder порт для Android, но не нашел ни одного, были некоторые посты о переносе ffmpeg на Android на linux, но не совсем понятно, как я могу использовать его в Android для объединения двух .m4a файлов или конвертировать .wav файл в .m4a.

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011

Есть две возможные вещи, которые вы могли бы подразумевать под «объединением» аудиофайлов, и два разных способа сделать это с помощью ffmpeg:

Помещение двух отдельных звуковых дорожек в один файл

Как на DVD, где есть обычная звуковая дорожка и другая звуковая дорожка, например комментарий или дублированный язык.Чтобы сделать это с ffmpeg и двумя файлами m4a, используйте команду ffmpeg -i in-1.m4a -acodec copy out.m4a -i in-2.m4a -acodec copy -newaudio.Порядок опций важен, поэтому не связывайтесь с ним.

Объединение двух аудиофайлов

Заставка второго файла воспроизводиться сразу после первого.Самый простой способ сделать это - использовать программу, предназначенную для манипулирования звуком, например SoX .Похоже, есть недавний, но нестабильный порт Android SoX .Если вы хотите выполнить конкатенацию строго в ffmpeg, то вы можете сделать следующее:

  1. 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») каналов.

  2. ffmpeg -i in-2.m4a -f s16le in-1.rawТеперь декодируйте второй файл в необработанный PCM.

  3. ffmpeg -f s16le -ar 44100 -ac 2 -i 'concat:in-1.raw|in-2.raw' -acodec libfaac out.m4aОпять же, порядок вариантов очень важен.Измените параметры частоты дискретизации (-ar) и каналов (-ac) в соответствии с вашим входом.

1 голос
/ 08 ноября 2011

Предполагая, что вы создаете ffmpeg с соответствующими форматами и кодеками, преобразование wav в m4a так же просто, как:

ffmpeg -i in.wav out.m4a

Если вы работаете со звуком, вам, возможно, повезет больше с SoX .

...