本文主要介紹采用RecyclerView配合PagerSnapHelper實現短視頻滑動播放內容。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:主機域名、網絡空間、營銷軟件、網站建設、阿里地區(qū)網站維護、網站推廣。
主頁布局文件定義RecyclerView,為RecyclerView建立對應適配器。
適配器條目中添加視頻播放容器FrameLayout及封面ImageVIew.
PagerSnapHelper 結合 LinearLayoutManager 實現滑動管理,實現監(jiān)聽任務。
PagerSnapHelper can help achieve a similar behavior to
ViewPager. Set both RecyclerView and the items of the RecyclerView.Adapter to have android.view.ViewGroup.LayoutParams#MATCH_PARENT height and width and then attach PagerSnapHelper to the RecyclerView using #attachToRecyclerView(RecyclerView)}.
RecyclerView管理器為LinearLayoutManager 時,默認為縱向滑動,如果想采用橫向滑動,就設置其滑動方向為RecyclerView.HORIZONTAL。同理,我們也可以這樣采用setOrientation(RecyclerView.HORIZONTAL) 方法去改變滑動方向。
為RecyclerView 設置管理器PagerLayoutManager,設置其Adapter數據內容,進行封面展示,且此時會回調onPageInitComplete()方法,進行首個視頻播放。對RecyclerView進行滑動,當頁面滑動結束后,會先回調管理器中onPageRelease()方法,此時可對進行中播放器進行停止釋放;然后,回調onPageSelected()方法,對選中頁面內容進行展示播放。
當滑動后取消時,要進行判斷當前位置,避免當前頁視頻停止或重復播放。
初始化播放器內容
開始播放視頻內容,進行播放器視圖加載
停止播放,移除視圖
例子中采用了自定義空布局的播放器繼承自GSY開源播放器,單純進行視頻播放,當然也可以采用其它的播放器餃子或者IjkPlayer等。
布局文件
簡單的滑動播放這些就完成了,例子也只是僅僅提供了實現的方法和思路,供大家進行學習參考,實際使用中可以對其進一步地進行封裝及處理,接下來也會補充一些滑動播放適配器的數據加載處理以及多布局內容展示等內容。
Android使用FFmpeg播放視頻(一):視頻播放
Android NDK開發(fā):利用OpenSL ES實現聲音播放
這里我創(chuàng)建了兩個JNI函數,一個是播放的,一個是釋放的如下:
這里我在用于播放的JNI函數中依次初始化了FFmpeg和OpenSLES
其中初始化FFmpeg的函數中的邏輯其實和使用FFmpeg播放視頻畫面中的邏輯差不多,主要區(qū)別就是要找到音頻的索引以及后面對于解析音頻的一些配置;而初始化OpenSLES基本就和之前使用OpenSLES播放PCM數據是一樣的,具體如下:
最后再加入釋放資源的邏輯即可
這里的案例源碼是和之前播放視頻畫面的分開了
VideoView是Android用來實現視頻播放的主要控件,VideoView內部是使用MediaPlayer來對視頻文件進行控制的。但是他支持的格式比較單一,只支持mp4,avi,3gp等格式的視頻。
Android提供了常見的視頻編碼,解碼機制,使用Android自帶的MediaPlayer,MediaController等類可以很方便的實現視頻播放的功能。支持的視頻格式有MP4和3GP等。這些多媒體數據可以來自于Android應用的資源文件,也可以來自于外部存儲器上的文件,甚至可以是來自于網絡上的文件流。
1、MediaController+VideoView實現方式
這種方式是最簡單的實現方式。VideoView繼承了SurfaceView同時實現了MediaPlayerControl接口,MediaController則是安卓封裝的輔助控制器,帶有暫停,播放,停止,進度條等控件。通過VideoView+MediaController可以很輕松的實現視頻播放、停止、快進、快退等功能。
布局文件如下:
使用此實現方式的步驟:
1.加載指定的視頻文件
2.建立VideoView和MediaController之間的關聯,這樣就不需要自己去控制視頻的播放、暫停等。讓MediaController控制即可。
3.VideoView獲取焦點。
2、MediaPlayer+SurfaceView+自定義控制器
雖然VideoView的實現方式很簡單,但是由于是自帶的封裝好的類,所以無論是播放器的大小、位置以及控制都不受我們控制。
這種實現方式步驟如下:
1.創(chuàng)建MediaPlayer對象,并讓它加載指定的視頻文件??梢允菓玫馁Y源文件、本地文件路徑、或者URL。
2.在界面布局文件中定義SurfaceView組件,并為SurfaceView的SurfaceHolder添加Callback監(jiān)聽器。
3.調用MediaPlayer對象的setDisplay(SurfaceHolder sh)將所播放的視頻圖像輸出到指定的SurfaceView組件。
4.調用MediaPlayer對象的prepareAsync()或prepare()方法裝載流媒體文件
5.調用MediaPlayer對象的start()、stop()和pause()方法來控制視頻的播放。
在實現第二步之前需要先給surfaceHolder設置一個callback,callback的3個回調函數如下:
3、MediaPlayer+SurfaceView+MediaController
第二種實現方式使用的是自定義控件,MediaPlayer+SurfaceView也可以使用系統自帶的MediaController控制器。
使用這個方式實現,布局文件只需一個SurfaceView即可,其他的控件都交給MediaController控制器,布局文件如下:
實際過程中推薦大家使用B站的播放器ijkplayer非常好用!
本文名稱:android視頻播放,Android視頻播放器所有版本
網頁網址:http://muchs.cn/article4/phisoe.html
成都網站建設公司_創(chuàng)新互聯,為您提供云服務器、響應式網站、軟件開發(fā)、企業(yè)網站制作、定制開發(fā)、定制網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