前言
本文主要從實(shí)際的角度去解讀和選型
入職新公司,需要做一款涉及到播放器,播放rtsp 流的app,要求到我來(lái)選型,并給了我下面三個(gè)選擇
在這之前我只是一名普普通通的安卓應(yīng)用開(kāi)發(fā)工程師,沒(méi)有接觸過(guò)音視頻,如果你也和我一樣,那么這件事真的太酷啦??
然后就是為期幾天的對(duì)比與選型
一、vlc
遇事不決問(wèn)群友,群友給我推薦了vlc這個(gè)開(kāi)源的播放器,并友好的向我推薦了文章和vlcDemo,我記不得是否是他自己的文章和demo了,這是連接
- 安卓使用VLC播放視頻,實(shí)現(xiàn)截圖和錄制功能
- android 使用VLC,錄像 截圖功能,支持rtsp rtmp http SMB 等等。 流媒體,點(diǎn)播視頻等等
然后我瀏覽了vlc的github地址和示例代碼的地址,并參考上面兩個(gè)連接,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的vlcdemo,也對(duì)其有了一點(diǎn)簡(jiǎn)單的了解
優(yōu)點(diǎn):
- 跨平臺(tái),兼容性好
- 功能全面,支持 rtsp、rtmp、ftp、http、https 等協(xié)議
- 代碼完全解耦,modules 相互獨(dú)立,不影響,引入新 modules 方便
- 維護(hù)團(tuán)隊(duì)強(qiáng)大,更新頻繁
缺點(diǎn):
- Android 平臺(tái)編譯出的包較大,有 16M 左右;
- 在 Android 平臺(tái)上可能存在性能問(wèn)題,需要優(yōu)化(這個(gè)我沒(méi)體會(huì)到)
- 根據(jù)群友的友好提醒,如果涉及到截圖錄像的功能要改so,要會(huì)c++,我不會(huì),所以算缺點(diǎn)!??
最終因?yàn)锳ndroid 平臺(tái)編譯出的包較大這個(gè)缺點(diǎn),沒(méi)有采用vlc。??
二、EXOplayer
然后就是EXOplayer的調(diào)研,什么?你問(wèn)我為什么不先調(diào)研其他的,我有我自己的考量好吧,你不要教本安卓開(kāi)發(fā)做事,首先我們排除mediaplayer,因?yàn)榘俣冗^(guò)后基本沒(méi)有推薦的,然后就是Ijkplayer已經(jīng)是一個(gè)嗶哩嗶哩不維護(hù)的開(kāi)源項(xiàng)目了,而EXOplayer是谷歌開(kāi)源的持續(xù)維護(hù)的,你說(shuō)我先調(diào)研誰(shuí)?好了,話不多說(shuō),我們騎上心愛(ài)的??,開(kāi)始。
我先找到EXOplayer的github地址 :https://github.com/google/ExoPlayer
然后找到文檔:https://exoplayer.dev/
然后就狗血的發(fā)現(xiàn)啊這個(gè)EXOplayer啊,他套娃
這是什么?,這是谷歌找安卓,老爹找兒子??;
然后我又去安卓官網(wǎng)看:https://developer.android.google.cn/guide/topics/media/exoplayer?hl=zh_cn
好好好,你官方這么玩是吧?,我整個(gè)一看下來(lái),發(fā)現(xiàn)EXOplayer的最新依賴已經(jīng)帶media3的前綴了,前面幾個(gè)版本還有前綴不同的代碼相同的庫(kù),玩的是真滴花啊,又長(zhǎng)見(jiàn)識(shí)了(更正,出現(xiàn)楊奇怪的場(chǎng)景是因?yàn)閹oogle前綴的exoplayer將要被廢棄,新的EXOplayer被整合到media3中)
說(shuō)了那么多其實(shí)都是插曲,工作賺錢嘛,不寒磣,最后我又學(xué)習(xí)并實(shí)現(xiàn)了用EXOplayer播放視頻和自定義實(shí)現(xiàn)播放器界面,發(fā)現(xiàn)如果只是身為一個(gè)api高級(jí)調(diào)用師的話,其實(shí)使用方法都是大差不大的,這個(gè)時(shí)候我對(duì)播放器心里大概就有個(gè)底了。
再說(shuō)下EXOplayer的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
- 接入包體積小,1.1M
- 護(hù)團(tuán)隊(duì)強(qiáng)大,更新速度快
缺點(diǎn): - 跨平臺(tái),不太適合直播
- 可擴(kuò)展性一般,視頻軟解接入較麻煩
- 適合播放場(chǎng)景簡(jiǎn)單的項(xiàng)目,播放過(guò)程中無(wú)切換碼流的情況
雖然說(shuō)上手起來(lái)簡(jiǎn)單,包體積又小,現(xiàn)在還納入了安卓官方文檔,但是不太適合直播,我們的需求是實(shí)時(shí)播放一個(gè)rtsp流的視頻,并且播放場(chǎng)景有一定復(fù)雜度,所以最后選擇放棄??
三、Ijkplayer
我們老規(guī)矩,首先是找github地址 :https://github.com/Bilibili/ijkplayer
了解過(guò)后,我同樣實(shí)現(xiàn)了一個(gè)demo,基礎(chǔ)使用都差不多,就是so要不然自己編譯,要不然在網(wǎng)上找下別人編譯好的,還有一件事(老爹說(shuō)的不是我說(shuō)的)就是有一些版本是有問(wèn)題的,使用的時(shí)候最好看下,總得體驗(yàn)下來(lái)對(duì)于我來(lái)說(shuō)就是引入的時(shí)候是最麻煩的。
優(yōu)點(diǎn):
- 包體積比 VLC 小
-資料比較齊全(但我個(gè)人認(rèn)為這也是一個(gè)缺點(diǎn),到處都是問(wèn)題)
缺點(diǎn):
- 可擴(kuò)展性較差,基本上沒(méi)有提供 modules 供開(kāi)發(fā)者二次開(kāi)發(fā)
- 官方目前基本不維護(hù),不更新
但是因?yàn)镮jkplayer支持rtsp,所以如果沒(méi)有更好的選擇就決定采用了,直到我發(fā)現(xiàn)了寶藏和本篇文章的主角GSYVideoPlayer
四、GSYVideoPlayer??????
github地址: https://github.com/CarGuo/GSYVideoPlayer
讓我們看看介紹:
視頻播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS支持,支持彈幕,支持濾鏡、水印、gif截圖,片頭廣告、中間廣告,多個(gè)同時(shí)播放,支持基本的拖動(dòng),聲音、亮度調(diào)節(jié),支持邊播邊緩存,支持視頻本身自帶rotation的旋轉(zhuǎn)(90,270之類),重力旋轉(zhuǎn)與手動(dòng)旋轉(zhuǎn)的同步支持,支持列表播放 ,直接添加控件為封面,列表全屏動(dòng)畫(huà),視頻加載速度,列表小窗口支持拖動(dòng),動(dòng)畫(huà)效果,調(diào)整比例,多分辨率切換,支持切換播放器,進(jìn)度條小窗口預(yù)覽,其他一些小動(dòng)畫(huà)效果,rtsp、concat、mpeg。(總結(jié),高端大氣上檔次)
讓我們看看作者:
曾經(jīng)有人和我說(shuō)過(guò),在中國(guó)做安卓開(kāi)發(fā)不認(rèn)識(shí)這個(gè)人,就不要說(shuō)自己是安卓開(kāi)發(fā)??
讓我們看看文檔:
現(xiàn)在,告訴我你們的答案!???????????????(郭神o( ̄▽ ̄),我愛(ài)你我要xxxxx)
咳咳,開(kāi)個(gè)小小的玩笑
因?yàn)榈刂吩谶@里了,要是github沒(méi)有條件的可以去https://gitee.com/CarGuo/GSYVideoPlayer看下文檔我就不詳細(xì)介紹了,我拉了項(xiàng)目過(guò)后自己改吧改吧,用的很滿意,最終決定使用GSYVideoPlayer來(lái)開(kāi)發(fā)項(xiàng)目
優(yōu)點(diǎn)
- 支持好幾種開(kāi)源播放器,集大成者
- 可以按需引用所需要的依賴,這樣一來(lái)包體積不會(huì)太大
- 作者維護(hù)很勤快,有什么問(wèn)題issues,作者也會(huì)幫忙看看
- 文檔寫(xiě)的很清楚不需要額外查資料,實(shí)在不懂代碼拉下來(lái)一跑,對(duì)照著代碼基本上就能理解了
缺點(diǎn):
-有一些版本對(duì)應(yīng)會(huì)有不同的問(wèn)題,比如我使用的時(shí)候用了最新的依賴,按照文檔不能播放rtsp流,降低了依賴過(guò)后就可以播放了
五、其他的開(kāi)源播放器
本著學(xué)習(xí)的態(tài)度,我期間也看了一些別的開(kāi)源播放器,和大家一起分享一下
jiaozivideoplayer
https://github.com/Jzvd/JZVideo
知道這個(gè)是因?yàn)榍肮镜亩桃曨l播放是用餃子改的,我在app上看效果也不是很好,原本好像叫節(jié)操,現(xiàn)在改名叫餃子,網(wǎng)友都說(shuō)難用,所以沒(méi)有詳細(xì)嘗試,感興趣的兄弟可以去看看
MediaPlayer
https://developer.android.google.cn/guide/topics/media/mediaplayer?hl=zh_cn
因?yàn)樵腗ediaPlayer不支持rtsp流,所以我也沒(méi)有過(guò)多的看
QPlayer2
https://github.com/pili-engineering/QPlayer2-Android
七牛播放器的衍生品,原本的七牛播放器已經(jīng)停止維護(hù),也是因?yàn)椴恢С謗tsp流所以沒(méi)有嘗試
SmarterStreaming
https://github.com/daniulive/SmarterStreaming
大牛直播,看起來(lái)很牛逼的樣子,可惜要收費(fèi)
總結(jié)
在我這個(gè)需求下我最終選用了GSYVideoPlayer,但各位朋友們還是要看自己的需求,選用自己適合的三方框架,開(kāi)發(fā)起來(lái)才能事半功倍文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-618405.html
參考
Ijkplayer、ExoPlayer、VLC播放器綜合比較文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-618405.html
到了這里,關(guān)于安卓的播放器對(duì)比與選型(vlc,EXOplayer,Ijkplayer,GSYVideoPlayer)詳細(xì)過(guò)程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!