本文介紹如何用Android播放器SDK快速實現視頻起播。
前提條件
已完成Android播放器的SDK整合。
開源樣本工程
詳細程式碼範例可參考API-Example視頻基礎播放示範(BasicPlayback)模組,該工程是基於Java的阿里雲播放器SDK Android樣本工程,能夠協助開發人員快速掌握SDK核心功能整合。
操作步驟
步驟一:建立播放器
通過AliPlayerFactory類建立AliPlayer播放器。
// 建立播放器執行個體
AliPlayer mAliPlayer = AliPlayerFactory.createAliPlayer(context);
// 傳入traceid
// 可選:推薦使用`播放器單點追查`功能,當使用阿里雲播放器 SDK 播放視頻發生異常時,可藉助單點追查功能針對具體某個使用者或某次播放會話的異常播允許存取為進行全鏈路追蹤,以便您能快速診斷問題原因,可有效改善播放體驗治理效率。
// traceId 值由您自行定義,需為您的使用者或使用者裝置的唯一識別碼,例如傳入您業務的 userid 或者 IMEI、IDFA 等您業務使用者的裝置識別碼。
mAliPlayer.setTraceId("traceId");播放器提供的播放品質監控(可查看播放器整體播放品質相關資料)、單點追查(可定位到具體的使用者或裝置,分析其播允許存取為,快速定位播放異常等問題)及視頻播放統計功能都依賴埋點日誌上報功能而實現。
在建立播放器時,根據setTraceId參數的設定不同,其後續可實現的功能不同,具體如下:
setTraceId參數不傳(預設):埋點日誌上報功能開啟,後續可以使用播放品質監控和視頻播放統計功能,無法使用單點追查功能。setTraceId參數傳入traceid:traceid的值由您自行定義,需為您的使用者或使用者裝置的唯一識別碼,例如傳入您業務的userid或者IMEI、IDFA等您業務使用者的裝置ID。傳入traceid後,埋點日誌上報功能開啟,後續可以使用播放品質監控、單點追查和視頻播放統計功能。setTraceId參數設定為DisableAnalytics:關閉埋點日誌上報,後續無法使用播放品質監控、單點追查和視頻播放統計功能。
步驟二:設定顯示視圖
播放器支援 AliDisplayView、SurfaceView 和 TextureView 三種視圖。
AliDisplayView:SDK封裝的統一視圖組件,提供標準化介面,開箱即用。適用於快速整合和相對簡單的UI情境。
SurfaceView / TextureView:原生視圖,業務層可完全自主管理檢視的生命週期和渲染邏輯。適用於複雜視圖層級或需要精細化控制的情境,靈活度更高。
在 XML 檔案中聲明視圖。
AliDisplayView
<!-- 播放器渲染視圖 --> <com.aliyun.player.videoview.AliDisplayView android:id="@+id/ali_display_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" />SurfaceView
<!-- 播放器渲染視圖 --> <SurfaceView android:id="@+id/surface_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" />TextureView
<!-- 播放器渲染視圖 --> <TextureView android:id="@+id/texture_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" />設定顯示視圖。
AliDisplayView
調用播放器的
setDisplayView介面,綁定播放器視圖。AliDisplayView mAliDisplayView = findViewById(R.id.display_view); // 可以通過 setPreferDisplayView() 設定播放檢視類型 mAliDisplayView.setPreferDisplayView(AliDisplayView.DisplayViewType.SurfaceView); mAliPlayer.setDisplayView(mAliDisplayView);SurfaceView
調用播放器的
setSurface介面,綁定播放器視圖。SurfaceView mSurfaceView = findViewById(R.id.surface_view); mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(@NonNull SurfaceHolder holder) { mAliPlayer.setSurface(holder.getSurface()); } @Override public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) { mAliPlayer.surfaceChanged(); } @Override public void surfaceDestroyed(@NonNull SurfaceHolder holder) { mAliPlayer.setSurface(null) } });TextureView
調用播放器的
setSurface介面,綁定播放器視圖。TextureView mTextureView = findViewById(R.id.texture_view); mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { @Override public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) { mAliPlayer.setSurface(new Surface(surface)); } @Override public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surface, int width, int height) { mAliPlayer.surfaceChanged(); } @Override public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) { mAliPlayer.setSurface(null); return true; } @Override public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) { } });
步驟三:設定播放源
VidAuth播放(推薦)
VidAuth vidAuth = new VidAuth();
vidAuth.setVid("Vid資訊");// 必選參數,視頻ID(VideoId)。
vidAuth.setPlayAuth("<yourPlayAuth>");// 必選參數,播放憑證,需要調用點播服務的GetVideoPlayAuth介面產生。
vidAuth.setRegion("接入地區");// 5.5.5.0及之後版本播放器SDK,本參數已棄用,無需設定region,播放器會自動解析region;5.5.5.0之前版本播放器SDK,本參數必選,點播服務的接入地區,預設為cn-shanghai。
// vidAuth.setAuthTimeout(3600);// 播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
mAliPlayer.setDataSource(vidAuth);VidSts播放
VidSts vidSts = new VidSts();
vidSts.setVid("Vid資訊");// 必選參數,視頻ID(VideoId)。
vidSts.setAccessKeyId("<yourAccessKeyId>");// 必選參數,STS臨時AK對的存取金鑰ID,需要調用STS服務的AssumeRole介面產生。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必選參數,STS臨時AK對的存取金鑰,需要調用STS服務的AssumeRole介面產生。
vidSts.setSecurityToken("<yourSecurityToken>");// 必選參數,STS安全性權杖,需要調用STS服務的AssumeRole介面產生。
vidSts.setRegion("接入地區");// 必選參數,點播服務的接入地區,預設為cn-shanghai。
mAliPlayer.setDataSource(vidSts);UrlSource播放
// 建立播放來源物件並設定播放地址
UrlSource urlSource = new UrlSource();
// 必選參數,播放地址,可以是第三方點播地址,或阿里雲ApsaraVideo for VOD服務中的播放地址,也可以是本地視頻地址。
urlSource.setUri("播放地址");
mAliPlayer.setDataSource(urlSource);更多設定播放源方法,請參見基礎功能。
步驟四:開始播放
// 準備播放
mAliPlayer.prepare();
// 開始播放
mAliPlayer.start();步驟五:結束播放
// 停止播放
mAliPlayer.stop();
// 銷毀播放器
mAliPlayer.release();
// 清Null 參考,避免記憶體流失
mAliPlayer = null;相關文檔
有關更多播放器基礎功能(如播放控制、事件監聽等),請參見基礎功能。