我正在寻找一种能够暂停和恢复录制的 MPEG-4 录制方法,但好像没有这样的方法。因此我决定以原始的 wave 格式进行录制,并将其转换为 .m4a 格式。请问在安卓设备中,有没有把 .wav 文件转换成 .m4a 的方法?我尝试了查找适用于安卓设备的 mencoder 端口,但没有找到相关信息。有一些关于如何在 Linux 上移植 ffmpeg 到安卓的帖子,但并不清楚如何在安卓中使用它来合并两个 .m4a 文件或者转换 .wav 文件为 .m4a 格式。
“合并”音频文件可以有两种可能的意思,并且使用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
)选项。
NDK
和jni将我移植到
ffmpeg`的代码转换为Android? - Pannu
ffmpeg
移植到了 Android,现在我需要知道如何使用JNI
或其他方式来完成相同的操作。 - Pannu