mediaPlayer播放网络音频遇到的坑

最近在做公司项目的时候,有一个录音的需求,需要实现录音完成后上传服务器,并在其他页面从服务器获取录音的url进行在线播放,本来一切运行正常,在手机上也能正常播放,结果在碰到一台华为手机后我的噩梦就开始了。下面是我的代码:

try{
    mPlayer = new MediaPlayer();
    mPlayer.setDataSource(url);
    mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {
            mPlayer.start();
    }
   
    mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
    @Override
    public void onCompletion(MediaPlayer mp) {       
            if(mPlayer!=null){
            mPlayer.release();
            mPlayer=null;
           }
    }
  });
  mPlayer.prepareAsync();
}catch(IOException e){
}
        

在这台华为手机上每次一执行到mPlayer.prepareAsync()就会报错: java.io.IOException: Prepare failed.: status=0x1,在网上搜解决方案试验了都不行,而这个报错又是个通用的未知错误,也不太好定位错误原因,然后我就开始寻找原因,首先先将服务器上的音频文件下载到本地,然后用mediaPlayer进行播放,可以正常播放,于是排除了解码的原因,然后我就怀疑是URL的问题(我们的项目url地址是https的),然后我就自己搭建了一个http的后台,把录音文件放上之后,果然可以播放了。原来是HTTPS导致的。

不过为什么会这样我也不太清楚,希望能够帮到那些与我有同样问题的猿人们,也希望知道原因的大神可以留言告诉我一下,万分感谢。

你可能感兴趣的:(mediaPlayer播放网络音频遇到的坑)