Android录音文件和下载的音频合成
问题描述:
使用的是AudioRecord进行录音,然后想把录音之后的音频跟下载过来的音频合成一个文件,类似加一个音频头或者尾。
试了直接用流进行简单的拼接,但是不能播放,有没有大神可以指导一下的,快急死了。。
答
录音时有来源选项,可同时选择多种来源:麦克,mono mix,stereo mix,CD,电话输入等。
最直观的解决办法是打开两个MP3同时播放(可以把音量设小点),同时进行录音生成“合成的”MP3。合成的MP3的音量如果小,也可以编程给它调大点。
当然,如果能有专业的现成组件也不错。但是那样的话,恐怕用户会选择直接安装这种应用,自己进行用途更多的混音了,也就无需你做这个功能了。
答
你IO流是怎么处理的,把代码贴出来,有试过把两端音频都放进一个byte[]里吗
答
File original= new File("/mnt/sdcard/A.mp3");
File temp=new File("/mnt/sdcard/B.mp3");
Log.i("...............",""+path);
try {
File outFile= new File("/mnt/sdcard/C.mp3 ");
DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(outFile)));
// FileOutputStream out=new FileOutputStream(outFile);
//OutputStream out = new FileOutputStream(original,true);
int m,n;
m=(int) temp.length();
n=(int) original.length();
byte[] buf1 = new byte[m];
byte[] buf2 = new byte[n];
byte[] outBytes = new byte[m+n];
DataInputStream dis1=new DataInputStream( new BufferedInputStream(new FileInputStream(original)));
DataInputStream dis2=new DataInputStream( new BufferedInputStream(new FileInputStream(temp)));
dis1.read(buf1, 0, m);
dis1.close();
dis2.readFully(buf2, 0, n);
dis2.close();
out.write(buf1);
out.write(buf2);
out.flush();
//in.close();
out.close();
System.out.println("File copied.");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答
用ffmpeg
ffmpeg -i 第一个文件名 -i 第二个文件名 输出文件名