本文通过示例详细介绍如何使用服务端上传SDK(PHP语言)将各类媒体文件上传至点播存储。
整体说明
建议在PHP中构建BS(Browser/Server)架构进行开发。
从内部逻辑角度看,PHP上传SDK遵循点播服务端SDK的通用流程。详情请参见上传流程。从操作角度看,使用PHP上传SDK的基础流程如下:
完成前提条件。请参见前提条件。
集成PHP上传SDK。请参见集成PHP上传SDK。
实现上传逻辑(主要是上传信息配置)。
音视频上传请参见场景一:上传音视频。
图片上传请参见场景二:上传图片。
辅助媒资上传请参见场景三:上传辅助媒资文件。
PHP上传SDK默认服务接入点为
cn-shanghai
(上海), 若需要上传媒体文件到其他区域,可以通过AliyunVodUploader
在初始化时指定区域,点播支持的服务接入点,请参见服务接入点。以指定上传区域为
cn-beijing
(北京)为例,配置示例如下:$apiRegionId = 'cn-beijing'; //上传目标区域region $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret, $apiRegionId);
前提条件
您已经开通了视频点播服务。开通步骤请参见开通视频点播服务。
您已经完成上传相关的系统配置,包括启用目标存储地域的存储地址和配置回调。操作指引请参见管理存储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方式对比。
集成PHP上传SDK
更新PHP上传SDK
若发现新的接口或已有接口新的功能在当前SDK没有,请下载最新的PHP上传SDK覆盖到本地SDK文件。更多信息,请参见上传SDK。
您可以打开voduploadsdk目录下的ChangeLog.txt文件查看当前SDK的版本号和发布日期。
PHP上传SDK目录说明
/VodUploadSDK-PHP_1.0.3.zip解压目录/VodUploadSDK-PHP_1.0.3/voduploadsdk/uploader
UploadVideoRequest.php
目录
说明
UploadVideoRequest
上传视频的请求类,字段请参见获取音视频上传地址和凭证。
UploadImageRequest.php
目录
说明
UploadImageRequest
上传图片的请求类,字段请参见获取图片上传地址和凭证。
UploadAttachedMediaRequest.php
目录
说明
UploadAttachedMediaRequest
上传辅助媒资的请求类,字段请参见获取辅助媒资上传地址和凭证。
AliyunVodUploader.php
目录
说明
__construct
uploadLocalVideo
上传本地视频的接口。
uploadWebVideo
上传网络视频的接口。
uploadLocalImage
上传本地图片。
uploadWebImage
上传网络图片。
uploadLocalAttachedMedia
上传本地辅助媒资文件。
uploadWebAttachedMedia
上传网络辅助媒资文件。
uploadLocalM3u8
上传本地m3u8文件。
uploadWebM3u8
上传网络m3u8文件。
parseM3u8File
解析m3u8索引文件得到分片地址列表。
setEcsRegionId
设置上传脚本部署的ECS区域(如果有),如果与视频点播存储同一区域会自动启用内网上传。
setEnableSSL
是否启用SSL(网络请求使用HTTPS),默认不启用,以避免相关扩展未安装或配置异常时无法使用。
uploadProgressCallback
上传进度回调函数,可重写。
AliyunVodUtils.php
目录
说明
AliyunVodUtils
工具类,提供截取字符串、获取扩展名、获取文件名等静态函数。
AliyunVodLog
实现简单打印的日志类,logSwitch为日志开关。
AliyunVodDownloader
实现下载网络文件。
AliyunVodReportUpload
实现上传进度汇报。
AliyunVodError
定义错误码。
/VodUploadSDK-PHP_1.0.3.zip解压目录/VodUploadSDK-PHP_1.0.3/voduploadsdk
aliyun-php-sdk-core:上传SDK依赖的基础类,封装了阿里云API签名和HTTP请求等。
aliyun-php-sdk-vod:视频点播的服务端接口SDK,封装了视频点播API的请求。
aliyun-php-sdk-oss:上传SDK依赖的OSS类,封装了OSS上传等操作。
/VodUploadSDK-PHP_1.0.3.zip解压目录/VodUploadSDK-PHP_1.0.3/samples
uploadVideo.php:上传视频的示例代码。
uploadImage.php:上传图片的示例代码。
uploadAttachedMedia.php:上传辅助媒资的示例代码。
场景一:上传音视频
普通音视频
音视频上传目前支持以下类型文件上传:
上传本地文件,使用分片上传,最大支持48.8 TB的单个文件,不支持断点续传。请参见testUploadLocalVideo函数。
上传网络文件,可指定文件URL进行上传,最大支持48.8 TB的单个文件。该上传方式需要先将网络文件下载到本地磁盘,再进行上传,所以要保证本地磁盘有充足的空间。请参见testUploadWebVideo函数。
M3U8视频文件
部分代码示例如下所示:
场景二:上传图片
场景三:上传辅助媒资文件
部分代码示例如下所示: