You need to enable JavaScript to run this app.
视频点播

视频点播

复制全文
历史文档
Android 视频上传 SDK(历史版本)
复制全文
Android 视频上传 SDK(历史版本)

适用版本

此文档仅适用于 1.32.2.2 之前的版本。如果您使用的是 1.32.2.2 或之后的版本,请查看视频上传

集成准备

环境要求

类别说明
开发环境Android Studio (推荐使用最新版本)
系统版本minSdkVersion: 14
ABI 兼容性架构要求:armv7 或 arm64

添加 maven 仓库

确保 project 根目录下的 build.gradle 文件中的 repositories 中配置了 mavenCentral() 和 火山引擎maven服务。

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://artifact.bytedance.com/repository/Volcengine/" // volc public maven repo
        }
    }
}

添加 SDK 依赖

在 module 目录下的 build.gradle 文件中的 dependencies 中添加 上传 SDK 依赖。如下所示:

dependencies {
    //... your own dependencies...
    def ttsdk_version = "x.x.x.x"   //推荐使用最新稳定版,具体版本号请参考下方的ChangeLog 
    implementation "com.bytedanceapi:ttsdk-ttuploader:$ttsdk_version"
    implementation "com.bytedanceapi:ttsdk-ttcommon:$ttsdk_version"
}

最新版本 SDK 获取

  • 最新 ttsdk_version 获取:详见 ChangeLog

快速开始

本模块介绍如何使用上传 SDK 以最快捷的方式进行视频上传。请在完成集成准备后,再进行该步骤。

您可直接通过下述 Demo,快速实现视频上传。

详细划分为 4 个步骤,也在本章节对 4 个步骤进行了解释与说明。

视频上传 Demo

import com.ss.ttuploader.TTVideoUploaderConfigTop;
import com.ss.ttuploader.TTVideoUploaderTop;
import com.ss.ttuploader.TTVideoInfoTop;
import com.ss.ttuploader.TTVideoUploaderListenerTop;

Context mContext = this.getApplicationContext();

// 下面填写的参数仅供释义,请填写您自己的参数
Map<String, Object> appinfoMap = new HashMap<>();
appinfoMap.put("appname", "your app name");
appinfoMap.put("appid", 123); // your app id
appinfoMap.put("appchannel", "xiaomi_appstore"); // 设为test_channel不会展示日志
appinfoMap.put("region", "china");
appinfoMap.put("appversion", BuildConfig.VERSION_NAME);

//初始化上传SDK配置
TTVideoUploaderTop.setAppInfo(mContext, appinfoMap);   //初始化上传配置,建议早配置

TTVideoUploaderTop uploaderTop;
try {
    uploaderTop = new TTVideoUploaderTop();
} catch (Exception e) {
    e.printStackTrace();
    return null;
}

TTVideoUploaderConfigTop config = new TTVideoUploaderConfigTop();
JSONObject sts = null;
try {
    sts = new JSONObject(authParam);    //authParam为鉴权串,从步骤3中获取。
    config.mSecretAccessKey = (String)sts.get("SecretAccessKey");
    config.mAccessKeyId = (String)sts.get("AccessKeyID");
    config.mSessionToken = (String)sts.get("SessionToken");
    config.mExpiredTime = (String)sts.get("ExpiredTime");
} catch (JSONException e) {
    e.printStackTrace();
}

config.mFilePathName = "/mnt/sdcard/test.mp4";       //视频文件路径
config.mRegion = "xxxxxx"; 
config.mSpace = "xxxxxx";         //即空间名称,此参数说明请参考下方文档   
config.mVideoHostName = "xxxxxx";
config.mFileType = "video";
config.mServerParameter = "key1=value1&key2=value2&";   //希望透传的参数

uploaderTop.setUploadConfig(config);

//注册回调
uploaderTop.setListener(new TTVideoUploaderListenerTop() {
    @Override
    public void onNotify(int what, long parameter, TTVideoInfoTop info) {
        if (what == MsgIsComplete) {
            //视频上传完成
        }
        else if(what == MsgIsUpdateProgress){
            //视频上传进度,parameter表示最新进度位置
        }
        else if(what == MsgIsFail) {
            //视频上传失败
        }
    }

    @Override
    public void onLog(int what, int code, String info) {
        //预留上报,可暂时忽略该函数的实现
    }
}); 

对于简单使用场景,使用上传 SDK 完成文件(视频)上传,需要以下 4 个步骤:

  • 初始化上传 SDK 环境
  • 创建视频上传对象 TTVideoUploaderTop
  • 获取鉴权 authParam
  • TTVideoUploaderTop 实例设置上传数据源及其他配置
  1. 初始化上传 SDK 环境

初始化操作很轻量,建议放到 Application#onCreate 中执行,保障初始化顺序

需要的参数列举如下:

参数类型说明
appidintApp id
appnameStringApp 英文名
appchannelString渠道
regionStringappid填写的地区或者国家
appversionString
Context mContext = this.getApplicationContext();

// 下面填写的参数仅供释义,请填写您自己的参数
Map<String, Object> appinfoMap = new HashMap<>();
appinfoMap.put("appname", "your app name");
appinfoMap.put("appid", 123); // your app id
appinfoMap.put("appchannel", "xiaomi_appstore"); // 设为test_channel不会展示日志
appinfoMap.put("region", "china");
appinfoMap.put("appversion", BuildConfig.VERSION_NAME);

//初始化上传SDK配置
TTVideoUploaderTop.setAppInfo(mContext, appinfoMap);   //初始化上传配置,建议早配置
  1. 创建视频上传对象 TTVideoUploaderTop
import com.ss.ttuploader.TTVideoUploaderTop;

