真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在Android中使用IJKPlayer視頻播放器

如何在Android中使用IJKPlayer視頻播放器?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出阜南免費做網(wǎng)站回饋大家。

1、封裝播放內(nèi)核

我們都知道需要播放一個視頻需要三個過程 1.create MediaPlayer 2.MediaPlayer prepare 3.MediaPlayer 與 Surface 綁定

xinvideoplayer中使用了VideoManager來控制ijkmediaplayer 所有的操作

三個過程 我們使用 HandlerThread + Hander 來實現(xiàn) 第一個過程創(chuàng)建大致可能需要100ms左右,嚴重影響UI線程?。。?/p>

第一個過程: create MediaPlayer

new IjkMediaPlayer() 設(shè)置一些播放器回調(diào)方法

//IJK 的 Mediaplayer api 類似 Android 系統(tǒng)播放器api
//IMediaPlayer.class
public interface IMediaPlayer{
 void setOnPreparedListener(IMediaPlayer.OnPreparedListener var1); //prepareAsync 之后回調(diào)方法
 void setOnCompletionListener(IMediaPlayer.OnCompletionListener var1); //播放完成回調(diào)方法
 void setOnBufferingUpdateListener(IMediaPlayer.OnBufferingUpdateListener var1);//當播放網(wǎng)絡(luò)的數(shù)據(jù)流的buffer發(fā)生變化的時候
 void setOnSeekCompleteListener(IMediaPlayer.OnSeekCompleteListener var1);//當seek定位操作完成后
 void setOnVideoSizeChangedListener(IMediaPlayer.OnVideoSizeChangedListener var1);//當視頻的大小第一次被知道或者發(fā)生改變時
 void setOnErrorListener(IMediaPlayer.OnErrorListener var1);//當有發(fā)生錯誤
 void setOnInfoListener(IMediaPlayer.OnInfoListener var1);//當有信息或者警告
 void setOnTimedTextListener(IMediaPlayer.OnTimedTextListener var1); //當媒體的時間數(shù)據(jù)需要被顯示
}

第二個階段 prepare

mediaPlayer.prepareAsync(); 等待回調(diào) IMediaPlayer.OnPreparedListener#onPrepare()

第三個階段 給IJKMediaPlayer 綁定 Surface 呈現(xiàn)畫面

mediaPlayer.setSurface();

2、播放器View

實現(xiàn) 播放器基本方法(IViewPlayer)和 播放內(nèi)核回調(diào)方法(IMediaPlayerListener)

IMediaPlayerListener 是包裝 IMediaPlayer 所有接口并通過 Handle 發(fā)送到主線程中實現(xiàn)

//IVideoPlayer.java
interface IVideoPlayer{
 void start();//開始播放
 void pause();//暫停播放
 void seekTo(long time); //seekto time
 void release();//關(guān)閉播放
 void setVideoPath();//設(shè)置視頻路徑
 void onStartFullScreen();//全屏播放
 void onBackFullScreen(); //退出全屏
 void onResumeVideo();//播放器后臺喚起
 void onPauseVideo();//切換后臺
 int getCurrentState();//視頻的當前狀態(tài)
 int getCurrentScreenState(); //當前屏幕的狀態(tài) 例如小屏,大屏,豎屏
 long getTcpSpeed();//獲取網(wǎng)速
 void switchVideoSource(String url,long delay);//切換清晰度 并流暢的切換
}
public interface MediaPlayerListenerextends IVideoPlayer{

 void onPrepared();
 void onAutoCompletion();
 void onCompletion();
 void onBufferingUpdate(int percent);
 void onSeekComplete(long currentPosition);
 void onError(int what, int extra);
 void onInfo(int what, int extra);
 void onVideoSizeChanged();
}

以上接口大致滿足了所有播放器的功能要求!!

3.MediaController

public interface IVideoController{
 //顧名思義
 ViewbindPlayer(IVideoPlayer player);
 void onChangeVideoStatus(IVideoPlayer player,int old_status, int new_status);
 void onChangeScreenStatus(IVideoPlayer player,int old_status, int new_status);
 boolean onChangedNetWork(int currentNetState);
 void onVideoProgress(int percent, long curr_position, long duration);
 void unbindPlayer(IVideoPlayer player);
 boolean isLock();
 void onVideoDefinitionSwitched();
 void show();
 void hide();
 boolean isShowing();

BaseVideoPlayer#setVideoController()

播放器的簡單接入使用

videoplayer.setVideoPath(url);
videoplayer.start();//開始播放
//如果需要后臺暫停喚起繼續(xù)播放
videoplayer.onVideoResume();
videoplayer.onVideoPause();
//如果需要后臺暫停喚起繼續(xù)播放
全屏時控制返回鍵問題:
if (!VideoPlayerUtils.onBackPressed()) {
 //返回的正常邏輯
}
...

播放器的內(nèi)部實現(xiàn)

如何在Android中使用IJKPlayer視頻播放器

預(yù)加載需求 & 復(fù)用播放器

如何在Android中使用IJKPlayer視頻播放器

智能后臺&喚起處理

如何在Android中使用IJKPlayer視頻播放器

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


當前文章:如何在Android中使用IJKPlayer視頻播放器
當前網(wǎng)址:http://weahome.cn/article/ggjech.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部