我正在使用这段代码播放云端的 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();
}
当网址格式类似于“http://something.com/audio.aac”时,代码可以正常工作。
但是,当网址类似于“https://something.com/audio.aac?something_else_here”时,该代码无效,并且会触发错误(0,0)。
在 FFmpegMediaPlayer 之前,我使用了 MediaPlayer ,方法完全相同。有时它有时会遇到同样的问题,所以我想切换到 FFmpegMediaPlayer ,即使它更快,但我没有处理这个错误。
现在有人怎么处理这个问题?
答案 0 :(得分:1)
可能有几个原因导致此错误发生,但我将展示我在我的案例中做了什么。 我认为问题在于链接的结束字符串,但它看起来没问题。
我在项目中通过gradle安装了 FFmpegMediaPlayer :
dependencies {
compile 'com.github.wseemann:FFmpegMediaPlayer:1.0.4'
}
但看起来我正在打电话
player.setDataSource(url);
player.prepareAsync();
https
链接出现问题。
所以,我做的是手动导入支持HTTPS
的AAR包。我下载了它:
https://github.com/wseemann/FFmpegMediaPlayer/releases/download/v1.0.3/prebuilt-aars-with-https.zip
为不同的体系结构编译了几个AAR文件,但是还有一个包含所有体系结构的AAR文件。
所以这就是我的问题的解决方案。
缺点是,如果您选择包含为所有体系结构编译的文件,那么导入此AAR的应用程序大小至少会增加4MB,甚至会增加20MB。
最后我采用了另一种方法,但绝对 Android 应该关注其 MediaPlayer ,因为它给开发人员带来了太多痛苦。