我的Android应用以AMR
和WAV
格式录制音频。我的应用程序需要在第一个录制的音频文件暂停的位置插入第二个录制的音频文件。我使用WAV
文件做得很好,但是插入后的AMR
文件无法在Android MediaPlayer中播放,当它到达插入位置时会出现一些错误。但是相同的文件在AMR球员。
我遵循的步骤是:
1.将数据从file1写到暂停位置:
raf3=new RandomAccessFile(result,"rw");
raf3.setLength(0);
int d=0;
//Write data from record1 upto the pause position
while(d!=pos)
{
raf3.write(bytes[d]);
d++;
}
2.写入要从file2
插入的数据//write all the data from record 2
int l=0;
raf3.writeBytes(" ");
while(l!=bytesread1)
{
raf3.write(bytes1[l]);
l++;
}
3.在暂停位置
之后写入file1中的剩余数据while(d!=size){
raf3.write(bytes[d]);
d++;
}
我做了什么有什么问题吗?
答案 0 :(得分:0)
即使使用相同的算法压缩新数据,也不一定能用新数据替换压缩流(AMR,MP3,AAC等)中的数据。
为了保证这样的替换工作,您需要解压缩数据,进行替换,然后再次压缩它。这很可能会导致音频质量进一步下降。