前言
视频点播平台已对外发布,当前支持IOS、Android、Web等客户端上传,该实验主要使用IOS SDK实现简单上传功能。
关于实验
预计部署时间:30分钟 级别:初级 相关产品:视频点播 受众: 通用
实验说明
完成点播空间创建
完成应用创建
第一步-环境准备
- 本实验需要准备xcode,可以到App Store上安装或到官网下载。 官网下载:https://developer.apple.com/download/all/
- 有个人账号,能在xcode上真机调试;摄像头麦克风等模拟器无法调试。
- 获取应用的ID信息。
- 安装cocoapods。
第二步-新建项目
点击Next后项目创建完成。
第三步-导入SDK
使用cocoapods导入SDK。
- 关闭xcode,通过终端进入项目所在的路径,创建Podfile
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/bytedance/cocoapods_sdk_source_repo.git'
source 'https://github.com/volcengine/volcengine-specs.git'
install! 'cocoapods', :deterministic_uuids => false
platform :ios, '9.0'
# 项目名
target 'Upload-Test' do
# SDK名 ,upload需要的头文件在player,需要先导入
pod 'TTSDK', '1.23.1.4-premium', :subspecs => [
'Uploader',
]
#上报SDK
pod 'RangersAppLog', '< 6.0.0', :subspecs=>['Core', 'Host']
end
- 执行 pod install,将SDK导入到项目。 此时目录下生成了Upload-Test.xcworkspace,后续的代码都添加在xcworkspace中。目录结构如图:
- 打开 Upload-Test.xcworkspace 首选将需要上传的资源拖到项目。ios 项目中的资源都存在沙盒中,沙盒和其他项目中资源互相隔离。 导入后的效果
第四步-代码设置
- 找到AppDelegate.m,导入头文件#import <TTSDK/TTVideoUploadClientTop.h>,并在didFinishLaunchingWithOptions中加上如下代码。
// 配置基本信息 建议早配置
NSDictionary *appInfo = @{
@"TTVideoEngineAID" : @(xxxx), //创建的应用id
@"TTVideoEngineAppName" : @"xxxx",// appName
@"TTVideoEngineChannel" : @"xxxx", //渠道
@"TTVideoEngineUserId" : @"xxxx", //user_id
};
[TTVideoUploadClientTop configureAppInfo:appInfo];//设置配置信息
2. 找到 ViewController.m,导入头文件#import <TTSDK/TTVideoUploadClientTop.h>,声明对象和代理,如图
- 代码放在viewDidLoad中
//设置需要上传的文件
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"文件名" ofType:nil];
clientTop = [[TTVideoUploadClientTop alloc] initWithFilePath:filePath];
//获取上传token
[clientTop setAuthorizationParameter:"业务服务器返回"];
NSDictionary* requestParameter = @{
TTFileUploadFileTypeStr:@"object", //表示上传类型 视频 音频或其他对象
TTFileUploadSpace:@"xxxx", // 参数"空间",必需参数。
};
//配置上传空间
[clientTop setRequestParameter:requestParameter];
//上传参数配置
NSDictionary* config = @{
TTFileUploadFileRetryCount:@1, //文件重试次数
// TTFileUploadSocketNum:@1, //socket数量
TTFileUploadTraceId:@"xxxx" //traceId 排查日志用
};
[clientTop setUploadConfig:config];
//上传网关,必须要配置,固定不可修改
NSString* hostName = @"vod.volcengineapi.com";
[clientTop setVideoHostName:hostName]; //设置网关域名
clientTop.delegate = self;//设置代理,用来接收上传进度和结果
[clientTop start]; //开始上传
- 添加回调方法,接收上传结果或报错信息等
- (void)uploadDidFinish:(nullable TTVideoUploadInfoTop *)videoInfo error:(nullable NSError *)error{
NSLog(@"TTVideoUploadInfoTop -- %@ -- %@ -- %@ -- %@",videoInfo.vid,videoInfo.callbackArgs,videoInfo.sourceInfo,error); //打印上传结果
}
- (void)uploadProgressDidUpdate:(NSInteger)progress{
NSLog(@"-----%ld",progress);//打印进度
}
第五步-运行
uploadDidFinish中打印没有error信息即上传成功 完成上传操作。
附ViewController.m代码
//
// ViewController.m
// Upload-Test
//
// Created by bytedance on 2021/12/14.
//
#import "ViewController.h"
#import <TTSDK/TTVideoUploadClientTop.h>
@interface ViewController ()<TTVideoUploadClientTopDelegate>
{
TTVideoUploadClientTop* clientTop;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//设置需要上传的文件
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"文件名" ofType:nil];
clientTop = [[TTVideoUploadClientTop alloc] initWithFilePath:filePath];
//获取上传token
[clientTop setAuthorizationParameter:"业务服务器返回"];
NSDictionary* requestParameter = @{
TTFileUploadFileTypeStr:@"object", //表示上传类型 视频 音频或其他对象
TTFileUploadSpace:@"xxxx", // 参数"空间",必需参数。
};
//配置上传空间
[clientTop setRequestParameter:requestParameter];
//上传参数配置
NSDictionary* config = @{
TTFileUploadFileRetryCount:@1, //文件重试次数
// TTFileUploadSocketNum:@1, //socket数量
TTFileUploadTraceId:@"asdf" //traceId 排查日志用
};
[clientTop setUploadConfig:config];
//上传网关,必须要配置,固定不可修改
NSString* hostName = @"vod.volcengineapi.com";
[clientTop setVideoHostName:hostName]; //设置网关域名
clientTop.delegate = self;//设置代理,用来接收上传进度和结果
[clientTop start]; //开始上传
// Do any additional setup after loading the view.
}
- (void)uploadDidFinish:(nullable TTVideoUploadInfoTop *)videoInfo error:(nullable NSError *)error{
NSLog(@"TTVideoUploadInfoTop -- %@ -- %@ -- %@ -- %@",videoInfo.vid,videoInfo.callbackArgs,videoInfo.sourceInfo,error); //打印上传结果
}
- (void)uploadProgressDidUpdate:(NSInteger)progress{
NSLog(@"-----%ld",progress);//打印进度
}
@end