Объединение аудио файлов

1

Я записал несколько аудиофайлов, сохраненных в 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;
}
  • 0
    Каков формат ваших аудио файлов?
  • 0
    Я записываю 3gp файлы
Теги:
audio

1 ответ

-1
Лучший ответ

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

  • 0
    Тогда это будет работать для любых других форматов ... или любого решения
  • 0
    Вы можете записывать аудио в файлы, используя AudioRecorder . Это даст вам аудиофайлы в необработанном формате PCM. Вы можете объединить их вместе. Но полученный файл не будет воспроизводиться. Вам нужно будет добавить правильный WAV заголовок в начале этого файла, чтобы сделать его воспроизводимым. Обратите внимание, что AudioRecorder сложнее, чем MediaRecorder .
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню