Java 在Android中使用Mediaplayer解密时流式播放音频文件

Java 在Android中使用Mediaplayer解密时流式播放音频文件,java,android,audio,encryption,Java,Android,Audio,Encryption,我有一些本地存储的mp3文件,这些文件已经加密。我想在文件解密时播放(流式播放)文件,而不是等待它们完成解密,然后流式播放。但是,当我使用FileDescriptor并尝试流式传输内容时,我得到一个IOException: Unable to to create media player setDataSourceFD failed.: status=0x80000000 java.io.IOException: setDataSourceFD failed.: status=0x8000000

我有一些本地存储的mp3文件,这些文件已经加密。我想在文件解密时播放(流式播放)文件,而不是等待它们完成解密,然后流式播放。但是,当我使用FileDescriptor并尝试流式传输内容时,我得到一个IOException:

Unable to to create media player
setDataSourceFD failed.: status=0x80000000
java.io.IOException: setDataSourceFD failed.: status=0x80000000
    at android.media.MediaPlayer.setDataSource(Native Method)
    at android.media.MediaPlayer.setDataSource(MediaPlayer.java:976)
如何解决此问题并在解密时流式传输内容


另外,我可以播放已经解密的文件,但我希望它们在解密过程中播放,以减少音频播放所需的时间

如果您没有解密的文件,您从哪里获得此
文件描述符
?可能相关:@commonware我正在使用Apache Shiro进行解密。由于正在使用的OutputStream是FileOutputStream的一个实例,我正在检索此流的FileDescriptor,并试图将其传递给MediaPlayer::setDataSource方法。@Duncan您指出的相关问题有一个自己接受的答案,但不能解决问题。正如我指出的,该文件是有效的,因为它在解密后播放。我需要使用的功能与使用http等协议的远程流媒体类似,它不等待文件的完整下载。我希望来自
FileOutputStream
FileDescriptor
用于写入,而不是读取。