【发布时间】:2014-11-12 18:21:33
【问题描述】:
我已成功按顺序组合了 2 个 mp3 文件。不幸的是,这些文件之间有一个很小但很明显的差距,这很明显它们是两个独立的文件。
我应该提一下,我个人从 Cubase 导出了所有这些音频文件,其长度、比特率等完全相同。
我在网上查了一下,找不到太多关于这方面的信息。
我的问题是:
有没有办法在文件末尾剪掉一小部分或交叉淡入淡出文件?
我觉得即使是交叉淡入淡出也可能仍有差距。
感谢您的帮助!
这是我的代码:
public void myMethod1() throws IOException
{
File newFile=new File(Environment.getExternalStorageDirectory()
+File.separator
+"Music"
+File.separator
+"MyApp"+File.separator+"MergedFile.mp3");
File newFile1=new File(Environment.getExternalStorageDirectory()
+File.separator
+"Music"
+File.separator
+"MyApp"+File.separator+"file104.mp3");
File newFile2=new File(Environment.getExternalStorageDirectory()
+File.separator
+"Music"
+File.separator
+"MyApp"+File.separator+"file105.mp3");
Log.d("newFile", newFile.toString());
Log.d("newFile1", newFile1.toString());
Log.d("newFile2", newFile2.toString());
FileInputStream fistream1 = new FileInputStream(newFile1 ); // first source file
FileInputStream fistream2= new FileInputStream(newFile2 );//second source file
Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(fistream1);
v.add(fistream2);
SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
if(!newFile.exists()){
newFile.createNewFile();
FileOutputStream fostream=new FileOutputStream(newFile, true);
int temp;
while( ( temp = sistream.read() ) != -1)
{
//System.out.print( (char) temp ); // to print at DOS prompt
fostream.write((byte)temp); // to write to file
}
fostream.close();
sistream.close();
fistream1.close();
fistream2.close();
MediaScannerConnection.scanFile(this,
new String[] { newFile.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
}
}
【问题讨论】:
-
您找到解决方案了吗?
标签: java android concatenation