4

我一直在寻找一种在 mpeg-4 中录制并能够暂停和恢复的方法,但似乎没有。所以我决定以原始wave格式记录并转换为.m4a. 有没有办法可以将.wav文件转换为.m4aandroid. 我四处寻找mencoderandroid 的端口,但没有找到,有一些关于移植ffmpeg到 android的帖子,linux但不太清楚如何在 android 中使用它来合并两个.m4a文件或将.wav文件转换为.m4a.

4

2 回答 2

4

“合并”音频文件可能意味着两种可能的事情,以及使用 ffmpeg 的两种不同方法:

将两个单独的音轨放入同一个文件中

就像在 DVD 上,有一个普通的音轨,还有另一个音轨,如评论或配音语言。要使用 ffmpeg 和两个 m4a 文件执行此操作,请使用命令ffmpeg -i in-1.m4a -acodec copy out.m4a -i in-2.m4a -acodec copy -newaudio. 选项的顺序很重要,所以不要乱用它。

连接两个音频文件

使第二个文件在第一个文件之后立即播放。最简单的方法是使用专为音频处理而设计的程序,如SoX。似乎有一个最近但不稳定的 SoX And​​roid 端口

如果您想在 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

于 2011-11-08T14:06:14.970 回答
2

假设您使用相关格式和编解码器构建 ffmpeg,转换wavm4a非常简单:

ffmpeg -i in.wav out.m4a

如果您正在从事音频工作,那么使用SoX可能会更好。

于 2011-11-08T03:54:12.403 回答