移动终端播放器的探索历程

android和iOS系统原生的播放器,不支持字幕,因此需要找一款能支持外挂字幕文件的播放器。
一、移动终端播放器
1. Vitamio是一款 Android 与 iOS 平台上的全能多媒体开发框架,使用了FFmpeg做为媒体解析器和最主要的解码器。但ios没有合适的播放控制界面,更要命的是永久授权需要80万,太贵了。

2. ExoPlayer是一个google在2014年才推出的介于现有MediaPlayer和自定义媒体播放器之间的预建播放器,由于其基于MediaPlayer API Level 16+开发, 所以其只支持API Level 16+, 即Android 4.1+,其只有android版本,这样iOS还得找其它播放器,
根据资料显示,其支持的字幕格式为TTML,需要将srt转换为TTML方能显示。

3. sewise,是一款html5的网页播放器,不适合我们这种原生代码的app,只能放弃。

4. JWPlayer推出了android和iOS的SDK,也支持srt字幕,不过每一个sdk的授权费用是500美元/月,2个SDK一年就得7.8万人民币,十年就是78万,坑爹啊!

5. 最后把目光落到了vlc: 开源,支持android和iOS,支持srt字幕,太棒了!


二、vlc for android
首先在网上找到了vlc-0.9.8_eclipse,确实能编译,可界面不好看,与最新的版本差别很大了。
翻墙,度娘,google,试图在网上找到编译好的、就界面部分是java的工程,以失败告终。
走投无路,只有最后一招:编译最新的源程序。
这个过程还算比较顺利,请参见: http://blog.csdn.net/happyweb/article/details/50973991

但在集成vlc播放器到自己的app中却遇到了很多麻烦:先后熟悉了android studio,Gradle,aar,Data binding,Dex 65536
1. Android Studio: 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试,基于Gradle的构建支持,支持aar......关键的一点是其为google推出,你懂的。
2. Gradle:面向JAVA(据说以后会支持其它语言)的项目自动化建构工具,吸收了Apache Ant和Apache Maven的优点,目前主流的IDE都支持Gradle,比如ieda,Android Studio,一些开源的项目都采用Grale进行自动构建了。
3. aar 文件:其实就是一份 zip 包,和 jar 不同的是,它将一些资源文件、第三方库文件、so 文件等等都打包在内,而代码文件编译后压缩在在 classes.jar 中。
4. Data binding:其实就是数据绑定,IDE根据布局文件中的<data>元素自动产生一个POJO文件,在布局文件中可以使用<data>元素中的变量。其对应的java文件中实例化POJO文件,从而更新了视图。具体实例参见: http://blog.csdn.net/happyweb/article/details/51099931
5. Dex 65536:谷歌规定单个dex文件中的方法不能超过65536的限制。而因为vlc的需要导入了太多的jar文件导致出现Dex错误,移除任意一个都不会出现Dex错误,从而确认是Dex 65536问题,解决办法就是把没有必要的一些jar文件给移除了。

代码分析:
1.找核心点,以该点为中心查找相关的代码、资源:
  通过布局文件或者在可编译的程序中添加弹出信息框,可以确认某一个文件是否是所需的核心点。
  视频播放的核心程序是:org\videolan\vlc\gui\video\VideoPlayerActivity.java,而音频播放的核心程序是org\videolan\vlc\gui\AudioPlayerContainerActivity.java;
2.排除法:
  根据目录名、文件名及代码,可以将一些与集成目标无关的代码、资源(如:文件查找、对话框等)直接去掉,从而缩小范围。
3.先初后细:
  刚开始可以将项目的图片、颜色、字符串等资源全部拷贝过去,而不是以一个资源去找,尽量将时间花在核心点相关的代码、布局文件的查找、修改。
4.缺失文件:

  从Android SDK、Ubuntu 下面查找,拷贝到自己的目录下,如:BuildConfig.java


目前存在的问题:在三星i9100G(Android  2.3.6)上出现"freetypespu text: SelectAndLoadFace: no font found for family: Droid Sans, codepoint:0x90a3",这个应该是字体找不到,在联想的Lenovo A320t(Android 4.4.2)可以正常显示utf-8的srt和web vtt字幕文件。

 
三、vlc for iOS
在度娘上找到几篇相关文章,试图编译,失败。最后还是 http://nightlies.videolan.org/build/ios/下载已编译好的适用各个平台的MobileVLCkit.framework,最新的下载文件中还包含有demo程序。
目前存在的问题是:在虚拟机及iPad中字幕没有显示,而在iPhone 5s却显示正常。

以上为探索移动终端app过程中艰难历程,回头看,有的地方明显走了弯路,这和相关的基础知识及处理问题的能力有关,非一朝一夕能提高的,只能逐步积累了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值