VLC是pc时代流媒体播放器的标杆,相信你们都有接触。VLC的流媒体部分是基于开源的live555库。live555的代码我稍微看过一些,基于C++的,说实话,代码写的有点乱,不太符合一个开源库的档次。不过,live555的有点是兼容性至关的好,不少不是很标准的流媒体码流,都能适当兼容。也正由于此,VLC做为一款播放器,较受欢迎。java


最近我在开发一个android app,须要用到流媒体播放器,主要用于播放网络上的http流媒体和rtsp流媒体。固然,第一想法确定是直接用android自带的mediaplayer(用的是封装后的videoview)。事实上,mediaplayer也至关不错,完美支持http。可是在支持rtsp上,不是很好,主要表如今缓冲时间较长,编程接口少,而且有些rtsp连接没法播放。android


因而开始关注第三方播放器,可选的是两个:一个是vlc,老牌播放器,兼容性好,口碑好,可是在android平台上刚移植出来,稳定性易用性什么的都没保障。还有一个是国人开源项目vitamio,它是专门针对android设计的,接口很是易用(直接封装成videoview了,而且接口基本与android自带的videoview如出一辙,能够直接替代)。可是vitamio也存在与系统mediaplayer同样的问题,对于某些rtsp一样没法播放。因此我很怀疑vitamio不过是把android自己的mediaplayer和videoview拿出来本身作了一个开源项目。对于系统mediaplayer不满意的能够用vitamio,编程接口多,而且能避免不一样机子对mediaplayer和videoview实现差别引发的兼容性问题。编程


因此我就选了vlc。直接去vlc官网下载vlc for android,包括源码包和vlc app。项目中使用的话,直接把源码中的LibVLC那个目录拖进本身的工程就行了。LibVLC java代码就是封装了C库jni接口,对外提供了一个LibVLC对象,初始化、播放、中止,这些接口是很明确的,直接拿来用就好了,咱们只须要本身再封装一个videoview,把图像显示在view上就能够了。网络


至于vlc依赖到的so库,其实很简单,不用按网上的去本身编译,直接把vlc app解压开来,把里面一共4个so拖到本身项目来就好了。呵呵呵,尼玛这是有多懒。app


补充vlc一个bug:对于http流媒体,调用stop接口会阻塞很长一段时间。具体缘由未研究,最后在项目中我就一分为二了,对于http流媒体,仍使用系统自带videoview。ide