Android - 连接编码的mp3数据和mp3文件数据

时间:2017-09-12 09:05:10

标签: android android-audiorecord

我需要创建由来自两个不同来源的音频数据组成的音频文件。一个来自Microphone,另一个来自已录制的音频mp3文件。

我正在使用Lame库将读取数据从Microphone转换为mp3并将其写入FileOutputStream,如下所示:

bytesRead = audioRecord.read(buffer, 0, minBuffer);
int bytesEncoded = androidLame.encode(buffer, buffer, bytesRead, mp3buffer);
outputStream.write(mp3buffer, 0, bytesEncoded);

我有InputStream(mp3文件),我写的是这样的FileOutputStream:

int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int readBytes = 0;
while ((readBytes = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, readBytes);
} 

我需要替换这两个来源,一次只能从一个来源写入。而且,我希望输出为mp3格式。

目前,如果我只从一个来源写入数据,这些代码工作正常。

但是,例如,当我首先写入来自文件的数据并停止它,并继续写入来自Mic的数据时,它无法正常工作。

1 个答案:

答案 0 :(得分:0)

我找到了reason。事实证明,要连接来自不同来源的mp3数据,它们应该具有相同的通道和相同的采样率。

解决方案是将mp3文件解码回PCM并使用我用来编码从Mic读取数据的相同配置对它们进行编码。