如何在android中播放字节的音频流?

时间:2010-11-09 15:32:11

标签: android audio

我正在开发一个能播放mp3文件的Android应用程序。但是mp3文件是在SD卡或sqlite上加密的。无论哪种方式,在解密之后,我都会有一个字节流。我怎么玩他们? MediaPlayer不将输入流作为参数,因此我不能考虑这一点。

3 个答案:

答案 0 :(得分:2)

我认为您需要将流存储到文件系统;那么您可以尝试使用MediaPlayer

setDataSource方法
FileInputStream rawmp3file= new FileInputStream(yourByteArrayAsMp3File);
mediaPlayer.setDataSource(rawmp3file.getFD());

如果您可以切换到PCM音频源,请查看AudioTrack类。

  

AudioTrack类管理和播放   Java的单一音频资源   应用。它允许流式PCM   音频缓冲到音频硬件   用于播放。这是通过   将数据“推送”到AudioTrack   对象使用其中一个写(byte [],   int,int)和write(short [],int,int)   方法

答案 1 :(得分:0)

这并不容易。我以前在黑莓手机上做过这样的事情,所以我敢打赌它在Android上也可行。

如果我是你,我会为自定义的“encryptedmp3:”协议注册一个新的提供商。然后我会在MediaPlayer的数据源中指定它:

mediaplayer.setDataSource(this, URI.parse("encryptedmp3://....yourfile"));

我不确定如何在Android上创建新的协议处理程序。

我希望这会有所帮助。

灵光

答案 2 :(得分:-1)

查看BASS library(免费用于非商业用途) 以下是Android的链接:http://www.un4seen.com/forum/?topic=13225.0

BASS_StreamCreateFile功能:

HSTREAM BASS_StreamCreateFile(
    BOOL mem,
    void *file,
    QWORD offset,
    QWORD length,
    DWORD flags
);

参数:

mem     TRUE = stream the file from memory.
file    Filename (mem = FALSE) or a memory location (mem = TRUE).