项目练习-音频混剪
-
项目蓝图分析
第一步:使用上一回合讲的 FileInputStream输入两个音频
第二步:使用FileInputStream的skip(long n)方法跳过特定字节的音频文件,譬如:
输入skip(1024*1024*3),这样就能丢弃掉音频文件前面的3MB的内容。
第三步:截取中间特定长度的音频文件:每次输入8KB的内容,使用count记录输入次数,达到设置的次数就终止音频输入。譬如:要截取2MB的音频,每次往输入流中输入8KB的内容,就要输入1024*2/8次。
第四步:往同一个输出流FileOutputStream中输入音频,并生成文件,实现音频混合。
-
项目所需素材
准备两首歌曲。
-
工程实现
import java.io.*;
public class MusicCompound {
public static void main(String args[]) throws IOException {
FileOutputStream fileOutputStream = null;
FileInputStream fileInputStream = null;
String fileNames[] = {"D:/JAVA小项目练习/金莎 - 星月神话.mp3","D:/JAVA小项目练习/邓丽君 - 我只在乎你.mp3"} ;
//设置byte数组,每次往输入流中传入8K的内容
byte []by = new byte[1024*8];
try {
fileOutputStream = new FileOutputStream("D:/JAVA小项目练习/合唱.mp3");
for(int i = 0;i <2;i++) {
int count = 0;
fileInputStream = new FileInputStream(fileNames[i]);
//跳过前面3M的歌曲内容
fileInputStream.skip(1024*1024*3);while(fileInputStream.read(by) != -1) {
fileOutputStream.write(by);
count++;
System.out.println(count);
//要截取中间2MB的内容,每次输入8k的内容,所以输入的次数是1024*2/8
if(count == (1024*2/8)) {
break;
}
}
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
finally {
try {
//输出完成后关闭输入输出流
fileInputStream.close();
fileOutputStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
-
结果展示
这样你就可以将任意首你喜欢的歌曲混合剪辑成一首歌了。