由“播放器倍速”引发的ExoPlayer实践

本文记录了从MediaPlayer切换到ExoPlayer实现倍速播放功能的全过程,包括解决版本集成、字体错误及代码适配等问题,为遇到相似挑战的开发者提供参考。

第一阶段:

为了实现“倍速功能”,百度设置mediaPlayer的setPlaybackParams(PlaybackParams params)

接口说明:

(1) 使用这个接口可以进行播放速率的设置。

(2) 播放器prepared状态之前调用这个方法不会更改播放器的状态。

(3) prepared状态之后设置速率0等同于调用pause(),当调用start恢复播放以后,将以原来的速率进行播放。

(4) prepared状态之后设置非0的速率等同于调用start()。

(5) 当播放器还未初始化或者已经被释放的时候设置会抛IllegalStateException的异常。

(6) 当参数不支持的时候会抛IllegalArgumentException的异常。

 

然而如网上所说,我的华为手机设置后不但没有看到倍速效果,还播放卡停了,无法恢复播放......

继续百度~

第二阶段:

https://blog.youkuaiyun.com/wc0000000/article/details/94240911

“人家”的实践文档中说明了好几种播放器,说ExoPlayer可以显示倍速且百般好!我就开始模仿,从Github到百度现成的文章....最终就等于播放器的大换血:Mediaplayer换成ExoPlayer

问题1:ExoPlayer最新版本集成不进来。

由于我本地还是26的,看是人家兼容了28(AndroidX),报了错,百度了,两个方向:兼容Androidx或者转成Support;前者照做了一半,意识到这事不简单,我有好些第三方如何让保证都做好AndroidX....随删删,“转Support”只是思想,实际就是我去ExoPlayer更新文档中找到了那个targetsdk设为了28的版本,我集成用的是之前那个版本即可(2.8.4)。

(过程倒是很艰辛,因为我悟性不高,学识浅薄,,没能一下子定位到问题...从各种sdk、build-tools升级开始倒腾....)

 

问题2:如上做了,还报一个font找不到的错,"人家"说这样改:

  compileSdkVersion 27

  buildToolsVersion '27.0.0'

 

 

  compile 'com.android.support:appcompat-v7:27.0.0'

  compile 'com.android.support:support-v4:27.0.0'

  compile 'com.android.support:recyclerview-v7:27.0.0'

  compile 'com.android.support:design:27.0.0'

真的解决了。

 

问题3:集成进来了,但是基于人家实践的功能实现方法,改写我原来MediaPlayer的代码....总有自身逻辑漏洞在,改改改。

(。。。。。)

问题4:曲子播放失败,报错:302,如下处理,混着重定向的问题吧。

https://www.jianshu.com/p/bd088f47c76f

 

 

 

### 实现网页播放器中的倍速播放 #### 使用原生HTML5视频标签实现倍速播放 通过操作`<video>`元素的属性可以直接控制视频的播放速度。具体来说,可以通过设置`defaultPlaybackRate`和`playbackRate`来调整视频的播放速率。 ```javascript document.querySelector('video').defaultPlaybackRate = 2.0; // 设置默认两倍速播放[^1] document.querySelector('video').play(); document.querySelector('video').playbackRate = 3.0; // 修改此值可以设置当前的播放倍数 ``` 这段代码展示了如何利用JavaScript动态改变页面上第一个找到的`<video>`元素的播放速度至二倍速以及三倍速。 #### 利用Video.js库增强功能并支持多级变速 对于更复杂的需求或是希望提供更好的用户体验时,则可以选择使用像Video.js这样的第三方库。这类库通常提供了更加友好的API接口用于自定义配置项,比如`playbackRates`选项就允许指定一系列可用的速度等级供用户选择。 ```html <!-- 引入 Video.js 的 CSS 和 JS 文件 --> <link href="https://vjs.zencdn.net/7.14.3/video-js.min.css" rel="stylesheet"> <script src="https://vjs.zencdn.net/7.14.3/video.min.js"></script> <!-- 定义 video 标签,并应用 playbackRates 属性 --> <video id="my-video" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264" data-setup='{ "playbackRates": [0.5, 1, 1.5, 2] }'> <source src="MY_VIDEO_FILE.mp4" type='video/mp4'> </video> ``` 上述示例中,在初始化Video.js实例的同时指定了多个不同的播放速率给定为数组形式传递给了`data-setup`属性内的JSON对象里作为`playbackRates`键对应的值[^2]。 #### 借助Polyv Player SDK集成高级特性 如果项目需求涉及到更多定制化的交互逻辑或者是特定平台上的优化处理,那么采用专业的SDK可能是更为合适的选择之一。例如Polyv Player SDK不仅能够轻松完成基本的倍速切换,还额外集成了诸如画质调节等功能模块。 ```html <div id="player"></div> <script src="//player.polyv.net/script/player.js"></script> <script> var player = polyvPlayer({ wrap: '#player', width: 800, height: 533, speed: [2, 1.5, 1.2, 0.5], // 提供多种预设的播放速度让用户自行挑选 vid: 'e785b2c81c9e018296671a1287e99615_e' }); </script> ``` 这里展示了一个基于Polyv Player创建播放器的例子,其中`spped`字段用来列举可供选取的不同播放速率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值