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

摘要: 场景 点播上传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分钟转码,可供个人、小微企业门户网站体验使用。

图片描述

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

图片描述

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

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

图片描述

点击查看购买详情

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

图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Aruba 推出Instant On 为中小型企业提供安全、高速的无线连接

戳蓝字“CSDN云计算”关注我们哦&#xff01;让你过几天没有Wi-Fi的生活&#xff0c;是一种什么样的感受&#xff1f;在现代人的生活里&#xff0c;离不开Wi-Fi已经成为日常&#xff0c;超市、酒店、住宅、医院、高铁……你能想到的所有场景几乎都已经部署了Wi-Fi。从个人角度来…

NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨

摘要&#xff1a; “IP直连方案”主要在于解决DNS污染、省去DNS解析时间&#xff0c;通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求&#xff0c;下面将支持 Post 请求中面临的一个挑战&#xff0c;以及应对策略介绍一下。 “IP直连方案”主要在于解决D…

工作流实战_18_flowable 流程任务的转办

项目地址https://gitee.com/lwj/flowable.git代码分支flowable-base视频讲解地址https://www.bilibili.com/video/av78184848/ 用户名密码0000001test0000002test0000003test0000004test文章目录1. 演示2. 代码分享1. 演示 2. 代码分享 public ReturnVo<String> turnTa…

深入解读:获Forrester大数据能力高评价的阿里云DataWorks思路与能力

摘要&#xff1a; Forrester发布了Now Tech: Cloud Data Warehouse Q1 2018报告&#xff0c;报告对云化数据仓库&#xff08;Cloud Data Warehouse, CDW&#xff09;的主要功能、区域表现、细分市场和典型客户等进行了全面评估。 1.前言 本文基于Now Tech: Cloud Data Warehous…

用C语言倒置字符串

要逆置这个字符串&#xff0c;有很多种方法&#xff0c;在此说一次比较巧妙的方法 首先&#xff0c;逆置这个字符串&#xff0c;可以考虑单独的把每个单词都逆序一下&#xff0c;在对整个字符串进行逆序 考虑本题中的I like beijing. 首先对I、like、beijing. 中的每个单词逆序…

java中怎么把生成文件到项目根目录_[SpringBoot2.X] 02- 项目结构介绍

POM文件继承Spring Boot 的父级依赖&#xff0c;只有继承它项目才是 Spring Boot 项目。 spring-boot-starter-parent 是一个特殊的 starter&#xff0c;它用来提供相关的 Maven 默认依赖。使用它之后&#xff0c;常用的包依赖可以省去 version 标签。也就是继承的是springboot…

大咖云集、精彩议题、独家内容,2019 AI ProCon震撼来袭!(日程出炉)

2019年9月5-7日&#xff0c;面向AI技术人的年度盛会—— 2019 AI开发者大会 AI ProCon&#xff0c;火热来袭&#xff01; 继2018 年由CSDN成功举办AI 开发者大会一年之后&#xff0c;全球AI市场正发生着巨大的变化。顶尖科技企业和创新力量不断地进行着技术的更迭和应用的推进。…

机器学习的未来——深度特征融合

摘要&#xff1a; 深度特征融合是一项能够克服机器学习不足&#xff0c;为机器学习打开通往未来大门的新技术。新技术要不要了解一下&#xff1f;即使是最敏锐的技术布道师也无法预测大数据对数字革命的影响。因为他们最初的关注点都聚焦在了扩大基础设施以构建现有服务上。在提…

原码,反码,补码的关系和大小端字节序存储的关系

在看如下代码之前&#xff0c;要知道原码&#xff0c;反码&#xff0c;补码之间的关系 首先要知道第一位是符号位&#xff0c;0代表是正数&#xff0c;1代码是负数 正数的原码&#xff0c;反码&#xff0c;补码相同 负数的反码是符号位不变&#xff0c;其他位按位取反 负数的补…

与机器学习算法有关的数据结构

摘要&#xff1a; 在机器学习中需要运用到许多数据结构&#xff0c;掌握它们是非常重要的。希望本文能有所帮助拥有机器学习技能是不够的。你还需要良好的数据结构的工作知识。学习更多&#xff0c;并解决一些问题。因此&#xff0c;你已经决定不再使用固定的算法并开始编写自己…

