摘要: 场景 点播上传SDK缺乏需要的语言版本(如C/C++、Go等)或相应的功能(如网络流上传、追加上传),可以直接使用OSS的SDK进行上传。 准备工作 确认已开通点播服务并完成了相关配置。确认已准备了阿里云账号AK,并授予了上传权限。

场景

点播上传SDK缺乏需要的语言版本(如C/C++、Go等)或相应的功能(如网络流上传、追加上传),可以直接使用OSS的SDK进行上传。

准备工作

确认已开通点播服务并完成了相关配置。
确认已准备了阿里云账号AK,并授予了上传权限。

上传步骤

一、访问点播服务获取上传地址和上传凭证。

这一步还会创建视频媒资记录,返回视频ID,请妥善保存,后续可根据视频ID进行视频播放、管理和AI处理等。

二、对上传地址(UploadAddress)和上传凭证(UploadAuth)分别进行Base64解析,得到OSS的上传地址和授权信息。

UploadAddress字段Base64解码后,得到JSON格式字符串,包含字段如下:

UploadAuth字段Base64解码后,得到JSON格式字符串,包含字段如下:

三、调用OSS SDK将视频文件上传至指定的bucket中,注意使用STS Auth方式,且使用UploadAddress和UploadAuth进行初始化,不要使用自己的AK等信息。

代码实现

核心代码实现共分4步:

1.使用AK初始化VOD客户端
2.获取视频上传地址和凭证
3.使用上传凭证和地址初始化OSS客户端
4.上传本地文件

可以使用点播服务的接口SDK(Java、PHP、Python、.NET),或API(接口说明、调用示例)获取上传地址和凭证。

使用OSS SDK在服务端上传,目前支持如下版本:
OSS-Java-SDK、OSS-PHP-SDK、OSS-Python-SDK、OSS-C-SDK、OSS-Go-SDK、OSS-Ruby-SDK、OSS-.NET-SDK

客户端上传建议使用VOD的上传SDK:VOD-Android-SDK、VOD-iOS-SDK、VOD-JavaScript-SDK;客户端上传时需要在服务端获取上传地址和凭证下发给客户端,以确保数据安全。

PHP上传示例

环境准备

PHP 5.3+,可通过php -v命令查看当前的PHP版本。
cURL 扩展,可通过php -m命令查看curl扩展是否已经安装好。

安装

1.在您的PHP项目中添加空文件夹 aliyun-php-sdk。

2.从 aliyun-openapi-php-sdk 下载整个源码,解压后拷贝 aliyun-php-sdk-core 和 aliyun-php-sdk-vod 两个文件夹到 aliyun-php-sdk 目录下。

3.从 aliyun-oss-php-sdk 下载最新的OSS PHP SDK的源码,解压ZIP文件后添加文件夹到 aliyun-php-sdk 目录下。以下载 v.2.2.4 Source code (zip) 为例,解压后文件夹为 aliyun-oss-php-sdk-2.2.4。

4.打开 aliyun-php-sdk/aliyun-php-sdk-core/Config.php 文件,找到“//config sdk auto load path.”,在这行下面添加:

Autoloader::addAutoloadPath("aliyun-php-sdk-vod");

5.在代码中引用VOD和OSS的文件:

require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php';   // 假定您的源码文件和aliyun-php-sdk处于同一目录。
require_once './aliyun-php-sdk/aliyun-oss-php-sdk-2.2.4/autoload.php';
use vod\Request\V20170321 as vod;
use OSS\OssClient;
use OSS\Core\OssException;

更多信息可参考VOD PHP SDK安装 和 OSS PHP SDK安装。

参考代码

定义核心步骤的函数:

使用AK初始化VOD客户端

function init_vod_client($accessKeyId, $accessKeySecret) {$regionId = 'cn-shanghai';     // 点播服务所在的Region,国内请填cn-shanghai,不要填写别的区域$profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);return new DefaultAcsClient($profile);
}

获取视频上传地址和凭证

