Вставка записанного аудиофайла (AMR и WAV) в другой файл

Мое приложение для Android записывает аудио в обоих AMR а также WAV формат. И мое приложение должно вставить второй записанный аудиофайл в первый в месте, где он был приостановлен. Я сделал это правильно с WAV файлы, но AMR Файл после вставки не может быть воспроизведен в Android MediaPlayer, он выдает некоторую ошибку, когда достигает вставленной позиции. Но тот же файл хорошо воспроизводится в проигрывателях AMR.

Шаги, которые я выполнил:

1. Запись данных из файла1 в позицию паузы:

raf3=new RandomAccessFile(result,"rw");
raf3.setLength(0);
int d=0;
//Write data from record1 upto the pause position
while(d!=pos)
{
raf3.write(bytes[d]);
d++;
}

2. Запись данных для вставки из файла2

//write all the data from record 2 
int l=0;
raf3.writeBytes(" ");
while(l!=bytesread1)
{
raf3.write(bytes1[l]);
l++;
}

3. Запись оставшихся данных из файла1 после позиции паузы

while(d!=size){
raf3.write(bytes[d]);
d++;
}

Что-то не так с тем, что я сделал?

1 ответ

Вы не можете обязательно заменить данные в сжатом потоке (AMR, MP3, AAC и т. Д.) Новыми данными, даже если новые данные сжимаются по тому же алгоритму.
Чтобы такая замена гарантированно работала, вам необходимо распаковать данные, выполнить замену и снова сжать ее. Это, скорее всего, приведет к дальнейшему ухудшению качества звука.

Другие вопросы по тегам