resnet结构_经典卷积网络(二)-ResNet

一、ResNet&#xff08;总结自csdn文章&#xff09;随着网络的加深&#xff0c;出现了训练集准确率下降的现象&#xff0c;确定这不是由于Overfit过拟合造成的。作者针对这个问题提出了一种全新的网络&#xff0c;叫深度残差网络&#xff0c;它允许网络尽可能的加深&#xff0c…

物联网避坑 3 大指南!

戳蓝字“CSDN云计算”关注我们哦&#xff01;整理 | 胡巍巍参考 | 中信出版社《物联网时代》如果你正是物联网从业者&#xff0c;你如何避免自己的投入&#xff0c;不会成为一种痛苦的学习经历&#xff0c;相反成为一个令人瞩目的成功故事呢&#xff1f;最好的方式之一&#xf…

深度学习工作机制通俗介绍

摘要&#xff1a; 本文是深度学习基础性介绍&#xff0c;以降维的角度分析卷积神经网络模型&#xff0c;并着重说明了目前人工智能存在的不科学性。在本文之前&#xff0c;写过一些关于人工智能的科普性文章&#xff0c;比如人工智能为什么能起作用、模型是什么以及如何去创建模…

结合Apache Kafka生态系统,谈谈2018年机器学习5大趋势

摘要&#xff1a; 让我们来研究下Uber和Netflix上的KSQL&#xff0c;ONNX&#xff0c;AutoML和机器学习平台&#xff0c;看看它们之间是如何相互关联的。在2018慕尼黑OOP会议上&#xff0c;我展示了使用Apache Kafka生态系统和深度学习框架&#xff08;如TensorFlow&#xff0c…

设计一段代码,判断在内存中是小端存储还是大端存储

大端存储&#xff1a;数据中的低位保存在内存中的高地址中&#xff0c;数据中的高位保存在内存中的低地址中。 小端存储&#xff1a;数据中的高位保存在内存中的高地址中&#xff0c;数据中的低位保存在内存中的低地址中。 假设int a1; 则a在存储中的存储是 00 00 00 01&#…

51单片机雾化片自动扫频程序_单片机简介

单片机简介数字电路简介在一个控制系统中&#xff0c; 单片机是电路的一部分&#xff0c; 单片机中的程序是针对其所在的电路编写的。因此&#xff0c;要对单片机编程并实现一定的功能&#xff0c;必须了解整个系统的电路图。单片机编程是针对某个特定的电路进行的单片机编程是…

IT公司老板落水,各部门员工怎么救??

戳蓝字“CSDN云计算”关注我们哦&#xff01;公司高层公司副总A&#xff1a;咱们开个会研究一下这个事情怎么处理。公司副总B&#xff1a;如果老板没有救成功&#xff0c;下任是谁呢&#xff1f;会不会影响公司的上市&#xff1f;公司副总C&#xff1a;我认为咱们开会应该讨论两…

使用 MaxCompute(原ODPS) java sdk 运行安全相关命令

摘要&#xff1a; 使用 odps console 的同学&#xff0c;可能都使用过 odps 安全相关的命令。 转自zhenhong 使用 MaxCompute console 的同学&#xff0c;可能都使用过 odps 安全相关的命令。官方文档上有详细的 odps 安全指南&#xff0c;并给出了安全相关命令列表。 简而言之…

苹果笔记本能不能用python_“苹”除了苹果还能组哪些词?苹组词,释义及造句汇总!...

“苹”字组词&#xff0c;很多人第一反应就是苹果。那么除了苹果&#xff0c;苹还能组哪些词&#xff1f;苹组词都有哪些&#xff1f;下面&#xff0c;浙江秦学教育小编为大家带来苹组词&#xff0c;释义及造句汇总!来更新我们的组词大全&#xff0c;大家一定要多积累&#xff…

历史回顾——NLP问题解决方案的演变史

摘要&#xff1a; 回顾NLP问题的解决方案&#xff0c;探寻当下最流行的NLP技术&#xff0c;激发NLP问题新的解决方案&#xff01;NLP-深度学习时代之前&#xff1a;在深度学习来临之前的日子里&#xff0c;在自然语言处理算法&#xff08;NLP&#xff09;领域出乎意料地有许多相…