当我使用android MediaPlayer播放来自服务的音频流时发生了一些奇怪的事情。这是我的音频流url:
http://7xk2r8.com1.z0.glb.clouddn.com/rNeDSn1Octc
当我将其与MediaPlayer一起使用时,如下所示:
mediaPlayer.setDataSource("http://7xk2r8.com1.z0.glb.clouddn.com/rNeDSn1Octc")
onCompleteListener将立即被调用
但是,如果我从url上方的文件下载到android设备,并使用MediaPlayer像这样从本地加载文件:
mediaPlayer.setDataSource("local path")
一切正常!
我认为错误可能来自流文件本身,但我不知道为什么,我在其中丢失了大约两个星期,帮助!!!!
PS:我为MediaPlayer使用了最简单的代码,所以我认为我的代码很好,我确定音频流文件本身的错误,可以测试该文件吗?上面的文件URL完全是公开的。谢谢!
最佳答案
我有同样的问题。 Mediaplayer有时无法加载网络代理等的原因。您可以调用prepareAsync(),但永远不会调用onPrepared()。因此,我添加了一个 bool(boolean) 标志,如下所示:
@Override
public void onPrepared(MediaPlayer mp) {
isPrepared = true;}
@Override
public void onCompletion(MediaPlayer mp) {
if(isPrepared) {// Do your code}
关于android - Android MediaPlayer无法在线播放音频文件,但如果从本地加载相同的文件则可以很好地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314301/