Искал способ записи в мпег-4 с возможностью паузы и возобновления, но вроде такого нет. Поэтому я решил записать в необработанном формате wave
и преобразовать в .m4a
. Есть ли способ конвертировать файл .wav
в файл .m4a
в android. Я искал порт mencoder
для Android, но ничего не нашел, были сообщения о переносе ffmpeg
на Android на linux
, но не совсем понятно, как я могу использовать его в Android для объединения двух файлов .m4a
или преобразования файла .wav
в .m4a
.
Объединить два файла .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. Похоже, существует недавний, но нестабильный порт SoX для Android.
Если вы хотите сделать конкатенацию строго в 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
на Android, теперь мне нужно знать, как я могу сделать то же самое, используя JNI
или что-то в этом роде.
- person Pannu; 09.11.2011
Предполагая, что вы создаете ffmpeg с соответствующими форматами и кодеками, преобразование wav
в m4a
выполняется так же просто, как:
ffmpeg -i in.wav out.m4a
Если вы работаете со звуком, возможно, вам больше повезет с SoX.
NDK
и jni
я портировал ffmpeg
на андроид
- person Pannu; 09.11.2011