Android FFmpegMediaPlayer - 媒体播放器错误 (0, 0)

Android FFmpegMediaPlayer - MediaPlayer error(0, 0)

我正在使用这段代码播放云上的 acc,其中 FFmpegMediaPlayer 取自此处:

https://github.com/wseemann/FFmpegMediaPlayer

代码:

FFmpegMediaPlayer player = new FFmpegMediaPlayer();
try {
  player.setAudioStreamType(AudioManager.STREAM_MUSIC);
  player.setDataSource(url);
  player.prepareAsync();
} catch ( IOException | ExecutionException | InterruptedException e ){
      e.printStackTrace();
}

当 URL 格式类似于“http://something.com/audio.aac”时,代码可以正常工作。

但是,当 URL 类似于“https://something.com/audio.aac?something_else_here”时,该代码不起作用,它会触发 en Error(0,0)

FFmpegMediaPlayer 之前,我使用了 MediaPlayer,方法完全相同。有时它有同样的问题有时没有,所以我想切换到 FFmpegMediaPlayer 即使它更快,但我没有处理这个错误。

请问现在有人如何处理这个问题吗?

发生此错误的原因可能有多种,但我将展示我在我的案例中做了什么。 我认为问题出在 link 的结尾字符串,但看起来没问题。

我在我的项目中通过 gradle 安装了 FFmpegMediaPlayer

dependencies {
    compile 'com.github.wseemann:FFmpegMediaPlayer:1.0.4'
}

但看起来我打电话时

player.setDataSource(url);
player.prepareAsync();

https link 有问题。

所以,我所做的就是手动导入支持HTTPS的AAR包。我下载在:

https://github.com/wseemann/FFmpegMediaPlayer/releases/download/v1.0.3/prebuilt-aars-with-https.zip

有几个针对不同架构编译的AAR文件,但也有一个包含所有架构的AAR文件。

这就是我的问题的解决方案。

缺点是如果您选择包含为所有体系结构编译的文件,则导入此 AAR 后应用程序的大小将至少增加 4MB,甚至增加 20MB。

最后我采用了另一种方法,但肯定 Android 应该注意它的 MediaPlayer 因为它给开发者带来了巨大的痛苦。