Android录音文件和下载的音频合成

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 第二个文件名 输出文件名