本文为您介绍了Android端播放器SDK的支持系统、开发环境、集成方式以及Demo运行。

前提条件

类别 说明
系统版本 支持Android 4.3及以上。
手机芯片 架构要求:
  • armv7。
  • arm64。
开发工具 建议使用Android Studio,本文操作步骤基于Android Studio开发。下载Android Studio
播放器SDK版本 支持播放器5.3.0版本SDK及以上版本。

SDK集成(本地集成)

  1. 下载SDK包。
    下载最新版本Android播放器SDK
    SDK包整体结构结构
    SDK包里包含了4个aar文件:
    • AliyunPlayer-x.x.x-full.aar:是完整的aar包,包含了ffmpeg动态库的包。
    • AliyunPlayer-x.x.x-part.aar:是不包含ffmpeg的动态库的包。
    • AlivcArtp-x.x.x.aar:支持artp协议,非必须。
    • AlivcArtc-x.x.x.aar:支持artc协议,非必须。
    说明
    • 如果不集成短视频SDK,直接依赖AliyunPlayer-x.xx.x-full.aar包即可。
    • 如果集成播放器的同时,也集成短视频SDK,那么播放器的SDK依赖AliyunPlayer-x.x.x-part包,同时使用共通的ffmpeg版本,即需要额外依赖com.aliyun.video.android:AlivcFFmpeg:x.x.x这个包。
    • 如果集成时使用了错误的SDK包,会导致ffmpeg冲突。
  2. 集成。
    1. 拷贝需要的aar包到工程的libs目录下(如果没有,手动创建libs文件夹即可)。
      图片
    2. 修改Projec下的build.gradle文件,在allprojects的repositories节点中增加flatDir的设置,示例如下:
      flatDir {
         dirs 'libs'
      }
    3. 修改App的build.gradle文件,dependencies节点中增加对aar的引用和Conan的引用,示例如下:
      dependencies {
            implementation fileTree(dir: 'libs', include: ['*.aar'])
            //阿里云播放器5.3.0 版本以前需要引入AlivcConan库,5.3.0及其以后的版本不需要引入。
            implementation 'com.alivc.conan:AlivcConan:x.x.x'
      }
  3. 混淆配置。
    在App的Proguard-rules.pro文件中添加以下混淆配置,示例如下:
    -keep class com.alivc.**{*;}
    -keep class com.aliyun.**{*;}
    -keep class com.cicada.**{*;}
    -dontwarn com.alivc.**
    -dontwarn com.aliyun.**
    -dontwarn com.cicada.**

SDK集成(Gradle集成)

  1. 在Project的build.gradle中增加阿里云的Maven地址依赖。示例如下:
    maven {
        url 'https://maven.aliyun.com/repository/releases'
    }
    操作后的截图如下:gradle集成
  2. 修改App的build.gradle文件,dependencies节点中增加依赖。示例如下:
    implementation 'com.aliyun.sdk.android:AliyunPlayer:x.x.x-full'
    //阿里云播放器5.3.0 版本以前需要引入AlivcConan库,5.3.0及其以后的版本不需要引入
    implementation 'com.alivc.conan:AlivcConan:x.x.x'
    操作后的截图如下:结果

使用定制化UI集成播放器Demo

播放器Demo中包含许多定制化UI,可按照以下操作步骤使用定制化UI集成播放器Demo。Demo项目使用Gradle方式引入了播放器SDK,并对播放器SDK做了一些封装以及定制化的UI,您可以根据需要选择集成Demo中的模块或者选择直接使用播放器SDK。

  1. 下载Demo源码。
    下载地址请参见Android播放器SDK,建议使用最新版本集成。

    源码解压后的目录如下:

    文件名 作用
    demo 播放器的Demo。
    JavaDoc 播放器API文档。
    sdk 播放器SDK的aar库。
    X.X.XReleaseNote 版本说明。
  2. 运行Demo。
    在Android Studio的导航栏选择File > Open,在弹框中选择demo中的ApsaraVideoPlayer并导入,如下图所示:mage-20210128162213155.png
    表 1. Demo目录结构说明
    模块名 模块作用
    AliyunListPlayer 列表播放模块,对应列表播放器的示例代码。
    AliyunLiveShiftPlayer 直播时移模块,对应直播时移的示例代码。
    AliyunPlayer 播放器模块,对应播放器的示例代码。
    AliyunPlayerBase 播放器Demo的Base模块,使用gradle方式集成了播放器SDK。
    AliyunVideoCommon 阿里云项目公共模块,包括一些工具类。
    zxing 二维码扫描模块。
    thirdparty-lib 包含Demo中的所有的依赖。
    说明
    • AliyunPlayerBase、AliyunVideoCommon这2个模块是必须导入,无论导入Demo中的哪一个和播放器相关的模块,都需要引入这2个模块。
    • thirdparty-lib也必须导入,但thirdparty-lib并不是AndroidStudio中的Modeul项目,需要手动拷贝到项目中,和AliyunPlayerBase、AliyunVideoCommon等文件夹目录平级即可。
  3. 集成Demo中的模块。
    说明 以下步骤以集成AliyunPlayer模块为例,介绍如何快速集成Demo中的模块。
    1. 单击Android Studio的导航栏,选择File > New > Import Module...,选择需要导入的模块,如下图所示:
      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保持一致。
      修改Module
      故障排除
      如果出现下图中的报错,请根据下述步骤排除故障:报错
      1. 打开app/AndroidManifest.xml文件,在application标签中添加如下代码。
        android:allowBackup="true"
        application
      2. 打开values/themes.xmlvalues-night/themes.xml文件,修改android:theme的themes资源文件为@style/Theme.AppCompat.NoActionBarthemes文件修改
    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);

不使用定制化UI集成播放器Demo

播放器Demo中包含许多定制化UI,如果您不需要定制化UI,可以大量减少播放器Demo中的module引入。

  1. 集成播放器SDK(Gradle、本地方式都可以),下面以Gradle方式为例。首先在Project的build.gradle中增加阿里云的Maven地址依赖。
    buildscript {
          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" }
          }
      }
  2. 修改App的build.gradle文件,增加阿里云播放器的依赖。如下所示:
    implementation 'com.aliyun.sdk.android:AliyunPlayer:x.x.x-full'
    //阿里云播放器5.3.0 版本以前需要引入 AlivcConan 库,5.3.0及其以后的版本不需要引入
    implementation 'com.alivc.conan:AlivcConan:x.x.x'
  3. 拷贝Demo中部分代码。
    拷贝Aliyunplayer/AlivcPlayerTools/src/main/java/com/aliyun/player/alivecpalyerexpand/widget目录下的文件:AliyunRenderView、IRenderView、TextureRenderView、SurfaceRenderView。
    说明
    • SurfaceRenerView和TextureRenderView分别对应使用SurfaceView和TextureView来渲染视频画面。
    • AliyunRenderView为播放器的封装,将播放器和渲染的View绑定。
    • AliyunVodPlayerView不用拷贝,该文件中包含的是AliyunRenderView的使用示例代码。
    image-20210202094604436
  4. 使用AliyunRenderView。
    代码可以参考AliyunVodPlayerView。
    1. 创建AliyunRenderView。
        <?xml version="1.0" encoding="utf-8"?>
        <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"
            tools:context=".AliPlayerActivity">
      
            <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。