我一直在寻找一种在 mpeg-4 中录制并能够暂停和恢复的方法,但似乎没有。所以我决定以原始wave
格式记录并转换为.m4a
. 有没有办法可以将.wav
文件转换为.m4a
android. 我四处寻找mencoder
android 的端口,但没有找到,有一些关于移植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。似乎有一个最近但不稳定的 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