为什么MediaPlayer getDuration()方法在低质量音频上返回-1?

时间:2019-05-19 02:03:35

标签: android android-mediaplayer android-api-levels

我现在将我的应用程序Android API-23更新为API-28 MediaPlayer getDuration()方法 return -1 ,在api-23 getDuration方法中工作正常,但在最新的api有问题。使用低质量(即16kbs)的音频时。但是同时我使用高质量(64kbs至192kbs)可以正常工作。

MediaPlayer mp;
// 128kbs working fine in my app 
mp.setDataSource(http://www.villopim.com.br/android/Music_02.mp3);
// return actual time    
mp.getDuration();

// 16kbs working fine in my app 
mp.setDataSource(http://topappstopgames.com/appsdata/islamic/sn002.mp3);
// return -1    
mp.getDuration();

因此,如何在最新的api中解决此问题。

2 个答案:

答案 0 :(得分:1)

来自文档

  

持续时间(以毫秒为单位),如果没有持续时间可用(例如,如果正在流式传输实时内容),则返回-1。

但您不应该使用

mp.getDuration();

代替此:

mediaPlayer.getDuration();

答案 1 :(得分:0)

我现在转到ExoPlayer,它开始工作了。