手机牛牛播放器怎么选?看这篇攻略就够了!

tmyb

今天跟大家伙儿唠唠我搞的这个“手机牛牛播放器”,纯粹是自己瞎折腾,水平有限,大家凑合看哈。

起因是这样的,我平时喜欢下点小电影啥的,结果手机自带的播放器格式支持太少,动不动就提示“无法播放”,烦都烦死了。网上搜了一圈,各种播放器广告满天飞,不是要你充会员,就是要你下乱七八糟的APP,简直没法用。

寻思着,不如自己搞一个得了。反正闲着也是闲着,就当练手了。说干就干,第一步肯定是找轮子,看看有没有现成的代码可以抄…咳咳,学习一下。

手机牛牛播放器怎么选?看这篇攻略就够了!

第一步:调研和选型

  • 播放器内核:一开始想自己写解码器,后来发现那是找死,直接放弃。搜了一圈,发现VLC的内核比较靠谱,开源免费,支持格式多。就它了!

  • 手机牛牛播放器怎么选?看这篇攻略就够了!

    开发语言:本来想用Java,毕竟熟悉。但是考虑到性能,以及VLC有C/C++的接口,最终还是决定硬着头皮上C++。

  • 开发环境:Android Studio + NDK,这套环境之前没用过,现学现卖,磕磕绊绊的。

手机牛牛播放器怎么选?看这篇攻略就够了!

第二步:搭建框架

先用Android Studio搭了个空壳APP,只有一个播放界面。然后开始折腾NDK,把VLC的*库编译出来,导入到工程里。这一步花了我不少时间,各种编译错误,简直要崩溃。还是靠Google大法,一点一点解决。

第三步:对接VLC

这一步是重头戏,要用C++代码调用VLC的接口,实现视频播放。这部分代码比较复杂,涉及到:

  • 手机牛牛播放器怎么选?看这篇攻略就够了!

    创建VLC实例

  • 设置播放窗口

  • 手机牛牛播放器怎么选?看这篇攻略就够了!

    加载视频文件

  • 控制播放、暂停、停止

手机牛牛播放器怎么选?看这篇攻略就够了!

我参考了VLC的官方文档,以及网上的一些例子,一点一点的把代码写出来。中间遇到各种问题,比如画面显示不出来、播放卡顿、程序崩溃等等。只能一遍一遍的调试,打印日志,查找原因。

第四步:界面优化

基本的播放功能实现后,就开始优化界面。加了播放控制按钮,进度条,音量调节等等。这些都是Android的基础控件,比较简单。还加了个文件选择功能,可以浏览手机里的视频文件。

第五步:格式支持

VLC本身支持的格式就很多,基本上常见的MP4、AVI、MKV都没问题。我还加了一些特殊格式的支持,比如RMVB、FLV等等。这部分主要是靠VLC的解码能力,我只需要简单配置一下就行了。

第六步:性能优化

手机牛牛播放器怎么选?看这篇攻略就够了!

播放器写出来之后,发现在一些老旧手机上播放比较卡顿。就开始进行性能优化,主要做了以下几点:

  • 降低视频分辨率

  • 手机牛牛播放器怎么选?看这篇攻略就够了!

    开启硬件加速

  • 优化内存管理

手机牛牛播放器怎么选?看这篇攻略就够了!

经过优化后,播放流畅度明显提升。

第七步:打包发布

一步就是打包成APK文件,发布到手机上。我没打算发布到应用市场,就自己用着玩。

总结

整个过程大概花了我一个月的时间,虽然最终做出来的播放器功能比较简单,界面也很简陋,但是也学到了不少东西。比如:

    手机牛牛播放器怎么选?看这篇攻略就够了!

  • Android NDK开发

  • VLC的使用

  • 手机牛牛播放器怎么选?看这篇攻略就够了!

  • 视频播放原理

最重要的是,享受了自己动手解决问题的乐趣。以后有机会,还会继续折腾一些更有意思的东西。

就说这么多,各位看官,下次再见!

手机牛牛播放器怎么选?看这篇攻略就够了!