【问题标题】:Convert PCM encoded wav file to amr file using AmrInputStream, but not able to play it using MediaPlayer使用 AmrInputStream 将 PCM 编码的 wav 文件转换为 amr 文件,但无法使用 MediaPlayer 播放
【发布时间】:2011-12-28 21:17:13
【问题描述】:

我正在使用 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标签才能播放。”。但我不知道该怎么做。请帮忙!

【问题讨论】:

  • AmrInputStream 是否支持转换为 amr 16khz?

标签: android-mediaplayer amr


【解决方案1】:

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

【讨论】:

  • 嗨,我在 AMREncode(..) 中遇到了崩溃。你能分享一下适合你的代码吗?
  • 您好,我可以正常使用,但输出 AMR 文件的音质很差。你能得到合适的音质吗?能否请您指出编码器的源代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 2020-09-22
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多