我生成了许多 .mp3 文件,需要将它们合并成一个 mp3 文件,我尝试了这段代码:
FileInputStream fist = null;
try {
fist = new FileInputStream("/mnt/sdcard/Flash Library/Resources/sound1.mp3");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
FileInputStream fist2 = null;
try {
fist2 = new FileInputStream("/mnt/sdcard/Flash Library/Resources/sound2.mp3");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File dir = new File ("/mnt/sdcard/Flash Library/dir1");
dir.mkdirs();
SequenceInputStream sistream = new SequenceInputStream(fist, fist2);
FileOutputStream fostream = null;
try {
fostream = new FileOutputStream("/mnt/sdcard/Flash Library/dir1/output.mp3");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
int temp;
try {
while( ( temp = sistream.read() ) != -1)
{
Toast.makeText(ctx.getActivity(), sistream.toString(), Toast.LENGTH_SHORT).show();
// System.out.print( (char) temp ); // to print at DOS prompt
fostream.write(temp); // to write to file
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fostream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
sistream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fist.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fist2.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
首先,它会生成一个文件(output.mp3),其中仅包含第一个mp3数据,第二个不会添加到输出中。其次,我需要合并许多mp3文件,而不仅仅是两个? 我搜索了合并mp3文件的方法,并且所有的示例都只涉及两个文件。 是否有解决我的问题的方法?