本文为您介绍了Android端播放器SDK的支持系统、开发环境以及集成方式,通过本文您将了解如何进行SDK集成。

前提条件

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

SDK集成

SDK集成包含本地集成和Gradle集成两种方法。

  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冲突。
    • 集成步骤
      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'
        }
    • 混淆配置
      在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.**
  2. Gradle集成
    1. 在Project的build.gradle中增加阿里云的Maven地址依赖(buildscript和allprojects中均需添加)。示例如下:
      maven {
          url 'https://maven.aliyun.com/repository/releases'
      }
      操作后的截图如下:结果
    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'
      操作后的截图如下:结果

播放器Demo集成

  • 下载Demo

    下载最新版本Android播放器SDK

    image-20210128161414045

    文件作用,请参见下表:

    文件名 作用
    demo 播放器的Demo。
    JavaDoc 播放器API文档。
    sdk 播放器SDK的aar库。
    X.X.XReleaseNote 版本说明。
  • 运行Demo

    在Android Studio的导航栏选择File > Open,在弹框中选择demo中ApsaraVideoPlayer并导入,如下图所示:

    mage-20210128162213155.png

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

  • 集成Demo中的模块
    表 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等文件夹目录平级即可。
    以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引入播放器Demo的模块,这里只需要引入player_demo即可,因为该模块会引入其他的模块。
      implementation project(':Aliyunplayer:player_demo')
  • 不使用定制化UI集成播放器Demo

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

    • 集成播放器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" }
            }
        }
    • 修改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'
    • 拷贝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
    • 使用AliyunRenderView

      代码可以参考AliyunVodPlayerView。

      创建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>
      调用接口
      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。