ijkplayer倍速变声的问题

我们的项目有一个要求,要能实现倍速播放。在几个文案中我最终选择了ijkplayer,在解决了一系列问题后终于可以正常播放音视频了,却发现在倍速的时候在某些手机上声音变调了,变得很怪。于是网上查了一下,解决方案:

 

网上说0.8.8版本解决变声,不需要重新编译c代码,只需要在java代码里加上如下配置:

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", 0); 

配置成1是变声,0是不变声

但是事实上,经过我的实践发现配置成1才是不变声,0是变声。

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", 1);

另外还有一点很重要的,这个配置放在哪个地方也决定了能否起作用,关于这一点我踩了好多坑:

坑一:放在mediaPlayer.setSpeed前面是不行的,

坑二:直接在new IjkMediaPlayer 后面也是不行的

第三次试验,按照github上一位大哥说的,要放在prepare之前。https://github.com/bilibili/ijkplayer/issues/3569

我的代码里 面只有 mMediaPlayer.prepareAsync()这个,于是我就在prepareAsync之前了, 代码位置如下:

    /**
     * 添加file文件到MediaPlayer对象并且准备播放音频
     */
    private void prepareMusic(String musicUrl) {
        //获取文件路径
        try {
            mMediaPlayer.stop();
            mMediaPlayer.reset();
            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            //此处的两个方法需要捕获IO异常
            //设置音频文件到MediaPlayer对象中
            mMediaPlayer.setDataSource(musicUrl);
            mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", 1);
            mMediaPlayer.prepareAsync();
        } catch (IOException e) {
            Log.d(TAG, "设置资源,准备阶段出错");
            e.printStackTrace();
        }
    }

运行起来一播放, 不变调了,大功告成!!!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值