本文主要从实际的角度去解读和选型
入职新公司,需要做一款涉及到播放器,播放rtsp 流的app,要求到我来选型,并给了我下面三个选择
在这之前我只是一名普普通通的安卓应用开发工程师,没有接触过音视频,如果你也和我一样,那么这件事真的太酷啦
然后就是为期几天的对比与选型
遇事不决问群友,群友给我推荐了vlc这个开源的播放器,并友好的向我推荐了文章和vlcDemo,我记不得是否是他自己的文章和demo了,这是连接
然后我浏览了vlc的github地址和示例代码的地址,并参考上面两个连接,实现了一个简单的vlcdemo,也对其有了一点简单的了解
优点:
缺点:
最终因为Android 平台编译出的包较大这个缺点,没有采用vlc。
然后就是EXOplayer的调研,什么?你问我为什么不先调研其他的,我有我自己的考量好吧,你不要教本安卓开发做事,首先我们排除mediaplayer,因为百度过后基本没有推荐的,然后就是Ijkplayer已经是一个哔哩哔哩不维护的开源项目了,而EXOplayer是谷歌开源的持续维护的,你说我先调研谁?好了,话不多说,我们骑上心爱的,开始。
我先找到EXOplayer的github地址 :https://github.com/google/ExoPlayer
然后找到文档:https://exoplayer.dev/
然后就狗血的发现啊这个EXOplayer啊,他套娃
然后我又去安卓官网看:https://developer.android.google.cn/guide/topics/media/exoplayer?hl=zh_cn
好好好,你官方这么玩是吧❔,我整个一看下来,发现EXOplayer的最新依赖已经带media3的前缀了,前面几个版本还有前缀不同的代码相同的库,玩的是真滴花啊,又长见识了(更正,出现杨奇怪的场景是因为带Google前缀的exoplayer将要被废弃,新的EXOplayer被整合到media3中)
说了那么多其实都是插曲,工作赚钱嘛,不寒碜,最后我又学习并实现了用EXOplayer播放视频和自定义实现播放器界面,发现如果只是身为一个api高级调用师的话,其实使用方法都是大差不大的,这个时候我对播放器心里大概就有个底了。
再说下EXOplayer的优缺点:
优点:
虽然说上手起来简单,包体积又小,现在还纳入了安卓官方文档,但是不太适合直播,我们的需求是实时播放一个rtsp流的视频,并且播放场景有一定复杂度,所以最后选择放弃
我们老规矩,首先是找github地址 :https://github.com/Bilibili/ijkplayer
了解过后,我同样实现了一个demo,基础使用都差不多,就是so要不然自己编译,要不然在网上找下别人编译好的,还有一件事(老爹说的不是我说的)就是有一些版本是有问题的,使用的时候最好看下,总得体验下来对于我来说就是引入的时候是最麻烦的。
优点:
缺点:
但是因为Ijkplayer支持rtsp,所以如果没有更好的选择就决定采用了,直到我发现了宝藏和本篇文章的主角GSYVideoPlayer
github地址: https://github.com/CarGuo/GSYVideoPlayer
让我们看看介绍:
视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS支持,支持弹幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频本身自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,直接添加控件为封面,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,其他一些小动画效果,rtsp、concat、mpeg。(总结,高端大气上档次)
让我们看看作者:
曾经有人和我说过,在中国做安卓开发不认识这个人,就不要说自己是安卓开发
让我们看看文档:
现在,告诉我你们的答案!✨✨✨(郭神o( ̄▽ ̄),我爱你我要xxxxx)
咳咳,开个小小的玩笑
因为地址在这里了,要是github没有条件的可以去https://gitee.com/CarGuo/GSYVideoPlayer看下文档我就不详细介绍了,我拉了项目过后自己改吧改吧,用的很满意,最终决定使用GSYVideoPlayer来开发项目
优点
缺点:
-有一些版本对应会有不同的问题,比如我使用的时候用了最新的依赖,按照文档不能播放rtsp流,降低了依赖过后就可以播放了
本着学习的态度,我期间也看了一些别的开源播放器,和大家一起分享一下
https://github.com/Jzvd/JZVideo
知道这个是因为前公司的短视频播放是用饺子改的,我在app上看效果也不是很好,原本好像叫节操,现在改名叫饺子,网友都说难用,所以没有详细尝试,感兴趣的兄弟可以去看看
https://developer.android.google.cn/guide/topics/media/mediaplayer?hl=zh_cn
因为原生的MediaPlayer不支持rtsp流,所以我也没有过多的看
https://github.com/pili-engineering/QPlayer2-Android
七牛播放器的衍生品,原本的七牛播放器已经停止维护,也是因为不支持rtsp流所以没有尝试
https://github.com/daniulive/SmarterStreaming
大牛直播,看起来很牛逼的样子,可惜要收费
在我这个需求下我最终选用了GSYVideoPlayer,但各位朋友们还是要看自己的需求,选用自己适合的三方框架,开发起来才能事半功倍
Ijkplayer、ExoPlayer、VLC播放器综合比较