为什么 MediaPlayer getDuration() 方法 return -1 用于低质量音频?
Why MediaPlayer getDuration() method return -1 on low quality audio?
我现在更新了我的应用 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 如何解决这个问题。
来自文档
the duration in milliseconds, if no duration is available (for example, if streaming live content), -1 is returned.
但你不应该使用这个
mp.getDuration();
而不是这个:
mediaPlayer.getDuration();
?
我切换到 ExoPlayer 现在可以正常使用了。
我现在更新了我的应用 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 如何解决这个问题。
来自文档
the duration in milliseconds, if no duration is available (for example, if streaming live content), -1 is returned.
但你不应该使用这个
mp.getDuration();
而不是这个:
mediaPlayer.getDuration();
?
我切换到 ExoPlayer 现在可以正常使用了。