android - Android MediaPlayer无法在线播放音频文件,但如果从本地加载相同的文件则可以很好地工作

标签 android audio media-player android-mediaplayer

当我使用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/

相关文章:

没有 Java 的 Android 主屏幕小部件

android - 由于直线上的点而无法确定角度

html - 关闭音频文件的自动播放

java - 傅立叶变换得到大约一半错误输出

java - 如何通过改造调用处理来自网络的错误

android - AsyncTask 和 JSON - Android

Java 语音聊天延迟

android - android MediaPlayer res原始文件夹getContentUri

java - 在 AppWidgetProvider 中使用 MediaPlayer?

java - 如何删除空指针异常