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及以上版本。
手机芯片 架构要求:
  • armv7。
  • arm64。
开发工具 推荐使用Android Studio,本文操作步骤基于Android Studio开发。下载地址:Android Studio

前提条件

下载Android播放器SDK包(包含了播放器SDK及Demo源码),推荐下载使用最新版本。下载地址请参见SDK简介与下载

解压后的目录结构如下:
表 1. SDK目录结构
文件名 作用
demo 播放器的Demo源码。Demo源码的目录结构参见表 2
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的导航栏选择File > Open,在弹框中选择demo中的ApsaraVideoPlayer并导入。
mage-20210128162213155.png

集成Demo模块(含内置UI)

通过选择导入播放器SDK Demo源码中的部分模块,可不集成SDK,选择性的使用封装好的包含内置UI播放器的部分功能。
说明 以下步骤以集成AliyunPlayer模块为例,介绍如何快速集成Demo中的模块。
  1. 单击Android Studio的导航栏,选择File > New > Import Module...,选择需要导入的模块player_demo
    说明 其中AliyunPlayerBase、AliyunVideoCommon和thirdparty-lib模块必须导入,其余模块根据需要选择性导入。详细请参见表 2
    image-20210128173551010
  2. 单击Finish,AndroidStudio会自动选中其他需要导入的模块。
    image-20210128173905107
  3. 导入成功后,需要手动引入thirdparty-lib,将该文件夹拷贝到项目中,并修改Project的build.gradle文件,引用thirdparty-lib文件和Maven仓库。
    image-20210201100541465
    buildscript {
        apply from: 'thirdparty-lib/config.gradle'
    
        repositories {
            google()
            jcenter()
            maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
            //引入投屏需要使用的maven仓库
            maven { url 'http://4thline.org/m2' }
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
            maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
            //引入投屏需要使用的maven仓库
            maven { url 'http://4thline.org/m2' }
        }
    }
  4. 进入app目录下的build.gradle文件,修改参数compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion的值,使其与播放器SDK Demo中Module目录下thirdparty-lib/config.gradle文件中的值保持一致。
    修改Module
    如果出现下图中的报错,请参考故障排除排除故障。报错
  5. 在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中封装好的功能,则可以通过以下步骤实现。

  1. 集成播放器SDK。
    请参见快速集成
  2. 拷贝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的使用示例代码。
    image-20210202094604436
  3. 使用AliyunRenderView。
    可参考AliyunVodPlayerView文件中的示例代码。
    1. 创建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>
    2. 调用接口。
      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时,当出现下图中报错时,请根据下述步骤排除故障。报错
  1. 打开app/AndroidManifest.xml文件,在application标签中添加如下代码。
    android:allowBackup="true"
    application
  2. 打开values/themes.xmlvalues-night/themes.xml文件,修改android:theme的themes资源文件为@style/Theme.AppCompat.NoActionBar
    themes文件修改