Android 視訊播放框架之TigerVideoPlayer
阿新 • • 發佈:2018-11-22
github專案地址:https://github.com/huyongli/TigerVideo
TigerVideoPlayer
該Library
實現了Android
中的視訊播放模組,視訊播放控制與介面顯示充分解耦,可自定義自己喜歡的核心播放器來實現播放功能(MediaPlayer
,ExoPlayer
等)。
歡迎大家加群交流:106510493
功能
目前該庫主要實現視訊播放中的如下功能:
- 列表中播放視訊
- 列表滑動時如果正在播放視訊,則列表中播放的視訊自動切換為小視窗浮動播放,滑動可恢復為正常播放
- 支援配置開啟或關閉小視窗播放功能,預設關閉
- 各種播放模式切換到全屏播放
- 實現了視訊播放中的暫停,進度顯示等各種常規操作
- 視訊全屏播放時支援左右滑動實現視訊的快進和後退,支援右邊上下滑動調整播放音量,左邊上下滑動調整播放器的亮度等手勢控制操作
- 視訊全屏播放時支援鎖定當前播放狀態
- 支援直接進入全屏播放
- 使用
AndroidVideoCache
實現視訊快取功能,該功能預設關閉,使用配置即可開啟該快取功能 - 因視訊播放核心與視訊操作介面充分解耦,因此完全支援自定義自己喜歡的播放核心來實現視訊播放
- 該庫實現了基於
MediaPlayer
和ExoPlayer
兩個核心的視訊播放器,可以根據自己的需求配置。因為ExoPlayer
需要Context
MediaPlayer
核心播放器播放 11.支援自定義頭部Title顯示相關檢視,支援自定義底部播放控制條檢視,支援自定義全屏播放時手勢操作相關顯示檢視,支援替換預覽圖ImageView,支援自定義載入失敗顯示檢視
TigerVideoPlayer的使用
該庫實現了一行程式碼實現視訊播放,一行程式碼開啟小視窗播放,使用簡單。
Gradle
compile 'cn.ittiger:TigerVideoPlayer:1.7'
視訊播放
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <cn.ittiger.player.VideoPlayerView android:id="@+id/video_player_view" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
//繫結視訊地址和標題,這樣視訊播放功能就整合完成了,剩下的工作全部交由VideoPlayerView完成
mVideoPlayerView.bind(video.getVideoUrl(), video.getVideoTitle());
//顯示視訊預覽圖
Glide.with(mContext).load(video.getVideoThumbUrl()).into(holder.mPlayerView.getThumbImageView());
自定義播放器相關檢視
<cn.ittiger.player.VideoPlayerView
android:id="@+id/video_player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:vpFullScreenGestureViewLayoutRes="@layout/my_fullscreen_gesture_view"
app:vpVideoThumbViewLayoutRes="@layout/fresco_image_view"
.../>
如上程式碼所示,如果要自定義全屏手勢操作相關View,只需要在佈局中新增自定義屬性app:vpFullScreenGestureViewLayoutRes
即可
- 自定義佈局my_fullscreen_gesture_view的根檢視必須繼承自FullScreenGestureView
- 自定義底部播放控制條View時,必須繼承自VideoControllerView
- 自定義視訊縮圖,必須繼承自ImageView
- 自定義載入失敗View,不需要繼承任何View
- 自定義頭部View時,必須繼承自VideoHeaderView
自定義播放配置
//該配置最好在Application中實現
PlayerManager.loadConfig(
new Config.Builder(this)
.buildPlayerFactory(new ExoPlayerFactory(this))//使用ExoPlayer核心作為視訊播放器,預設使用MediaPlayer
.enableSmallWindowPlay()//開啟小視窗播放,預設不開其
.cache(true)//開啟快取功能,預設不開啟
.cacheProxy(HttpProxyCacheServer)//自定義快取配置,不設定則採用預設的快取配置
.build()
);
自定義不同核心的播放器
- 實現播放器抽象類
AbsSimplePlayer
,根據你需要的核心實現視訊播放的相關功能 - 實現
IPlayerFactory
介面,在方法public AbsSimplePlayer create();
中返回對應的播放器物件 - 通過配置
.buildPlayerFactory()
設定該播放器工廠
使用注意點
- 對於需要使用全屏播放的
Activity
,需要在AndroidManifest
中對該Activity配置android:configChanges="orientation|screenSize|keyboardHidden"
- 不要使用預設的ActionBar,如有需要請使用v7包中的ToolBar(該問題後面會改進),否則全屏播放會顯示有問題
- 對於Activity中視訊播放時,最好在
onResume, onPause, onDestroy
方法中通過PlayerManager加上對應的方法:resume, pause, release
- 對於在Fragment中播放視訊時,在
onDestroyView
方法中呼叫PlayerManager.getInstance.stop();
以上是TigerVideoPlayer
使用的簡單說明,具體使用請參考Demo
TigerVideo
基於多個開源庫實現的一個視訊播放App,練手專案
主要使用的開源庫
Mosby(一個MVP框架)、RxJava、Retrofit2、ButterKnife、Glide、Systembartint、TigerDB、TigerVideoPlayer、Material Design相關控制元件