在MediaPlayer类中,只支持两种数据源模式:文件名和Raw Resourse;如果音频数据在内存缓冲区中,以现有接口无法播放。我觉得有两种可能方式实现内存播放,第一种是创建一个RamDisk文件,再使用MediaPlayer接口进行播放;第二种是把
MP3文件decoding后作为PCM格式放在内存缓冲区中,通过TrackAudio类的接口进行播放。理论上说,第一种方法比较简单,不知道是否可以在java中创建RamDisk。第二种方法需要提供对各种音频文件的Decoding,工作量较大,不知道是否有哪位大侠做过这样的接口。

解决方案 »

  1.   

    第一种可以啊,MemoryFile,第二种自己写个解码器,android有ndk支持,几种方法都没问题,呵呵
      

  2.   

    android播放网络音频(缓冲区音频)
    http://hi.baidu.com/wishwingliao/blog/item/55e77f89234474af0f244438.html
      

  3.   

    都需要转成声卡能播放的PCM数据啊!只不过第一种应该已经是吧,不懂
      

  4.   

    经对MemoryFile类的研究及测试,不能无法播放MP3。至于自己写一个解码器,那就复杂了,且要兼容各种音频压缩格式,仅仅MP3就有很多格式。我的本意是想利用Android自己的解码器,但似乎没有开放这样的接口。呵呵,还是要感谢各位回帖朋友。