Вставка записанного аудиофайла (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 и т. Д.) Новыми данными, даже если новые данные сжимаются по тому же алгоритму.
Чтобы такая замена гарантированно работала, вам необходимо распаковать данные, выполнить замену и снова сжать ее. Это, скорее всего, приведет к дальнейшему ухудшению качества звука.