2011-05-26 98 views
1

我錄製了一些音頻文件,存儲在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; 
} 
+0

什麼是您的音頻文件的格式? – inazaruk 2011-05-26 11:16:34

+0

我正在錄製3gp文件 – Manikandan 2011-05-26 11:19:33

回答

-1

你不能僅僅通過在另一.3gp文件的末尾寫一個.3gp文件的內容合併兩個.3gp文件。

+0

然後,它可以用於任何其他格式......或任何解決方案 – Manikandan 2011-05-26 11:29:26

+0

您可以使用'AudioRecorder'將音頻錄製到文件。這會給你原始PCM格式的音頻文件。你可以將它們合併在一起。但結果文件不會被播放。您需要在該文件的開頭添加正確的'WAV'標題以使其可以播放。請注意'AudioRecorder'很難使用MediaRecorder。 – inazaruk 2011-05-26 11:42:23

+0

我在開發人員站點找不到關於AudioRecorder的任何信息。你能否建議我任何有用的鏈接或任何樣本編碼。 – Manikandan 2011-05-26 11:57:56

相關問題