我需要创建由来自两个不同来源的音频数据组成的音频文件。一个来自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的数据时,它无法正常工作。
答案 0 :(得分:0)
我找到了reason。事实证明,要连接来自不同来源的mp3数据,它们应该具有相同的通道和相同的采样率。
解决方案是将mp3文件解码回PCM并使用我用来编码从Mic读取数据的相同配置对它们进行编码。