【问题标题】:Why MediaPlayer getDuration() method return -1 on low quality audio?为什么 MediaPlayer getDuration() 方法在低质量音频上返回 -1?
【发布时间】:2019-10-05 20:03:43
【问题描述】:

我现在将我的应用程序 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 中解决这个问题。

【问题讨论】:

  • 好的,亲爱的@zoe 我明白了。

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


【解决方案1】:

来自文档

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

但你不应该使用这个

mp.getDuration();

而不是这个:

mediaPlayer.getDuration();

?

【讨论】:

  • 亲爱的内容在服务器上可用,但总是返回-1,我不知道为什么。我用户 mp.getDuration() 现在问题已更新。
  • 如文档中所说,没有可用的持续时间
  • 我分享了有问题的链接。它在以前的 api 中工作,但现在不工作
【解决方案2】:

我转移到ExoPlayer 现在它正在工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多