2

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

使用 AmrInputStream 将 PCM-16 转换为 AMR

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

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

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

4

1 回答 1

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();
于 2011-12-29T15:04:36.600 回答