Вставка записанного аудиофайла (AMR и WAV) в другой файл - PullRequest
2 голосов
/ 19 февраля 2012

Мое приложение 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 Ответ

0 голосов
/ 29 октября 2012

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

...