最近開始接觸視頻,學習了很多带迟,也基于很多原因 開始了解播放器宝剖。
當然 最近 接觸最多應該是M3u8格式的視頻稚伍,官方稱之為HLS廉嚼,草率的看了下 Android 原生mediaplayer,vitamio,和ijk.當然還有exoplayer.說實話,我其實沒有太能夠分辨出這幾個播放器的優(yōu)缺點,但是過了幾遍Java 層的代碼,其實受益良多粥烁。
我有一種想寫一個播放器系列的沖動,無妨蝇棉,搬磚久了讨阻,就沒有沖動了。
先說說mediaplayer吧篡殷,我最開始用的是餃子钝吮,畢竟大佬寫的,Ui 和要求很接近,重要的是很小奇瘦,至于為啥沒有用GSYvideoplayer,時間有點長棘催,忘記了,需求從 最開始的 m3u8播放到链患,圖片前置廣告巧鸭,再到視頻前置廣告瓶您,然后是視頻廣告 不可快進等相關UI 控制修改麻捻,最后是視頻拖動限制,等等呀袱。
先說圖片廣告吧贸毕,思路就是 用封面圖 作為圖片廣告,hander post 刷新倒計時UI,圖片廣告結束后夜赵,再播放視頻廣告或者視頻正文明棍。
再說視頻廣告,因為餃子 提供了修改分辨率的功能寇僧,于是可以將視頻廣告設置到分辨率里面摊腋,然后修改一下調整分辨率的彈窗,也沒有多少問題嘁傀。
然后是像騰訊播放器那樣兴蒸,滑屏拖動限制,就是手勢分發(fā)细办。
至于為啥要播放器橙凳,老板說 不停的左右滑動改變播放進度,視頻會出現(xiàn)卡頓笑撞,不播放的情況岛啸,而且加速命中不高,嗯茴肥?懵逼坚踩。還有就是 趕工出現(xiàn)的,又改的面目全非了瓤狐,有些手機會崩潰瞬铸。于是果斷放棄mediaplayer,或許在不忙的狀態(tài)下 換播放器是正確的吧芬首。
然后就切換到vitamio 赴捞,至于說為啥沒有用GSY,我們的加速地址,他播放不了郁稍。我用IJK,還是播放不了赦政,百度沒法解決不了,就換成了vitamio了。
vitamio 其實很好的恢着,基于SurfaceView 實現(xiàn)播放器畫布桐愉,SurfaceView和TextureView區(qū)別還是挺大的,具體的請百度 谷歌掰派,我怕我亂講从诲,如今播放器要實現(xiàn)無縫全屏,小屏靡羡,列表系洛,正常這幾個模式,大多數(shù)還是用的TextureView略步,畢竟這個可以截屏(手動滑稽)描扯。如今列表播放 是一個很常見的功能,保證后臺mediaplayer 唯一是一個思路趟薄,然后老板怕vitamio 會出現(xiàn) mediaplayer 一樣的問題绽诚,瘋狂切換播放進度,然后花屏了杭煎,出現(xiàn)馬賽克了(我覺得恩够,我可能想跑路了),至于網(wǎng)上提供的解決花屏的辦法都沒有解決到羡铲,有一點蜂桶,他們提供的播放器畫布是SurfaceView ,我是TextureView犀勒,所有我不曉得應該怎么辦(或許屎飘,我沒有更完,我就回成都了贾费,西安搬磚太難了钦购,我還是回去當一個菜雞比較好);
然后,搬磚嘛褂萧,哪里有磚往哪里搬押桃,草草的打了一個Exo的demo,老板瘋狂操作之后导犹,沒有出現(xiàn)馬賽克唱凯,各種體驗良好,于是我們決定用EXO.畢竟是谷歌粑粑寫的東西谎痢,應該可以的磕昼,同時學習下高手 寫代碼的手法。同時EXO 也可以播放我們的加速路徑节猿,嗯票从,完美的播放器漫雕,如果我能夠把界面封裝出來就最好了。
github 地址 :
[文檔地址:](https://exoplayer.dev/guide.html)
導入就很簡單了峰鄙,
完整版本是這么添加的:
implementation 'com.google.android.exoplayer:exoplayer:2.9.6'
最新的是2.9.6浸间。至于看版本號就是下面的這個地址:https://github.com/google/ExoPlayer/blob/release-v2/RELEASENOTES.md
然后需要配置下 對Java 8的支持。
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
不要問為啥吟榴,因為他需要這么配置魁蒜。
如果自己在項目中用到 Java 8
// For Java compilers:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
}
這是 項目中用Kotlin
// For Kotlin compilers:
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
然后就是看文檔,文檔上面有吩翻,今天就先這樣兜看,后面再更。