最近在做一个通过看视频学习英文的项目,所以要用到视频解码器,早些用的是Vitamio,但发现Vitamio有几个缺点:

  1. 有些视频解码的速度不够理想,比如我播放720p的mkv文件,偶尔会有卡顿
  2. 个人版免费,企业版收费,听说要40w起
  3. 官网信息更新不及时,比如一些API的介绍都是很老的版本了,查东西都不好查
  4. 没有技术支持,网上新的sdk的资料也不多,更新慢
  5. 新版本5.0.2的字幕加载功能无法使用(这个是我放弃的主要原因)

总之诸事不顺,让我放弃了Vitamio,转而寻找其他解决方案,最后找到了VLC,VLC的强大我就不说了,自己google吧,能解决以上5点问题。

由于Vitamio先入为主,在调用接口上Vitamio和Android官方的VideoView接口十分相似,这就是为什么Vitamio使用起来简单的原因。所有后来用VLC时感觉调用接口很别扭,于是自己封装了个VideoView专门用于视频播放,实现了大部分接口,demo地址

使用方法

  • 将vlc library引入到自己的工程。我已经将vlc for android sdk打包成library。vlc for android sdk用的是2.0.2的最新版本,打包方法我将会在另一篇帖子中描述。vlc library里我改写了VideoView,并通过调用vlc for android sdk实现了大部分接口。

vlc_sdk_library

  • 添加核心布局文件如下:

  • 在你的VideoActivity中调用如下方法即可播放视频,另外VideoView里还封装了很多接口,自己去探索吧。

效果图

com.shirlman.yiplayer_video_controller

结语

我会在YiPlayer项目中使用该vlc library,并不断完善其VideoView的功能,如果大家有兴趣的话欢迎fork项目,这样你能第一时间获取到vlc for android sdk的最新版本和完善的VideoView功能。比如后续会加入第三方的字幕解析库,因为VLC的字幕是直接通过SurfaceView刷新到UI上的,并不能获取其text文本做定制化的操作,所以之后还会实现setOnTimedTextListener字幕同步接口,使得可以获取text文本。