资讯专栏INFORMATION COLUMN

App增加倍速视频的坎坷之路

Integ / 2376人阅读

摘要:为了增加倍速功能,并保持系统版本兼容,一开始选择的是集成播放器的方案。版本后,增加了倍速播放功能,但本身结构比较庞大,集成难度较高,增加了后续维护的难度,在使用一段时间后,开始考虑给端更换另外一种倍速方案。

课程视频越来越长,学习时间越来越少。面对这些场景,很多视频播放的App都增加了倍速功能,可以开启0.5x、1.5x甚至2.0x等倍速,用于增强播放功能。 iOS系统播放内核的强大,很轻松的应付了产品经理提出的这个需求,但是面对市场上数不清的Android系统版本和设备,这让Android客户端增加倍速功能,无疑又新添了一道门坎。

        为了增加倍速功能,并保持系统版本兼容,一开始选择的是集成vlc播放器的方案。vlc 2.x版本后,增加了倍速播放功能,但vlc本身结构比较庞大,集成难度较高,增加了后续维护的难度,在使用一段时间后,开始考虑给Android端更换另外一种倍速方案。

        这次是集成Google ExoPlayer的播放器,ExoPlayer本身在Android 6.0系统及以上,支持系统级别的倍速播放功能,能更好的利用设备硬件功能。ExoPlayer本身出自Google之手,是官方推荐的播放器,对Android系统兼容较好,并且设计结构简单易懂,容易扩展。

       但是遗憾在6.0以下就不支持倍速设置。得益于ExoPlayer可扩展性很强,支持对视频、音频等渲染器做扩展,通过改变默认音频渲染器的音频输出,可以加快音频流的速度,在ExoPlayer中,保持音视频同步,一般是视频跟着音频的速率走,所以我们调整音频的速率,就同时也改变了视频。音频流的速率调整可以通过一个三方库Sonic(https://github.com/waywardgee...)来改变。

        当播放器进行构建音频渲染器的时候,可以根据Android系统版本选择不同的音频渲染器。当Android系统是6.0及以上时,我们使用默认的MediaCodecAudioRenderer,6.0以下时,就使用自定义的音频渲染器SonicMediaCodecAudioTrackRenderer。
       

        SonicMediaCodecAudioTrackRenderer的核心,就是拿到音频流的buffer,使用Sonic对这段buffer数据流进行速率调整处理,然后把调整后的buffer流送给音频渲染器,这样就更改了音频速率。
       

        SonicMediaCodecAudioTrackRenderer本身也继承至MediaCodecAudioRenderer类,在onOutputFormatChanged方法里,我们初始化Sonic和一些缓存buffer数组,并配置速率。

        processOutputBuffer方法会在音频渲染器工作的时候被调用,在这里使用Sonic来改变原始的音频流buffer数据,并把转换后的流buffer传递给播放器播放。
       

        在Android 6.0的系统上,我们只要给默认的MediaCodecAudioRenderer渲染器配置PlaybackParams参数就可以实现倍速播放了。
       

        至此,完成了ExoPlayer对倍速功能的支持,并兼容到了多个Android系统版本。在集成到Android项目中,无论从代码耦合结构,还是播放器扩展性、易读性,ExoPlayer无疑比vlc更具优势。
       
欢迎加入学习交流群569772982,大家一起学习交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67746.html

相关文章

  • 移动端快速接入语音播报

    摘要:最近在忙一个小程序蓝牙秤的项目,开发环境为小程序,上传物料的时候需要用到语音播报即将文字转换为语音,于是开始研究,试了几个,最终使用腾讯的来完成这个功能。 最近在忙一个小程序蓝牙秤的项目,开发环境为php+小程序,上传物料的时候需要用到语音播报(即将文字转换为语音),于是开始研究,试了几个,最终使用腾讯AI的API来完成这个功能。官网上(http://ai.qq.com/)也有相应教程...

    elarity 评论0 收藏0
  • 阿里云AI如何助攻世界杯?视频集锦背后技术实践

    摘要:可预见的未来激情赛事已经过半,阿里云视频技术在本次世界杯中也成功落地,而这并不是结局,这是将视频应用于体育行业以及更多其他行业的开端。 本届世界杯互联网直播的顺利进行,离不开各大云计算厂商的支持。在这其中,阿里云是当之无愧的C位,除了优酷外,阿里云还支撑了CNTV、CCTV5客户端,为全网70%的世界杯直播流量保驾护航。 对于世界杯这种超大观看量级、超强影响力的重要体育赛事,阿里云一直...

    BothEyes1993 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<