本文通过示例详细介绍如何使用服务端上传SDK(Python语言)将各类媒体文件上传至点播存储。
整体说明
从内部逻辑角度看,Python上传SDK遵循点播服务端SDK的通用流程。详情请参见上传流程。从操作角度看,使用Python上传SDK的基础流程如下:
完成前提条件。具体操作请参见前提条件。
集成Python上传SDK。具体操作请参见集成Python上传SDK。
实现上传逻辑(主要是上传信息配置)。
音视频上传请参见场景一:上传音视频。
图片上传请参见场景二:上传图片。
辅助媒资上传请参见场景三:上传辅助媒资。
Python上传SDK默认服务接入点为
cn-shanghai
(上海), 若需要上传媒体文件到其他区域,可以通过AliyunVodUploader.py
中的ApiRegion
来指定区域,点播支持的服务接入点,请参见服务接入点。以指定上传区域为
cn-beijing
(北京)为例,配置示例如下:self.setApiRegion('cn-beijing')
前提条件
您已经开通了视频点播服务。开通步骤请参见开通视频点播服务。
您已经完成上传相关的系统配置,包括启用目标存储地域的存储地址和配置回调。操作指引请参见管理存储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临时授权方案上传视频。
说明STS临时授权方式的适用场景请参见凭证方式与STS方式对比。
集成Python上传SDK
上传SDK目录详细介绍请参见下文目录说明。
本文以普通用户执行操作为例进行说明。
执行以下命令安装依赖包。
sudo pip install aliyun-python-sdk-core
sudo pip install aliyun-python-sdk-vod
sudo pip install oss2
说明如果使用的是 Python 3.x,请将sudo pip install aliyun-python-sdk-core修改为sudo pip install aliyun-python-sdk-core-v3。如果同时安装了不同版本,可使用pip3命令。如果集成遇到问题,请参见常见问题排查。
下载Python上传SDK及示例代码VodUploadSDK-Python_1.3.*.zip,更多信息,请参见上传SDK。
说明此处以SDK1.3.1版本举例说明。其他版本请根据实际情况操作。
解压VodUploadSDK-Python_1.3.*.zip,将VodUploadSDK-Python_1.3.*目录下的voduploadsdk复制到本地项目工程目录下(推荐),或复制到site-packages目录下。
更新Python上传SDK
若发现新的接口或已有接口新的功能在当前SDK没有,可将SDK更新到最新版。
执行以下命令更新依赖包。
sudo pip install --upgrade aliyun-python-sdk-vod
sudo pip install --upgrade oss2
下载最新的Python上传SDK覆盖到本地SDK文件。更多信息,请参见SDK下载。
说明您可以打开voduploadsdk目录下的ChangeLog.txt文件查看当前SDK的版本号和发布日期。
Python上传SDK目录说明
voduploadsdk目录
AliyunVodUtils.py
目录
说明
AliyunVodLog
上传SDK的日志类,基于logging实现。
AliyunVodUtils
上传SDK的工具类。
AliyunVodException
上传SDK的异常类,做统一的异常处理,外部捕获此异常即可。
UploadVideoRequest.py
目录
说明
UploadVideoRequest
上传视频的请求类,字段请参见获取音视频上传地址和凭证。
UploadImageRequest.py
目录
说明
UploadImageRequest
上传图片的请求类,字段请参见获取图片上传地址和凭证。
UploadAttachedMediaRequest.py
目录
说明
UploadAttachedMediaRequest
上传辅助媒资的请求类,字段请参见获取辅助媒资上传地址和凭证。
AliyunVodUploader.py
目录
说明
uploadLocalVideo
上传本地视频的接口。
uploadWebVideo
上传网络视频的接口。
uploadLocalM3u8
上传本地m3u8视频。
uploadWebM3u8
上传网络m3u8视频。
uploadImage
上传本地或网络图片文件。
uploadAttachedMedia
上传本地或网络辅助媒资文件。
parseWebM3u8
解析网络m3u8文件的分片信息。
parseLocalM3u8
解析本地m3u8文件的分片信息。
setApiRegion
设置VoD的接入地址。默认为cn-shanghai(上海),海外支持ap-southeast-1(新加坡)等区域。详情请参见点播地域标识。
setMultipartUpload
设置分片上传的阈值、分片大小。
uploadProgressCallback
上传进度回调函数,可重写。
setEnableCrc
上传时是否启用CRC校验,默认开启。
ChangeLog.txt:版本发布记录,首行即为当前SDK的版本号和发布日期。
samples目录
uploadVideo.py:上传视频的示例代码。
uploadImage.py:上传图片的示例代码。
uploadAttachedMedia.py:上传辅助媒资文件的示例代码。
场景一:上传音视频
普通文件上传
音视频上传目前支持以下类型文件上传:
上传本地文件,使用分片上传,最大支持48.8 TB的单个文件,不支持断点续传。请参见示例代码中的testUploadLocalVideo函数。
上传网络文件,可指定文件URL进行上传,最大支持48.8 TB的单个文件。该上传方式需要先将网络文件下载到本地磁盘,再进行上传,所以要保证本地磁盘有充足的空间。请参见testUploadWebVideo函数。
M3U8文件上传
场景二:上传图片
场景三:上传辅助媒资
常见问题
使用示例代码上传网络视频流时,如果报ERROR:root:Download fail: [Errno 2] No such file or directory
错误,解决办法为:在voduploadsdk同级目录下手动创建dlfiles文件夹。