本文通过示例详细介绍如何使用服务端上传SDK(C/C++语言)将各类媒体文件上传至点播存储。
整体说明
从内部逻辑角度看,C/C++上传SDK遵循点播服务端SDK的通用流程。详情请参见上传流程。从操作角度看,使用C/C++上传SDK的基础流程如下:
完成前提条件。请参见前提条件。
集成C/C++上传SDK。请参见集成C/C++上传SDK。
实现上传逻辑(主要是上传信息配置)。
音视频上传请参见场景一:上传音视频。
图片上传请参见场景二:上传图片。
辅助媒资上传请参见场景三:上传辅助媒资。
前提条件
您已经开通了视频点播服务。开通步骤请参见开通视频点播服务。
您已经完成上传相关的系统配置,包括启用目标存储地域的存储地址和配置回调。操作指引请参见管理存储Bucket及回调设置。
您已准备好用于调用点播服务的账号。为避免阿里云账号AccessKey泄露带来的安全风险,推荐您创建RAM用户并授予其VOD相关权限。然后使用RAM用户的AK对(AccessKey ID和AccessKey Secret)访问点播服务。操作指引请参见创建RAM用户并授权。
已配置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具体操作,请参见在Linux、macOS和Windows系统配置环境变量。
重要阿里云账号的AccessKey拥有所有API的访问权限,建议您使用RAM用户的AccessKey进行API访问或日常运维。
强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
(可选)如需使用STS临时授权方式(阿里云Security Token Service)访问点播服务,请为RAM用户创建角色并授予角色VOD相关权限。操作指引请参见获取STS Token。
集成C/C++上传SDK
视频点播服务端C/C++上传SDK仅支持Linux环境。
此处以SDK1.0.0版本举例说明。其他版本请根据实际情况操作。
上传SDK及示例代码解压后的目录详细信息,请参见下文目录说明。
本文以普通用户执行操作为例进行安装命令说明。
使用视频点播服务端C/C++上传SDK,您必须要安装的软件包及其用途、安装示例请参见下述表格。
软件包 | 作用 | yum安装示例 | 网上下载安装示例 |
CMake | 第三方编译安装工具 |
|
|
libcurl | 解决网络连接等问题 |
|
|
libuuid | 生成uuid | 安装示例:
| 不涉及 |
apr | 不涉及 | 安装示例:
|
|
apr-util | 解决内存管理以及跨平台问题 | 安装示例:
|
|
minixml | 解析请求返回的xml | 安装示例:
|
|
jsoncpp | 解析请求返回的JSON | 安装示例:
|
|
OSS SDK | 由于上传SDK依赖OSS,需要下载并安装OSS SDK | 不涉及 | 下载地址和安装步骤,请参见OSS SDK安装。 重要 有部分OSS依赖库已经在前面步骤进行安装,已经安装的不需要再次进行重复安装。 |
C/C++上传SDK | 上传文件 | 不涉及 | 下载地址:
安装示例:
|
C/C++上传SDK目录说明
/VodSDK-C_1.0.0.gz解压目录/VodSDK-C_1.0.0/aliyun-c-sdk-vod/src/upload.h
目录 | 说明 |
CreateUploadVideoRequest | 上传视频的请求类,字段请参见获取音视频上传地址和凭证。 |
CreateUploadImageRequest | 上传图片的请求类,字段请参见获取图片上传地址和凭证。 |
CreateUploadAttachedMediaRequest | 上传辅助媒资的请求类,字段请参见获取辅助媒资上传地址和凭证。 |
UploadOptions | 上传参数结构体,包含如下参数:
|
uploadLocalVideo | 上传本地视频。 |
uploadWebVideo | 上传网络视频。 |
uploadLocalImage | 上传本地图片。 |
uploadWebImage | 上传网络图片。 |
uploadLocalAttachedMedia | 上传本地辅助媒资文件。 |
uploadWebAttachedMedia | 上传网络辅助媒资文件。 |
uploadLocalM3u8 | 上传本地m3u8视频。 |
uploadWebM3u8 | 上传网络m3u8视频。 |
/VodSDK-C_1.0.0.gz解压目录/VodSDK-C_1.0.0/aliyun-c-sdk-vod/samples
目录 | 说明 |
uploadVideo.cpp | 上传视频的示例代码。 |
uploadImage.cpp | 上传图片的示例代码。 |
uploadAttachedMedia.cpp | 上传辅助媒资的示例代码。 |
场景一:上传音视频
普通音视频
音视频上传目前支持以下类型文件上传:
上传本地文件,使用分片上传,最大支持48.8 TB的单个文件,不支持断点续传。请参见testUploadLocalVideo函数。
上传网络文件,可指定文件URL进行上传,最大支持48.8 TB的单个文件。该上传方式需要先将网络文件下载到本地磁盘,再进行上传,所以要保证本地磁盘有充足的空间。请参见示例代码中的testUploadWebVideo函数。