【发布时间】:2020-01-03 15:27:38
【问题描述】:
我正在使用MediaPlayer 加载一个mp3 文件并在线播放。我正在使用此代码:
try{
Log.i("tag1", "try");
mediaPlayer.setDataSource(activity.this, Uri.parse("link"));
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
Log.i("tag2", "" + mediaPlayer.getDuration());
}
});
} catch(IOException e) {
e.printStackTrace();
}
大多数时候什么都没有准备,所以我得到log.i的结果如下:
tag1 = try
tag2 永远不会被执行
如果,有时只准备mediaPlayer,我会得到这些日志:
tag1 = try
tag2 = 0_既不可接受也不可用
另外,当我调用mediaPlayer.setOnErrorListener 时,我收到错误1,-1004 或1,-2147483648。此外,mediaPlayer.setOnInfoListener 什么也不提供;我认为它从未被调用...
可能是什么问题?
不用说,在服务器文件管理器的log文件夹中,我发现了这个:"stagefright/1.2 (Linux; Android 4.4.4)"。我认为这可能有助于解决问题。 另外,与此相关,问题可能是由 PHP 扩展引起的吗?如果是,激活哪个扩展可以解决这个问题?
非常感谢任何帮助。
【问题讨论】:
-
试过
setOnErrorListener?如果是这样,onError回调中的int what和int extra是什么?还要检查setOnInfoListener -
致电
setOnPreparedListener之前致电prepareAsync。 -
我相信你已经看到了,但万一没有:这是一个非常有用的 MediaPlayer 状态机流程图。如果你从这里转移,你会遇到问题:image.slidesharecdn.com/mediaplayer-110716092828-phpapp02/95/…
-
您是否尝试过先下载文件然后使用它而不是直接流式传输?另外,您是否尝试过其他可能具有不同编解码器的文件?
-
您仍然应该尝试一下,只是为了缩小错误空间,以便更容易查明实际问题。因为,如果事先下载它使它工作,那么你知道问题出在流媒体上。如果它没有帮助,您知道它是您的实现还是文件。总是让你的问题尽可能小
标签: java android android-mediaplayer