基于Android平臺在線視頻播放APP的設計與實現(xiàn)
發(fā)布時間:2021-01-13 11:15
隨著移動互聯(lián)網(wǎng)的飛速發(fā)展,人們的物質(zhì)和文化生活水平不斷提升,移動智能設備的價格變得更加便宜,越來越多的消費者在購買智能產(chǎn)品的選擇上更青睞于Android系統(tǒng)的設備。在快節(jié)奏的生活中,智能設備扮演著重要的角色,不再僅僅是作為通信使用的工具,更多用途是在活中的方方面面,人們也更加傾向于利用零散的時間在移動設備端上觀看在線視頻娛樂,市場上的有許多在線視頻播放器,但代碼邏輯復雜,功能選項繁雜,頁面內(nèi)容過于冗余,用戶在使用時非常不便捷,因而在手機上開發(fā)一款易操作使用、功能齊全、內(nèi)容豐富、界面清晰的在線視頻播放APP十分重要。本文從用戶操作使用應用的角度出發(fā),提出核心模塊的需求分析,整體采用的是MVC構架,做到高內(nèi)聚低耦合的設計原則,對不同的資源內(nèi)容進行了具體的模塊劃分,整體采用View Pager加上Fragment來完成頁面UI設計,結合性能更加高效的Recycler View來顯示頁面內(nèi)容,對大量頁面所產(chǎn)生的緩存數(shù)據(jù)優(yōu)化處理,提高了設備運行時的性能。設計了多種自定義控件來完善頁面顯示的多樣性,完成頁面的繁瑣內(nèi)容具體顯示。增加彈幕緩存池設計,使彈幕的顯示更加高效。利用Ok Http和Retro...
【文章來源】:長江大學湖北省
【文章頁數(shù)】:68 頁
【學位級別】:碩士
【部分圖文】:
輪播圖效果圖
第5章在線視頻播放APP的實現(xiàn)35本在線視頻播放APP出于能在更多的手機機型上運行的目的,ijkplayer軟解碼是基于ffplay基礎上改的,而硬解碼采取了MediaCodec的硬解碼方式來對音視頻解碼[41],由video_thread、audio_thread兩個解碼線程進行,解碼的功能封裝在ffpipeline層里了,如果在打開硬件解碼不成功,會自動切換至軟解碼。在FFmpeg音視頻的解碼是在對應的隊列中來處理的[42],由于視頻解碼比音頻稍微復雜,下面主要介紹視頻解碼,然后顯示在Android設備上的基本流程。在read_thread中的packet_queue_put()將解碼前的視頻數(shù)據(jù)隊列放入緩存區(qū)中,decoder_decode_frame將調(diào)用最先放入緩存隊列中的packet,該方法中從還沒開始解碼的視頻數(shù)據(jù)隊列中取出一幀數(shù)據(jù),送入decoder中進行解碼,并將解碼后的數(shù)據(jù)送到ffplay_video_thread中的pictq里,然后調(diào)用各自的解碼函數(shù)得到frame,這樣各種解碼后的數(shù)據(jù)都獲取到了。FrameQueue隊列中儲存的是解碼后的視頻資源數(shù)據(jù),然后在read_thread中完成所有的任務,視頻的顯示功能是在video_refresh_thread中完成的,picturequeue把得到的frame加入到frame_queue隊列里面,最后將幀畫面繪制到設備的上顯示,關于視頻解碼的主要流程如圖5-4的流程圖所示。圖5-4視頻資源解碼流程圖Figure5-4Videoresourcedecodingflowchart在同樣的網(wǎng)絡請求環(huán)境下,音、視頻的數(shù)據(jù)是分開加載的,于是會出現(xiàn)不同步的現(xiàn)象,從時間上看兩者在播放的時候上有一個錯差。處理不同步主要方式基于音頻的時間戳作為參考,在整體上的思路就是在獲取到解碼后的音視頻資源數(shù)據(jù)后,如果視頻播放快于這個時間戳,在播放下一幀時加一個延時時間以等待音
第5章在線視頻播放APP的實現(xiàn)39publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY){//滑動事件處理if(Math.abs(distanceX)>Math.abs(distanceY)){mMoveType=mMoveType.FastUpOrDown;}else{if(e1.getX()<getWidth()*1.0/3.0){//左邊mMoveType=mMoveType.Volume;}elseif(e1.getX()>getWidth()*2.0/3.0){//右邊mMoveType=mMoveType.Brightness;}}}圖5-6音量、亮度手勢調(diào)節(jié)效果圖Figure5-6Volume,brightnessgestureadjustmenteffectdiagram(5)播放時,在進度條上顯示該總的視頻時長以及當前播放視頻的時長,進度條的進度會跟隨當前播放的時間變化刷新進度;setSecondaryProgress()來設置緩沖時的進度,能顯示播放時自動緩沖進度條,在網(wǎng)絡比較好的情況下,視頻能提前預加載,以較暗的亮度在進度條上顯示;拖動進度條seekBar,在屏幕中間顯示拖動到的時間,在緩沖加載時顯示“正在加載”的進度,圖5-7為在視頻播放時緩沖進度實現(xiàn)效果圖,其中的主要代碼如下。privatevoidupdateMediaControlView(){inttotal=mMediaControl.getDuration();//總時長intcurrentPosition=mMediaControl.getCurrentPosition();mTvCurrentTime.setText(stringForTime(currentPosition));mTvTotalTime.setText(stringForTime(total));mSeekBar.setProgress(currentPosition);//拖動播放
【參考文獻】:
期刊論文
[1]6G移動通信技術展望[J]. 張平,牛凱,田輝,聶高峰,秦曉琦,戚琦,張嬌. 通信學報. 2019(01)
[2]基于Android平臺架構應用程序開發(fā)研究[J]. 張藍春. 電腦編程技巧與維護. 2017(06)
[3]移動智能終端的普及對傳統(tǒng)媒體的沖擊[J]. 黃蔚. 知識經(jīng)濟. 2015(20)
[4]5G移動通信網(wǎng)絡關鍵技術綜述[J]. 趙國鋒,陳婧,韓遠兵,徐川. 重慶郵電大學學報(自然科學版). 2015(04)
[5]基于HttpClient的Android客戶端的設計與實現(xiàn)[J]. 王超,閭陳莉,吳迪,項英杰. 計算機時代. 2014(03)
[6]基于Android的多線程處理技術[J]. 楊杰. 電腦知識與技術. 2013(18)
碩士論文
[1]基于JSON的加密及簽名算法的安全性研究[D]. 何建.哈爾濱工業(yè)大學 2018
[2]Android系統(tǒng)源碼中設計模式對應用開發(fā)的改進研究[D]. 朱毅坤.北京郵電大學 2017
[3]基于DLNA協(xié)議的ANDROID多媒體分享系統(tǒng)的設計和實現(xiàn)[D]. 楊乾.上海交通大學 2017
[4]面向嵌入式系統(tǒng)的音視頻接收與同步播放系統(tǒng)實現(xiàn)[D]. 高樹立.天津大學 2017
[5]基于XML的數(shù)據(jù)管理系統(tǒng)的設計與實現(xiàn)[D]. 高超.湖南大學 2016
[6]基于Android的即時微視頻流客戶端開發(fā)[D]. 鐘正偉.貴州大學 2015
[7]基于Android平臺的智能家居系統(tǒng)的設計與研究[D]. 王煉.武漢科技大學 2015
[8]基于云同步的視頻推薦系統(tǒng)的系統(tǒng)實現(xiàn)[D]. 程娟.上海交通大學 2015
[9]基于Android平臺的手勢識別技術的研究與應用[D]. 毛曉潔.電子科技大學 2015
[10]基于MVC模式下Android手機游戲的研究與實現(xiàn)[D]. 羅璇.華南理工大學 2014
本文編號:2974775
【文章來源】:長江大學湖北省
【文章頁數(shù)】:68 頁
【學位級別】:碩士
【部分圖文】:
輪播圖效果圖
第5章在線視頻播放APP的實現(xiàn)35本在線視頻播放APP出于能在更多的手機機型上運行的目的,ijkplayer軟解碼是基于ffplay基礎上改的,而硬解碼采取了MediaCodec的硬解碼方式來對音視頻解碼[41],由video_thread、audio_thread兩個解碼線程進行,解碼的功能封裝在ffpipeline層里了,如果在打開硬件解碼不成功,會自動切換至軟解碼。在FFmpeg音視頻的解碼是在對應的隊列中來處理的[42],由于視頻解碼比音頻稍微復雜,下面主要介紹視頻解碼,然后顯示在Android設備上的基本流程。在read_thread中的packet_queue_put()將解碼前的視頻數(shù)據(jù)隊列放入緩存區(qū)中,decoder_decode_frame將調(diào)用最先放入緩存隊列中的packet,該方法中從還沒開始解碼的視頻數(shù)據(jù)隊列中取出一幀數(shù)據(jù),送入decoder中進行解碼,并將解碼后的數(shù)據(jù)送到ffplay_video_thread中的pictq里,然后調(diào)用各自的解碼函數(shù)得到frame,這樣各種解碼后的數(shù)據(jù)都獲取到了。FrameQueue隊列中儲存的是解碼后的視頻資源數(shù)據(jù),然后在read_thread中完成所有的任務,視頻的顯示功能是在video_refresh_thread中完成的,picturequeue把得到的frame加入到frame_queue隊列里面,最后將幀畫面繪制到設備的上顯示,關于視頻解碼的主要流程如圖5-4的流程圖所示。圖5-4視頻資源解碼流程圖Figure5-4Videoresourcedecodingflowchart在同樣的網(wǎng)絡請求環(huán)境下,音、視頻的數(shù)據(jù)是分開加載的,于是會出現(xiàn)不同步的現(xiàn)象,從時間上看兩者在播放的時候上有一個錯差。處理不同步主要方式基于音頻的時間戳作為參考,在整體上的思路就是在獲取到解碼后的音視頻資源數(shù)據(jù)后,如果視頻播放快于這個時間戳,在播放下一幀時加一個延時時間以等待音
第5章在線視頻播放APP的實現(xiàn)39publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY){//滑動事件處理if(Math.abs(distanceX)>Math.abs(distanceY)){mMoveType=mMoveType.FastUpOrDown;}else{if(e1.getX()<getWidth()*1.0/3.0){//左邊mMoveType=mMoveType.Volume;}elseif(e1.getX()>getWidth()*2.0/3.0){//右邊mMoveType=mMoveType.Brightness;}}}圖5-6音量、亮度手勢調(diào)節(jié)效果圖Figure5-6Volume,brightnessgestureadjustmenteffectdiagram(5)播放時,在進度條上顯示該總的視頻時長以及當前播放視頻的時長,進度條的進度會跟隨當前播放的時間變化刷新進度;setSecondaryProgress()來設置緩沖時的進度,能顯示播放時自動緩沖進度條,在網(wǎng)絡比較好的情況下,視頻能提前預加載,以較暗的亮度在進度條上顯示;拖動進度條seekBar,在屏幕中間顯示拖動到的時間,在緩沖加載時顯示“正在加載”的進度,圖5-7為在視頻播放時緩沖進度實現(xiàn)效果圖,其中的主要代碼如下。privatevoidupdateMediaControlView(){inttotal=mMediaControl.getDuration();//總時長intcurrentPosition=mMediaControl.getCurrentPosition();mTvCurrentTime.setText(stringForTime(currentPosition));mTvTotalTime.setText(stringForTime(total));mSeekBar.setProgress(currentPosition);//拖動播放
【參考文獻】:
期刊論文
[1]6G移動通信技術展望[J]. 張平,牛凱,田輝,聶高峰,秦曉琦,戚琦,張嬌. 通信學報. 2019(01)
[2]基于Android平臺架構應用程序開發(fā)研究[J]. 張藍春. 電腦編程技巧與維護. 2017(06)
[3]移動智能終端的普及對傳統(tǒng)媒體的沖擊[J]. 黃蔚. 知識經(jīng)濟. 2015(20)
[4]5G移動通信網(wǎng)絡關鍵技術綜述[J]. 趙國鋒,陳婧,韓遠兵,徐川. 重慶郵電大學學報(自然科學版). 2015(04)
[5]基于HttpClient的Android客戶端的設計與實現(xiàn)[J]. 王超,閭陳莉,吳迪,項英杰. 計算機時代. 2014(03)
[6]基于Android的多線程處理技術[J]. 楊杰. 電腦知識與技術. 2013(18)
碩士論文
[1]基于JSON的加密及簽名算法的安全性研究[D]. 何建.哈爾濱工業(yè)大學 2018
[2]Android系統(tǒng)源碼中設計模式對應用開發(fā)的改進研究[D]. 朱毅坤.北京郵電大學 2017
[3]基于DLNA協(xié)議的ANDROID多媒體分享系統(tǒng)的設計和實現(xiàn)[D]. 楊乾.上海交通大學 2017
[4]面向嵌入式系統(tǒng)的音視頻接收與同步播放系統(tǒng)實現(xiàn)[D]. 高樹立.天津大學 2017
[5]基于XML的數(shù)據(jù)管理系統(tǒng)的設計與實現(xiàn)[D]. 高超.湖南大學 2016
[6]基于Android的即時微視頻流客戶端開發(fā)[D]. 鐘正偉.貴州大學 2015
[7]基于Android平臺的智能家居系統(tǒng)的設計與研究[D]. 王煉.武漢科技大學 2015
[8]基于云同步的視頻推薦系統(tǒng)的系統(tǒng)實現(xiàn)[D]. 程娟.上海交通大學 2015
[9]基于Android平臺的手勢識別技術的研究與應用[D]. 毛曉潔.電子科技大學 2015
[10]基于MVC模式下Android手機游戲的研究與實現(xiàn)[D]. 羅璇.華南理工大學 2014
本文編號:2974775
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/2974775.html
最近更新
教材專著