TTVideoUploaderTop uploaderTop;
try {
    uploaderTop = new TTVideoUploaderTop();
} catch (Exception e) {
    e.printStackTrace();
    return null;
}

注意

需要关注下 TTVideoUploaderTop 实例的生命周期,如设置为局部变量时,会导致 TTVideoUploaderTop 实例析构销毁时,无法继续进行视频上传操作。

  1. 获取鉴权 authParam

此处获取的鉴权参数 authParam,用于第四步进行上传的鉴权配置。

//ex:JSONObject responseJson 如下:
{
    "result":{
        "AccessKeyID":"XXXXXX",
        "SecretAccessKey":"XXXXXX",
        "SessionToken":"XXXXXX",
        "ExpiredTime":"XXXXXX",
        "CurrentTime":"XXXXXX"
    }
}

String authParam = responseJson.getString("result");
  1. TTVideoUploaderTop 实例设置上传数据源及其他配置
参数类型说明
mSecretAccessKeyString服务端鉴权参数:临时 sk
mAccessKeyIdString服务端鉴权参数:临时 ak
mSessionTokenString服务端鉴权参数:token
mExpiredTimeString服务端鉴权参数:过期时间
mFilePathNameString文件路径
mRegionString地区
mSpaceString空间
mVideoHostNameString上传域名
mFileTypeString上传的文件类型
mServerParameterString额外的要带上的上传参数

说明

空间相关说明请参考空间管理

import com.ss.ttuploader.TTVideoUploaderConfigTop;

TTVideoUploaderConfigTop config = new TTVideoUploaderConfigTop();

JSONObject sts = null;
try {
    sts = new JSONObject(authParam);    //authParam为鉴权串,从步骤3中获取。
    config.mSecretAccessKey = (String)sts.get("SecretAccessKey");
    config.mAccessKeyId = (String)sts.get("AccessKeyID");
    config.mSessionToken = (String)sts.get("SessionToken");
    config.mExpiredTime = (String)sts.get("ExpiredTime");
} catch (JSONException e) {
    e.printStackTrace();
}

config.mFilePathName = "/mnt/sdcard/test.mp4";       //视频文件路径
config.mRegion = "cn-north-1"; 
config.mSpace = "xxxxxx";         //即空间名称,此参数说明请参考下方文档   
config.mVideoHostName = "vod.volcengineapi.com";
config.mFileType = "video";
config.mServerParameter = "key1=value1&key2=value2&";   //希望透传的参数

uploaderTop.setUploadConfig(config);

基础功能接入

快速开始章节中,我们完成 TTVideoUploaderTop 实例的创建,本章节介绍如何使用 TTVideoUploaderTop 实例进行上传。

  • 开始上传
uploaderTop.start();//开始上传
  • 暂停上传
uploaderTop.stop();//暂停上传
  • 释放 TTVideoUploaderTop 实例
uploaderTop.close();//停止上传并释放TTVideoUploaderTop实例

注意

在上传完成、上传失败或者其他任何时候需要释放上传对象的时候,一定要调用其- (void)close,不然会引起 crash 或者内存泄漏。

  • 上传信息获取

对应的监听类为 TTVideoUploaderListenerTop

//注册回调
uploaderTop.setListener(new TTVideoUploaderListenerTop() {
    @Override
    public void onNotify(int what, long parameter, TTVideoInfoTop info) {
        if (what == MsgIsComplete) {
            //视频上传完成
        }
        else if(what == MsgIsUpdateProgress){
            //视频上传进度,parameter表示最新进度位置
        }
        else if(what == MsgIsFail) {
            //视频上传失败
        }
    }

    @Override
    public void onLog(int what, int code, String info) {
        //预留上报,可暂时忽略该函数的实现
    }
});    

note:

当对应事件发生时,可获取该事件下的相应事件信息,如下表所示:

事件信息说明

MsgIsComplete
(视频上传完成)

获取上传的视频信息,如 vid、封面截图、meta、加密相关等信息,信息封装在 TTVideoInfoTop 中
TTVideoInfoTop 结构如下表所示

MsgIsUpdateProgress
(视频上传进度)

onNotify 函数参数 parameter 表示进度
TTVideoInfoTop 结构中的 mProgress 同样表示进度

MsgIsFail
(视频上传失败)

获取上传失败时的错误码,封装在 TTVideoInfoTop 中
TTVideoInfoTop 结构如下表所示

TTVideoInfoTop 结构

成员变量含义说明
mVideoId视频的 videoidstring
mCoverUri截图的 uristring
mProgress上传进度取值范围 0~100
mErrcode上传错误码上传错误的时候,这个会有错误码的值
mTosKey上传的视频的 uristring
mSourceInfo上传的视频的视频信息string
mEncryptionInfo上传的视频的加密信息string
mCallbackArgs希望透传的参数string
  • Debug 日志获取:当您遇到上传的问题时,可以打开 Debug 日志开关,获取详细日志信息,推进问题快速处理。
// 在创建上传对象之前,建议在调用上传之前配置 Debug 日志开关 TTVideoUploaderTop.setEnableDebug(1);

高级功能接入

视频抽帧作为封面

  • 进行视频上传时,可设置视频截图的时间点,将该时间点的视频截图作为上传视频的封面。

快速开始章节的第四个步骤TTVideoUploaderTop设置上传数据源及其他配置中增加相应的配置选项,即可接入该功能。

说明

视频上传在不设置 ProcessActionSnapshot 以及截图时间的情况下,默认会截取非黑帧的第一帧为封面。

config.mProcessAction = config.ProcessActionSnapshot;   //截图
config.snapshotTime = 1.0f;    //设置截图的时间点

增值服务接入

素材上传

Android素材上传SDK

最近更新时间:2023.10.27 16:27:03
这个页面对您有帮助吗?
有用
有用
无用
无用