使用AmrInputStream将PCM编码的wav文件转换为amr文件,但无法使用MediaPlayer播放它

时间:2011-12-28 21:17:13

标签: android-mediaplayer amr

我正在使用AmrInputStream将PCM编码的wav文件转换为Android中的amr文件。我使用了下面的代码:

converting PCM-16 to AMR using AmrInputStream

一切正常,并且还生成了amr文件。但是,当我尝试使用MeidaPlayer播放时,它会抛出以下异常:

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

我注意到在上面的帖子中,它提到:“需要将#AMR!\ n标签添加到输出文件中才能播放。”但我不知道该怎么做。请帮忙!

1 个答案:

答案 0 :(得分:2)

好的,我让它运转了。需要在输出文件的前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();