Demo源碼提供了播放器的常用功能示例,集成播放器SDK前,可以先運行Demo源碼以了解和體驗播放器SDK的功能。您也可以不單獨集成SDK,直接集成完整的Demo源碼來直接使用播放器SDK,或根據需要集成Demo源碼中的部分模塊來使用。
體驗Demo
體驗Demo提供了完整的產品級的交互UI和業務源碼,包含短視頻、播放器和上傳等SDK。您可以掃描二維碼下載Demo App體驗阿里云播放器相關功能。二維碼地址請參見Demo體驗。同時阿里云也免費提供Android播放器SDK Demo源碼。Android播放器SDK Demo源碼中內置了UI,以下分別介紹使用和不使用內置的UI來集成播放器Demo源碼的場景及操作步驟。
場景 | 說明 |
運行完整Demo(含內置UI) | 適用于需要使用內置UI,且想要使用Demo源碼中提供的所有功能。 此場景下無需單獨集成SDK,直接導入完整的Demo源碼并運行即可。 |
集成Demo模塊(含內置UI) | 適用于需要使用內置UI,但只想使用Demo源碼中的部分功能。 此場景下無需單獨集成SDK,只需選擇性的導入Demo源碼中的功能模塊運行即可。 |
集成Demo(不含內置UI) | 適用于不需要內置UI(自定義UI或不使用UI),又想省去自己開發的麻煩,直接使用Demo中封裝好的功能。 此場景下需要先集成SDK,再集成Demo中的相關文件。 |
環境要求
類別 | 說明 |
系統版本 | 支持Android 4.3及以上版本。 |
手機芯片 | 架構要求:
|
開發工具 | 推薦使用Android Studio,本文操作步驟基于Android Studio開發。下載地址:Android Studio。 |
前提條件
下載Android播放器SDK包(包含了播放器SDK及Demo源碼),推薦下載使用最新版本。下載地址請參見SDK簡介與下載。
解壓后的目錄結構如下:
表 1. SDK目錄結構
文件名 | 作用 |
demo | 播放器的Demo源碼。Demo源碼的目錄結構參見demo目錄結構。 |
JavaDoc | 播放器API文檔。 |
sdk | 播放器SDK的aar庫。 |
X.X.XReleaseNote | 版本說明。 |
表 2. demo目錄結構
模塊名 | 模塊作用 |
AliyunListPlayer | 列表播放模塊,對應列表播放器的示例代碼。 |
AliyunLiveShiftPlayer | 直播時移模塊,對應直播時移的示例代碼。 |
AliyunPlayer | 播放器模塊,對應播放器的示例代碼。 |
AliyunPlayerBase | 播放器Demo的Base模塊,使用gradle方式集成了播放器SDK。 說明 此模塊必須導入,無論導入Demo中的哪一個和播放器相關的模塊,都需要導入此模塊。 |
AliyunVideoCommon | 阿里云項目公共模塊,包括一些工具類。 說明 此模塊必須導入,無論導入Demo中的哪一個和播放器相關的模塊,都需要導入此模塊。 |
zxing | 二維碼掃描模塊。 |
thirdparty-lib | 包含Demo中的所有的依賴。 說明 此模塊必須導入,但thirdparty-lib并不是AndroidStudio中的Module項目,需要手動拷貝到項目中,和AliyunPlayerBase、AliyunVideoCommon等文件夾目錄平級即可。 |
運行完整Demo(含內置UI)
通過導入完整的播放器SDK Demo包,可不再單獨集成SDK,直接開始使用包含了內置UI的播放器功能。
在Android Studio的導航欄選擇 ,在彈框中選擇demo中的ApsaraVideoPlayer并導入。
集成Demo模塊(含內置UI)
通過選擇導入播放器SDK Demo源碼中的部分模塊,可不集成SDK,選擇性的使用封裝好的包含內置UI播放器的部分功能。
以下步驟以集成AliyunPlayer模塊為例,介紹如何快速集成Demo中的模塊。
單擊Android Studio的導航欄,選擇player_demo。 ,選擇需要導入的模塊
說明其中AliyunPlayerBase、AliyunVideoCommon和thirdparty-lib模塊必須導入,其余模塊根據需要選擇性導入。詳細請參見demo目錄結構。
單擊Finish,AndroidStudio會自動選中其他需要導入的模塊。
導入成功后,需要手動引入thirdparty-lib,將該文件夾拷貝到項目中,并修改Project的build.gradle文件,引用thirdparty-lib文件和Maven倉庫。
buildscript { apply from: 'thirdparty-lib/config.gradle' repositories { google() jcenter() maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" } } } allprojects { repositories { google() jcenter() maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" } } }
進入app目錄下的build.gradle文件,修改參數compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion的值,使其與播放器SDK Demo中Module目錄下thirdparty-lib/config.gradle文件中的值保持一致。
如果出現下圖中的報錯,請參考故障排除排除故障。
在app目錄下的build.gradle文件中,刪除AndroidX相關的依賴,并增加如下依賴。
implementation externalAndroidSupportV4 implementation externalAndroidAppCompatV7 implementation project(':Aliyunplayer:player_demo')
集成完后,可通過如下代碼跳轉到播放器的AliyunPlayer模塊。
Intent intent = new Intent(MainActivity.this,AliyunPlayerSettingActivity.class); startActivity(intent);
集成Demo(不含內置UI)
播放器Demo中包含許多內置UI,如果您不需要內置UI(自定義UI或不使用UI),又想省去自己開發的麻煩,直接使用Demo中封裝好的功能,則可以通過以下步驟實現。
集成播放器SDK。
請參見快速集成。
拷貝Demo中部分代碼。
拷貝Aliyunplayer/AlivcPlayerTools/src/main/java/com/aliyun/player/alivecpalyerexpand/widget目錄下的文件:AliyunRenderView、IRenderView、TextureRenderView、SurfaceRenderView。
說明AliyunRenderView為播放器的封裝,將播放器和渲染的View綁定。
IRenderView用于統一渲染接口,SurfaceRenderView和TextureRenderView 都實現了IRenderView。
SurfaceRenerView和TextureRenderView分別對應使用SurfaceView和TextureView來渲染視頻畫面。
AliyunVodPlayerView無需拷貝,該文件提供的是AliyunRenderView的使用示例代碼。
使用AliyunRenderView。
可參考AliyunVodPlayerView文件中的示例代碼。
創建AliyunRenderView。
<?xml version="1.0" encoding="utf-8"?> <!-- LinearLayout是根布局,可以修改為其他ViewGroup,這里僅是示例代碼 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 播放器自定義View,封裝了播放器和渲染View,屬性說明: android:id為ViewId,請根據實際填寫 android:layout_width為View的寬度,可修改,會影響播放畫面 android:layout_height為View的高度,可修改,會影響播放畫面 --> <com.aliyun.playertest.playerDemo.AliyunRenderView android:id="@+id/aliyunRenderView" android:layout_width="match_parent" android:layout_height="200dp" /> </LinearLayout>
調用接口。
java //設置渲染View的類型,可選 SurfaceType.TEXTURE_VIEW 和 SurfaceType.SURFACE_VIEW aliyunRenderView.setSurfaceType(AliyunRenderView.SurfaceType.SURFACE_VIEW); //設置監聽 aliyunRenderView.setXXXListener; //設置播放源,setDataSource為重載方法,還可以設置 sts,playAuth 等數據源 aliyunRenderView.setDataSource(urlSource); //播放相關 aliyunRenderView.prepare(); aliyunRenderView.start() aliyunRenderView.pause() aliyunRenderView.stop() aliyunRenderView.release()
說明上述代碼展示了部分接口,其余部分的接口可以參照AliyunVodPlayerView文件的示例代碼來使用,也可以根據播放器SDK的API接口文檔來使用AliyunRenderView。
故障排除
使用內置UI集成部分播放器Demo時,當出現下圖中報錯時,請根據下述步驟排除故障。
打開app/AndroidManifest.xml文件,在application標簽中添加如下代碼。
android:allowBackup="true"
打開values/themes.xml及values-night/themes.xml文件,修改android:theme的themes資源文件為@style/Theme.AppCompat.NoActionBar。