超级播放器

最后更新时间:2021-09-01 10:06:56

    产品概述

    腾讯云视立方 Android 超级播放器是腾讯云开源的一款播放器组件,简单几行代码即可拥有类似腾讯视频强大的播放功能,包括横竖屏切换、清晰度选择、手势和小窗等基础功能,还支持视频缓存,软硬解切换和倍速播放等特殊功能,相比系统播放器,支持格式更多,兼容性更好,功能更强大,同时还具备首屏秒开、低延迟的优点,以及视频缩略图等高级能力。

    版本支持

    本页文档所描述功能,在腾讯云视立方中支持情况如下:

    版本名称 基础直播 Smart 互动直播 Live 短视频 UGSV 音视频通话 TRTC 播放器 Player 全功能
    支持情况 - - - -
    SDK 下载
    下载 下载 下载 下载 下载 下载

    项目地址

    腾讯云视立方 Android 超级播放器的项目地址是 SuperPlayer_Android

    阅读对象

    本文档部分内容为腾讯云专属能力,使用前请开通 腾讯云 相关服务,未注册用户可注册账号 免费试用

    集成指引

    您可以选择使用 Gradle 自动加载的方式,或者手动下载 aar 再将其导入到您当前的工程项目中。

    方法一:自动加载(AAR)

    1. 下载 SDK + Demo 开发包,项目地址为 Android

    2. Demo/superplayerkit这个 module 复制到工程中,然后进行下面的配置:

      • 在工程目录下的setting.gradle 导入superplayerkit

        include ':superplayerkit'
        
      • 打开superplayerkit 工程的 build.gradle 文件修改 compileSdkVersion,buildToolsVersion,minSdkVersion,targetSdkVersion 和 rootProject.ext.liteavSdk 的常量值。

        compileSdkVersion 26
        buildToolsVersion "26.0.2"
        defaultConfig {
        targetSdkVersion 23
        minSdkVersion 19
        }
        dependencies {
        implementation 'com.tencent.liteav:LiteAVSDK_Player:latest.release'
        }
        
    3. 通过在 gradle 配置 mavenCentral 库,自动下载更新 LiteAVSDK,打开app/build.gradle,进行下面的配置:

      • 在 dependencies 中添加 LiteAVSDK_Player 的依赖。

        dependencies {
        implementation 'com.tencent.liteav:LiteAVSDK_Player:latest.release'
        implementation project(':superplayerkit')
        // 超级播放器弹幕集成的第三方库
        implementation 'com.github.ctiao:DanmakuFlameMaster:0.5.3'
        }
        
      • app/build.gradle defaultConfig 中,指定 App 使用的 CPU 架构(目前 LiteAVSDK 支持 armeabi 、 armeabi-v7a 和 arm64-v8a,可根据项目需求配置)。

        ndk {
        abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
        }
        
      • 在工程目录的 build.gradle 添加 mavenCentral 库。

        repositories {
        mavenCentral()
        }
        
    4. 单击 Sync Now 按钮同步 SDK,如果您的网络连接 mavenCentral 没有问题,很快 SDK 就会自动下载集成到工程里。

    方法二:手动下载(AAR)

    1. 下载 SDK + Demo 开发包,项目地址为 Android

    2. 导入SDK/LiteAVSDK_Player_XXX.aar(其中 XXX 为版本号)到 app 下面的 libs 文件夹以及复制Demo/superplayerkit这个 module 到工程中。

    3. 在工程目录下的 setting.gradle 导入superplayerkit

      include ':superplayerkit'
      
    4. 打开superplayerkit工程的 build.gradle 文件修改 compileSdkVersion,buildToolsVersion,minSdkVersion,targetSdkVersion 和 rootProject.ext.liteavSdk 的常量值。

      compileSdkVersion 26
      buildToolsVersion "26.0.2"
      defaultConfig {
      targetSdkVersion 23
      minSdkVersion 19
      }
      dependencies {
      implementation(name:'LiteAVSDK_Player_8.9.10349', ext:'aar')
      }
      
      • 配置 repositories
        repositories {
        flatDir {
          dirs '../app/libs'
        }
        }
        
    5. app/build.gradle中添加依赖:

      compile(name:'LiteAVSDK_Player_8.9.10349', ext:'aar')
      implementation project(':superplayerkit')
      // 超级播放器弹幕集成的第三方库
      implementation 'com.github.ctiao:DanmakuFlameMaster:0.5.3'
      
    6. 在项目build.gradle中添加:

      allprojects {
      repositories {
          flatDir {
              dirs 'libs'
          }
      }
      }
      
    7. app/build.gradle defaultConfig 中,指定 App 使用的 CPU 架构(目前 LiteAVSDK 支持 armeabi 、 armeabi-v7a 和 arm64-v8a)。

      ndk {
      abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
      }
      
    8. 单击 Sync Now 按钮同步 SDK,完成超级播放器的集成工作。

    方法三:集成 SDK(jar+so)

    如果您不想集成 aar 库,也可以通过导入 jar 和 so 库的方式集成 LiteAVSDK:

    1. 下载 SDK + Demo 开发包,项目地址为 Android,下载完成后进行解压。在SDK目录找到SDK/LiteAVSDK_Player_XXX.zip(其中XXX为版本号),解压得到libs目录,里面包含jar文件和so文件夹,文件清单如下:

    2. Demo/superplayerkit这个 module 复制到工程中,然后在工程目录下的 setting.gradle 导入superplayerkit

      include ':superplayerkit'
      
    3. 步骤1 解压得到的libs文件夹复制superplayerkit工程根目录。

    4. 修改superplayerkit/build.gradle文件:

      compileSdkVersion 26
      buildToolsVersion "26.0.2"
      defaultConfig {
      targetSdkVersion 23
      minSdkVersion 19
      }
      
      • 配置 sourceSets,添加so库引用代码。

        sourceSets{
        main{
            jniLibs.srcDirs = ['libs']
        }
        }
        
      • 配置 repositories,添加flatDir,指定本地仓库路径。

        repositories {
        flatDir {
          dirs 'libs'
        }
        }
        
    5. app/build.gradle defaultConfig 中,指定 App 使用的 CPU 架构(目前 LiteAVSDK 支持 armeabi 、 armeabi-v7a 和 arm64-v8a)。

      ndk {
      abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
      }
      
    6. 单击 Sync Now 按钮同步 SDK,完成 超级播放器的集成工作。

    配置 App 权限

    在 AndroidManifest.xml 中配置 App 的权限,LiteAVSDK 需要以下权限:

    <!--网络权限-->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--点播播放器悬浮窗权限-->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <!--存储-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    

    使用播放功能

    使用播放器

    播放器主类为SuperPlayerView,创建后即可播放视频。

    //不开防盗链
    SuperPlayerModel model = new SuperPlayerModel();
    model.appId = 1400329073;// 配置 AppId
    model.videoId = new SuperPlayerVideoId();
    model.videoId.fileId = "5285890799710670616"; // 配置 FileId
    mSuperPlayerView.playWithModel(model);
    //开启防盗链需填写 psign, psign 即超级播放器签名,签名介绍和生成方式参见链接:https://intl.cloud.tencent.com/document/product/266/38099
    SuperPlayerModel model = new SuperPlayerModel();
    model.appId = 1400329071;// 配置 AppId
    model.videoId = new SuperPlayerVideoId();
    model.videoId.fileId = "5285890799710173650"; // 配置 FileId
    mSuperPlayerView.playWithModel(model);
    model.videoId.pSign = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTQwMDMyOTA3MSwiZmlsZUlkIjoiNTI4NTg5MDc5OTcxMDE3MzY1MCIsImN1cnJlbnRUaW1lU3RhbXAiOjEsImV4cGlyZVRpbWVTdGFtcCI6MjE0NzQ4MzY0NywidXJsQWNjZXNzSW5mbyI6eyJ0IjoiN2ZmZmZmZmYifSwiZHJtTGljZW5zZUluZm8iOnsiZXhwaXJlVGltZVN0YW1wIjoyMTQ3NDgzNjQ3fX0.yJxpnQ2Evp5KZQFfuBBK05BoPpQAzYAWo6liXws-LzU"; 
    mSuperPlayerView.playWithModel(model);
    

    运行代码,可以看到视频在手机上播放,并且界面上大部分功能都处于可用状态。

    选择 FileId

    视频 FileId 在一般是在视频上传后,由服务器返回:

    1. 客户端视频发布后,服务器会返回 FileId 到客户端。
    2. 服务端视频上传时,在 确认上传 的通知中包含对应的 FileId。

    如果文件已存在腾讯云,则可以进入 媒资管理 ,找到对应的文件,查看 FileId。如下图所示,ID 即表示 FileId:

    打点功能

    在播放长视频时,打点信息有助于观众找到感兴趣的点。使用 修改媒体文件属性 API,通过 AddKeyFrameDescs.N 参数可以为视频设置打点信息。

    调用后,播放器的界面会增加新的元素。

    小窗播放

    小窗播放可以悬浮在所有 Activity 之上播放。使用小窗播放非常简单,只需要在开始播放前调用下面代码即可:

    // 播放器配置
    SuperPlayerGlobalConfig prefs = SuperPlayerGlobalConfig.getInstance();
    // 开启悬浮窗播放
    prefs.enableFloatWindow = true;
    //设置悬浮窗的初始位置和宽高
    SuperPlayerGlobalConfig.TXRect rect = new SuperPlayerGlobalConfig.TXRect();
    rect.x = 0;
    rect.y = 0;
    rect.width = 810;
    rect.height = 540;
    // ...其他配置
    

    退出播放

    当不需要播放器时,调用resetPlayer清理播放器内部状态,释放内存。

    mSuperPlayerView.resetPlayer();
    

    更多功能

    完整功能可扫码下载视频云工具包体验,或直接运行工程 Demo。