Объединение аудио файлов - PullRequest
1 голос
/ 26 мая 2011

Я записал несколько аудио файлов, сохранил их в SDCard. Мне нужно объединить все записанные файлы в один аудиофайл. Я использовал следующий код. Моя проблема в том, что объединенный файл содержит только первый записанный файл. Любые предложения ... В методе 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 голосов
/ 26 мая 2011

Вы не можете объединить два .3gp файла, просто записав содержимое одного .3gp файла в конец другого .3gp файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...