在Android中附加两个Mp3文件

时间:2013-02-26 12:10:09

标签: java android arrays android-mediaplayer android-file

如何在android中附加两个音频文件。我试过这个,但它不起作用。请给我一个soln.I需要连接来自sdcard的文件ts A.mp3和B.mp3。当我合并连接方法调用时,我希望它们都是sdcard中的单个文件,即C.mp3 .... ....

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();
        }

我需要将文件A.mp3,B.mp3与C.mp3 ....

结合起来

2 个答案:

答案 0 :(得分:2)

除了知识分子的答案之外,您可以参考mp3文件格式规范以获取更多信息HEREHERE

拼接两个mp3文件时应该考虑很多事情。最不用要说的是,他们需要使用相同的程序进行编码,使用相同的设置或者如果我们谈论语音,可以从同一个麦克风中获取,使用相同的设置进行设置等。

答案 1 :(得分:0)

import java.io.*;
public class TwoFiles
{
    public static void Main(String args[]) throws IOException
    {
        FileInputStream fistream1 = new FileInputStream("C:\\Temp\\1.mp3");
        FileInputStream fistream2 = new FileInputStream("C:\\Temp\\2.mp3");
        SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
        FileOutputStream fostream = new FileOutputStream("C:\\Temp\\final.mp3");

    int temp;

    while( ( temp = sistream.read() ) != -1)
    {

        fostream.write(temp);  
    }
    fostream.close();
    sistream.close();
    fistream1.close();
    fistream2.close();
}
}

我希望很清楚