我正在尝试使用此功能合并Android应用程序中的一些mp3文件:
private void mergeSongs(File mergedFile, Vector<InputStream> inputStreams){
Enumeration<InputStream> enu = inputStreams.elements();
try {
SequenceInputStream sis = new SequenceInputStream(enu);
if(!mergedFile.exists()){
mergedFile.createNewFile();}
FileOutputStream fos = new FileOutputStream(mergedFile);
int temp;
while ((temp = sis.read())!= -1){
fos.write((byte)temp);
}
for (int i=0; i<inputStreams.size(); i++){
InputStream fis1 = inputStreams.get(i);
fis1.close();
}
sis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
通过以下几行代码调用:
Vector<InputStream> inputStreams = new Vector<InputStream>();
try {
for (int i=1; i<6; i++){
InputStream fis1 = getResources().openRawResource(getResources().getIdentifier("a" + i, "raw", getPackageName()));
inputStreams.add(fis1);
}
} catch (Exception e) {
e.printStackTrace();
}
mergeSongs(new File(Environment.getExternalStorageDirectory().getPath() + "/mergedFile.mp3"), inputStreams);
这是有效的,但合并音频的持续时间与第一个音频相同。 我该如何解决?
*我试图以三种不同的方式获得持续时间: 1)在android上使用mediaplayer 2)在android中使用MediaMetadataRetriever (所有这两个都返回相同的错误长度) 3)使用Windows资源管理器和Windows媒体播放器返回正确的长度