运行播放器Demo源码

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

解压后的目录结构如下:

文件名

作用

demo

播放器的Demo源码。Demo源码的目录结构参见下表。

JavaDoc

播放器API文档。

sdk

播放器SDK的aar库。

X.X.XReleaseNote

版本说明。

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模块必须导入,其余模块根据需要选择性导入。

    image-20210128173551010.png

  2. 单击Finish,AndroidStudio会自动选中其他需要导入的模块。

    image-20210128173905107.png

  3. 导入成功后,需要手动引入thirdparty-lib,将该文件夹拷贝到项目中,并修改Project的build.gradle文件,引用thirdparty-lib文件和Maven仓库。

    image-20210201100541465.png

    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.png

    如果出现下图中的报错,请参考故障排除报错.png

  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。

    集成步骤请参见集成Android端播放器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.png

  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时,当出现下图中报错时,请根据下述步骤排除故障。报错.png

  1. 打开app/AndroidManifest.xml文件,在application标签中添加如下代码。

    android:allowBackup="true"

    application.png

  2. 打开values/themes.xml及values-night/themes.xml文件,修改android:theme的themes资源文件为@style/Theme.AppCompat.NoActionBar

    themes文件修改.png