Преобразуйте wav-файл в кодировке PCM в файл amr с помощью AmrInputStream, но не можете воспроизвести его с помощью MediaPlayer - PullRequest
2 голосов
/ 29 декабря 2011

Я конвертирую wav-файл, закодированный в формате PCM, в файл amr в Android, используя AmrInputStream. Я использовал код из поста ниже:

преобразование PCM-16 в AMR с использованием AmrInputStream

Все работает нормально, также генерируется файл amr. Однако, когда я попытался воспроизвести его с MeidaPlayer, он выдал следующее исключение:

   java.io.IOException: Prepare failed.: status=0xFFFFFFFC  
      at android.media.MediaPlayer.prepare(Native Method)

Я заметил, что в приведенном выше сообщении упоминается: «требуется добавить тег #AMR! \ N в выходной файл для воспроизведения». но я не знаю, как это сделать. Пожалуйста, помогите!

1 Ответ

2 голосов
/ 29 декабря 2011

Хорошо, я заставил это работать.необходимо добавить тег в первые 6 байтов выходного файла:

    InputStream inStream;
    inStream = new FileInputStream(wavFilename);
    AmrInputStream aStream = new AmrInputStream(inStream);

    File file = new File(amrFilename);        
    file.createNewFile();
    OutputStream out = new FileOutputStream(file); 

    out.write(0x23);
    out.write(0x21);
    out.write(0x41);
    out.write(0x4D);
    out.write(0x52);
    out.write(0x0A);    

    byte[] x = new byte[1024];
    int len;
    while ((len=aStream.read(x)) > 0) {
        out.write(x,0,len);
    }

    out.close();
...