function create_upload_video($vodClient) {$request = new vod\CreateUploadVideoRequest();$request->setTitle("视频标题");        // 视频标题(必填参数)$request->setFileName("文件名称.mov"); // 视频源文件名称,必须包含扩展名(必填参数)$request->setDescription("视频描述");  // 视频源文件描述(可选)$request->setCoverURL("http://img.alicdn.com/tps/TB1qnJ1PVXXXXXCXXXXXXXXXXXX-700-700.png"); // 自定义视频封面(可选)$request->setTags("标签1,标签2"); // 视频标签,多个用逗号分隔(可选)return $vodClient->getAcsResponse($request);
}

使用上传凭证和地址初始化OSS客户端(注意需要先Base64解码并Json Decode再传入)

function init_oss_client($uploadAuth, $uploadAddress) {$ossClient = new OssClient($uploadAuth['AccessKeyId'], $uploadAuth['AccessKeySecret'], $uploadAddress['Endpoint'], false, $uploadAuth['SecurityToken']);$ossClient->setTimeout(86400*7);    // 设置请求超时时间,单位秒,默认是5184000秒, 建议不要设置太小,如果上传文件很大,消耗的时间会比较长$ossClient->setConnectTimeout(10);  // 设置连接超时时间,单位秒,默认是10秒return $ossClient;
}

上传本地文件

function upload_local_file($ossClient, $uploadAddress, $localFile) {return $ossClient->uploadFile($uploadAddress['Bucket'], $uploadAddress['FileName'], $localFile);
}

刷新上传凭证

function refresh_upload_video($vodClient, $videoId) {$request = new vod\RefreshUploadVideoRequest();$request->setVideoId($videoId);return $vodClient->getAcsResponse($request);
}
执行完整流程(注意捕获异常):
$accessKeyId = '<AccessKeyId>';                    // 您的AccessKeyId
$accessKeySecret = '<AccessKeySecret>';            // 您的AccessKeySecret
$localFile = '/Users/yours/Video/testVideo.flv';   // 需要上传到VOD的本地视频文件的完整路径
try {// 初始化VOD客户端并获取上传地址和凭证$vodClient = init_vod_client($accessKeyId, $accessKeySecret);$createRes = create_upload_video($vodClient);// 执行成功会返回VideoId、UploadAddress和UploadAuth$videoId = $createRes->VideoId;$uploadAddress = json_decode(base64_decode($createRes->UploadAddress), true);$uploadAuth = json_decode(base64_decode($createRes->UploadAuth), true);// 使用UploadAuth和UploadAddress初始化OSS客户端$ossClient = init_oss_client($uploadAuth, $uploadAddress);// 上传文件,注意是同步上传会阻塞等待,耗时与文件大小和网络上行带宽有关//$result = upload_local_file($ossClient, $uploadAddress, $localFile);$result = multipart_upload_file($ossClient, $uploadAddress, $localFile);printf("Succeed, VideoId: %s", $videoId);
} catch (Exception $e) {// var_dump($e);printf("Failed, ErrorMessage: %s", $e->getMessage());
}

Demo下载

可下载完整的 PHP版上传Demo源码,更多使用信息请参考 OSS-PHP-SDK上传文件。

为了扶持更多创业者,降低入行门槛,视频点播已在原有的视频点播服务五个套餐包基础上,推出了超值体验套餐包。

只需9.9元即可获得10GB流量、50GB存储、100分钟转码,可供个人、小微企业门户网站体验使用。

点击进入活动页面,立即购买,完成支付

进入视频点播产品页面,点击立即开通,开通视频点播服务,进行初始化配置,用户可以在控制台进行视频上传,转码设置、视频管理和视频预览等操作。

另外,体验完成后,阿里云也为提供了五个点播套餐包,供各种需求用户选择。

点击查看购买详情

干货好文,请关注扫描以下二维码:

【视频点播最佳实践】使用OSS SDK上传视频到点播相关推荐

  1. Android 调用优酷SDK上传视频

    最近在研究用优酷的SDK来进行视频上传的功能,由于优酷的SDK只是提供了一个上传的sample code,没有涉及到授权的过程,对于新手来说,可能非常棘手,现在分享一下我的思路: 程序实现前我们先要到 ...

  2. Android 调用优酷SDK上传视频获取Token与code步骤

    我们在做优酷上传视频的时候发现没有获取code与token这个过程,这可能会让些编程新手感到棘手,所以为了方便大家简单分享下我的思路: 程序实现前我们先要到优酷开放平台下载SDK(下载地址:http: ...

  3. 阿里云SDK上传视频

    1.老样子,先看效果图 2.首先到阿里云下载所需要用到的SDK 3.下载好的,解压之后,目录以及运行起来是以下这个样子的 4.在实际项目中引用,先将SDK添加到项目中,放到public目录下 5.在p ...

  4. 阿里云视频点播PHP sdk上传文件

    我们使用的是PHP VodUploadSDK-PHP_1.0.2 sdk参考文档地址: https://help.aliyun.com/document_detail/100976.html?spm= ...

  5. Springboot上传视频到阿里云(视频点播)和aliyun-java-sdk-vod依赖报红问题

    一.pom.xm中导入依赖 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-ja ...

  6. springboot阿里云视频点播服务实现上传视频和删除功能

    视频播放参照地址:https://www.cnblogs.com/konglxblog/p/15116534.html 一.开通视频点播云平台 1.选择视频点播服务(收费) 阿里云地址:https:/ ...

  7. 【springboot】实现阿里云视频点播上传视频

    阿里云视频点播 1.开通视频点播服务,选择按流量计费,对于个人项目来说,相当于免费. 2.开启存储管理 3.设置转码模板组.设置加密,如果不加密,别人只要获取到你视频的url就可以免费观看,但进行了加 ...

  8. 使用阿里云的OSS图片上传,这里是用的上传网络流

    使用阿里云的OSS图片上传,这里是用的上传网络流 思路: /** 文件上传到OSS 上传网络流 以下代码用于上传网络流: 1.通过element的el-upload插件,通过action发送请求到后台 ...

  9. 基于阿里云的OSS文件上传和下载

    OSS概述 OSS是基于阿里云的一个云平台文件保存的系统,我们可以将服务器的文件上传至云端从而减轻服务器的压力. 初体验 首先创建一个bucket (给你的云储存器配置名字等基本信息) 生成Asses ...

最新文章

  1. mnn 编译转换工具 win10 2021
  2. C++ Primer 5th笔记(6)chapter6 函数:函数指针
  3. 神策数据王琛:用户画像实践之神策标签生产引擎架构
  4. NYOJ 56 阶乘因式分解(一)
  5. springboot(2.2.4)的默认日志框架logback换成log4j2
  6. Java -----JVM运行时数据区
  7. [蓝桥杯2016决赛]反幻方-next_permutation枚举
  8. TQ210——下载总结
  9. 计算机gt的使用方法,旗舰级综合效果器 BOSS GT-1000使用宝典(二) | 基础操作
  10. 李飞飞等6名华人入选ACM 2018 Fellow,无国内学者入选
  11. Spring Boot实现动态数据库配置
  12. 基于JEECG框架,前台VUE,后台java,导入导出
  13. 最全面的应届毕业生落户上海指南(2021)
  14. ps中怎么把人物的腿给p长
  15. 矩阵分析一子空间和特征分解
  16. 一个国企老兵给后辈们的忠告:三十岁之前远离国企
  17. oracle新建一个自增列,sequence的使用
  18. [内网渗透]—权限维持
  19. golang fmt包中的占位符
  20. 1001系列之pandas0001如何从Mysql数据库中导入导出数据

热门文章

  1. 计算机网络走向系统化 科学化,第六章计算机网络与INTERNET 应用习题
  2. android开发 视图联动_新版首页技术设计和实现方案(Android)
  3. 论文页眉奇偶页不同怎么设置_怎样设置Word页眉页脚奇偶页不同?
  4. tomcat.exe java home,tomcat.exe启动和startup.bat启动的不同
  5. mysqlclient==1.3.7对应mysql版本_「MySQL」CentOs 7 下安装MySQL
  6. python 10个100以内随机整数编辑_你要偷偷的学Python,然后惊呆所有人(第五天) - python阿喵
  7. 无符号有符号乘法_【编译笔记】变量除以常量的优化(一)——无符号除法
  8. CVPR 9999 Best Paper——《一种加辣椒的番茄炒蛋》
  9. 王垠:怎样尊重一个程序员?
  10. 到达什么水平才能算是学会了数学?