@Justin, потому что вы перезаписываете файл, используйте FileOutputStream (File file, логическое добавление), с append = true

исал аудио с помощью AudioRecorder. Мне нужно объединить записанные файлы в один файл. Любое предложение.

getAudioPath () - путь аудиофайлов. getCombineFile () --- путь объединенного файла. Моя проблема - воспроизведение первого файла, а не всего файла в этом каталоге

public void readAudioAsStream()
            {
                getAudioPath();
                File f=null;
                FileInputStream ins = null;
                ReadSDDatas rds=new ReadSDDatas();
                try 
                {
                    String comfile=rds.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[read];
                            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)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                /*String path=audFullPath.get(val);
                playAudio(path);*/
                playAudio();
                /*
                for(int i=0;i<audFullPath.size();i++)
                {
                    Log.d("fullpathsize",Integer.toString(audFullPath.size()));
                    playAudio(audFullPath.get(i));
                }*/

            }
 Manikandan28 мая 2011 г., 13:19
Я хочу воспроизвести их по порядку как один файл, без паузы
 Geobits28 мая 2011 г., 13:04
Под слиянием вы подразумеваете создание одного файла с ними в порядке воспроизведения или одновременно?

Ответы на вопрос(1)

Решение Вопроса

Если вы используетеAudioRecord.read()Я предполагаю, что у вас есть данные PCM в коротком или байтовом массиве. Если это так, все, что вам нужно сделать, это создать новый массив размером с оба оригинала и скопировать данные, один за другим. Что-то вроде этого:

short[] newData = new short[dataOne.length + dataTwo.length];
for(int i=0;i<dataOne.length;i++)
    newData[i] = dataOne[i];
for(int i=0;i<dataTwo.length;i++)
    newData[i+dataOne.length] = dataTwo[i];

Тогда у вас есть один массив со всеми данными PCM, и вы можете делать с этим все, что захотите.

 pawegio26 июл. 2015 г., 16:26
@Justin, потому что вы перезаписываете файл, используйте FileOutputStream (File file, логическое добавление), с append = true
 Geobits30 мая 2011 г., 10:54
Выходной короткий [] длина будет суммой всех входных длин, сложенных вместе
 Manikandan30 мая 2011 г., 10:30
Спасибо Geobits, но я могу записать столько файлов. Тогда что я должен дать в коротком [].
 Matt Wolfe02 нояб. 2011 г., 20:03
Я бы не рекомендовал копировать подобные байты на сотовый телефон, где не хватает памяти. Подумайте об использовании буфера фиксированного размера (что-то вроде 8k или около того), а затем прочитайте из вашего входного потока в ваш массив и запишите в выходной поток.
 Manikandan30 мая 2011 г., 13:05
Geobits, я добавил код, который я использовал для объединения файлов в один файл.

Ваш ответ на вопрос