TBS視頻播放html
TBS視頻播放器能夠支持市面上幾乎全部的視頻格式,包括mp4, flv, avi, 3gp, webm, ts, ogv, m3u8, asf, wmv, rm, rmvb, mov, mkv等18種視頻格式。同時支持硬件解碼,使得內存佔用,穩定性相較於系統播放器都更優。android
接入TBSgit
1.導入jar文件和so文件github
官網SDK下載地址:https://x5.tencent.com/tbs/sdk.html,示例中有jar文件和so文件,具體導入方式我上一篇文章有詳細介紹(Android應用內展現office文件–騰訊瀏覽服務(TBS))web
2.初始化Applicationcanvas
自定義一個Application類,對X5內核進行初始化瀏覽器
public class MyAppliction extends Application { @Override public void onCreate() { super.onCreate(); //回調接口初始化完成接口回調
QbSdk.PreInitCallback pcb=new QbSdk.PreInitCallback() { @Override public void onCoreInitFinished() { } @Override public void onViewInitFinished(boolean b) { //x5內核初始化完成的回調,爲true表示x5內核加載成功,不然表示x5內核加載失敗,會自動切換到系統內核。
Log.e("myApplication", " x5內核加載成功?" + b); } }; //x5內核預加載,異步初始化x5 webview所需環境
QbSdk.initX5Environment(getApplicationContext(), pcb); } }
在AndroidManifest.xml進行聲明app
<application android:name="com.example.xch.tbsvideoplay.MyAppliction"
3.使用異步
直接在清單文件AndroidManifest.xml中配置SDK中的視頻播放Activityide
<activity android:name="com.tencent.smtt.sdk.VideoActivity" android:alwaysRetainTaskState="true" android:configChanges="orientation|screenSize|keyboardHidden" android:exported="false" android:launchMode="singleTask">
<intent-filter>
<action android:name="com.tencent.smtt.tbs.video.PLAY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
在代碼中直接調用TbsVideo.openVideo()播放
/** * 直接調用播放視頻 * @param videoUrl 視頻地址 */
private void startPlay(String videoUrl){ //判斷當前是否可用
if(TbsVideo.canUseTbsPlayer(getApplicationContext())){ //播放視頻
TbsVideo.openVideo(getApplicationContext(), videoUrl); } }
4.添加權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 硬件加速對X5視頻播放有利,建議開啓 -->
<uses-permission android:name="android.permission.GET_TASKS" />
效果圖
優化
先看一下優化以後的效果
自定義TBS的WebView,充分發揮X5內核的做用
1.自定義webview
需繼承TBS的webview,包必定不能導錯:com.tencent.smtt.sdk.WebView
public class X5WebView extends WebView { private WebViewClient client = new WebViewClient() { /** * 防止加載網頁時調起系統瀏覽器 */
public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }; @SuppressLint("SetJavaScriptEnabled") public X5WebView(Context arg0, AttributeSet arg1) { super(arg0, arg1); this.setWebViewClient(client); initWebViewSettings(); this.getView().setClickable(true); } /** * 初始化webview設置 */
private void initWebViewSettings() { WebSettings webSetting = this.getSettings(); ... } /** * 這裏能夠爲自定義webview繪製背景或文字 * @param canvas * @param child * @param drawingTime * @return
*/ @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { boolean ret = super.drawChild(canvas, child, drawingTime); canvas.save(); ... return ret; } public X5WebView(Context arg0) { super(arg0); setBackgroundColor(85621); } }
2.佈局中使用自定義WebView
<com.example.xch.tbsvideoplay.tools.X5WebView android:id="@+id/x5_webview" android:layout_width="match_parent" android:layout_height="200dp" android:scrollbars="none" />
3.使用自定義WebView播放視頻
/** * 使用自定義webview播放視頻 * @param vedioUrl 視頻地址 */
private void startPlay(String vedioUrl) { x5webView.loadUrl(vedioUrl); getWindow().setFormat(PixelFormat.TRANSLUCENT); x5webView.getView().setOverScrollMode(View.OVER_SCROLL_ALWAYS); x5webView.setWebChromeClient(new WebChromeClient()); }
4.支持橫豎屏切換
在AndroidManifest.xml中給當前Activity配置configChanges屬性
<activity android:name="com.example.xch.tbsvideoplay.VideoPlayActivity" android:configChanges="orientation|screenSize|keyboardHidden"/>
源碼已上傳至GitHub,須要的能夠下載: https://github.com/yangxch/TBSVideoPlay
更多技術乾貨,歡迎關注個人公衆號:ChaoYoung