You need to enable JavaScript to run this app.
文档中心
视频点播

视频点播

复制全文
下载 pdf
历史文档
Android 视频上传 SDK(历史版本)
复制全文
下载 pdf
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 中执行,保障初始化顺序
需要的参数列举如下:

参数

类型

说明

appid

int

App id

appname

String

App 英文名

appchannel

String

渠道

region

String

appid填写的地区或者国家

appversion

String

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 实例设置上传数据源及其他配置

参数

类型

说明

mSecretAccessKey

String

服务端鉴权参数:临时 sk

mAccessKeyId

String

服务端鉴权参数:临时 ak

mSessionToken

String

服务端鉴权参数:token

mExpiredTime

String

服务端鉴权参数:过期时间

mFilePathName

String

文件路径

mRegion

String

地区

mSpace

String

空间

mVideoHostName

String

上传域名

mFileType

String

上传的文件类型

mServerParameter

String

额外的要带上的上传参数

说明

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

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实例

注意

上传完成、上传失败或其他需要释放上传对象的情况下,均应调用 uploaderTop.close() 释放实例,避免发生崩溃或内存泄漏。

  • 上传信息获取

对应的监听类为 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

视频的 videoid

string

mCoverUri

截图的 uri

string

mProgress

上传进度

取值范围 0~100

mErrcode

上传错误码

上传错误的时候,这个会有错误码的值

mTosKey

上传的视频的 uri

string

mSourceInfo

上传的视频的视频信息

string

mEncryptionInfo

上传的视频的加密信息

string

mCallbackArgs

希望透传的参数

string

  • Debug 日志获取:当您遇到上传的问题时,可以打开 Debug 日志开关,获取详细日志信息,推进问题快速处理。
// 在创建上传对象之前,建议在调用上传之前配置 Debug 日志开关 TTVideoUploaderTop.setEnableDebug(1);

高级功能接入

视频抽帧作为封面

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

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

说明

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

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

增值服务接入

素材上传

Android素材上传SDK

最近更新时间:2026.09.17 15:31:47
这个页面对您有帮助吗?
有用
有用
无用
无用