合并音频文件

时间:2011-05-26 11:05:42

标签: java android audio

我录制了一些音频文件,将它们存储在SD卡中。我需要将所有录制的文件合并到一个音频文件中。我使用了以下代码。我的问题是组合文件只包含第一个记录的文件。任何建议......在readAudioAsStream()方法中,我试图合并文件。

public void readAudioAsStream() {
    getFullAudioPath()

    File f;
    FileInputStream ins = null;

    try 
    {
        String comfile=getCombineFile();
        //FileOutputStream fos=new FileOutputStream(comfile);
        Log.d("combined file",comfile);
        File file=new File(comfile);
        RandomAccessFile raf = new RandomAccessFile(file, "rw");
        Log.d("path size",Integer.toString(audFullPath.size()));
        for (int i=0;i<audFullPath.size();i++)
        {   
            String filepath=audFullPath.get(i);
            Log.d("Filepath",filepath);
            f=new File(audFullPath.get(i));
            fileContent = new byte[(int)f.length()];
            ins=new FileInputStream(audFullPath.get(i));
            int numofbytes=ins.read(fileContent);
            System.out.println("Number Of Bytes Read===========>>>"+numofbytes);
            raf.seek(file.length());
            raf.write(fileContent);
        }
    }
    catch (FileNotFoundException e1) {
        e1.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }           
}
public ArrayList<String> getFullAudioPath() {
    ArrayList<String> fullPath=new ArrayList<String>();
    fullPath.clear();

    String path=filePath();
    File f=new File(path);
    if(f.isDirectory())
    {
        File[] files=f.listFiles();
        for(int i=0;i<files.length;i++)
        {
            String fpath=path+File.separator+files[i].getName().toString().trim();
            System.out.println("File Full Path======>>>"+fpath);
            fullPath.add(fpath);
        }
    }       
    return fullPath;
}
public String filePath() {
    String newFolderName="/MyAudio";
    String extstoredir=Environment.getExternalStorageDirectory().toString();
    String newPath=extstoredir+newFolderName;
    return newPath;
}

public String getCombineFile() {
    String newFolderName="/MyComAudio";
    String extstoredir=Environment.getExternalStorageDirectory().toString();
    String path=extstoredir+newFolderName;
    File myNewPath=new File(path);
    if(!myNewPath.exists()) {
        myNewPath.mkdir();
    }
    String audname="ComAudio";
    String ext=".3gp";
    File audio=new File(myNewPath,audname+ext);             

    if(audio.exists()) {
        audio.delete();
    }
    String audpath=path+"/"+audname+ext;
    Log.d("Combined audio file",audpath);
    return audpath;
}

1 个答案:

答案 0 :(得分:-1)

仅仅通过在另一个.3gp文件末尾写入一个.3gp文件的内容,您无法合并两个.3gp文件。