【视频点播最佳实践】使用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(JavaPHPPython.NET),或API(接口说明调用示例)获取上传地址和凭证。

使用OSS SDK在服务端上传,目前支持如下版本:
OSS-Java-SDKOSS-PHP-SDKOSS-Python-SDKOSS-C-SDKOSS-Go-SDKOSS-Ruby-SDKOSS-.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分钟转码,可供个人、小微企业门户网站体验使用。

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

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

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

点击查看购买详情

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

原文地址:https://www.cnblogs.com/jlfw/p/11962908.html

时间: 2024-10-10 05:32:20

【视频点播最佳实践】使用OSS SDK上传视频到点播的相关文章

Android 调用优酷SDK上传视频

最近在研究用优酷的SDK来进行视频上传的功能,由于优酷的SDK只是提供了一个上传的sample code,没有涉及到授权的过程,对于新手来说,可能非常棘手,现在分享一下我的思路: 程序实现前我们先要到优酷开放平台下载SDK(下载地址:http://open.youku.com/down) 根据优酷SDK的说明,上传过程主要分为以下7个步骤: 1. 新建android项目,引入YoukuUploadSDK-android jar包 2. 在MainActivity.java文件添加代码如sampl

PHP实现阿里云OSS文件上传(支持批量)

上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下: 1.下载阿里云OSS对象上传SDK(PHP版) 通过Github下载 2.解压后,可自行修改目录名称,以下为本人项目实例(aliyun_oss改过之后的名称) 项目目录结构如下: 3.Index.php 为文件上传静态表单页 4.do_upload.php 为文件处理控制页,封装的代码如下:上传文件相关的辅助函数可以自行封装,本文是为了便于

微信js sdk上传多张图片

微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="11111111111111111111"; $secret="11111111111111111111"; $token = S('access_token'); if (!$token) { $res = file_get_contents("https://api.weixin.qq.c

[python](Docker SDK)上传镜像到私有仓库(ssl、身份认证)

(Docker SDK)上传镜像到私有仓库(ssl.身份认证) API:https://docker-py.readthedocs.io/en/stable/ 环境:python:3.7.3 配置参数: cert = os.path.join(BASE_DIR, "utils/cert.pem") key = os.path.join(BASE_DIR, "utils/key.pem") docker_server = "xx.xx.xx.xx:5555&

视频电商网站vue+七牛JSSDK集成(3)上传视频时暂停和续传

1.准备2个图片 2.这是我们用来控制视频上传/暂停 的按钮显示图片. 在vue.js的data() 里准备好变量(切换2个按钮图片的变量) options:{ iconsrc:'/icons/pause.png', uploadpause:'/icons/pause.png', uploadstart:'/icons/start.png' }, 3.编写切换按钮的事件 在vue.js的methods 里: pauseUpload(){ if (this.options.iconsrc == t

关于上传视频到七牛的一些解决方案

<div class="form-group"> <label>上传视频:</label> <div class="my-upload"> <div class=""> <input type="file" id="fileupload" name="fileupload" class="" />

陈松松:上传视频这么设置,提高2倍视频引流效果

每个视频,都是你的金牌业务员 这是我写的第46篇视频营销原创文章 与其搜索十年,不如花一年的时间学习,去赚9年的高薪! 我们通过优化视频带来精准的目标客户,1,个精准目标客户在未来2-3年至少给我们创造1000块钱以上的价值,会超过1000个非精准的目标客户所创造的价值. 上传视频最关键的两方面,一个是视频平台的选择,另外一个就是对发布视频的优化. 优化的好与坏直接决定了视频的收录.搜索.排名.点击.观看.引流效果. 大多数人优化视频的时候,重点放在收录和排名,从未考虑过点击和观看,以为有收录,

视频营销:上传视频之后着重分析调整这5个因素

每个视频,都是你的金牌业务员 这是我写的第66篇视频营销原创文章 与其搜索十年,不如花一年的时间学习,去赚9年的高薪! 数据分析和优化调整是视频营销的关键. 很多人以为上传视频之后就大事告成了,开始坐等客户主动找上门. 而实际上我们还要对自己的内容进行调整和优化,以及对视频营销新的方法进行测试,帮助我们更好的做好视频内容,优化好视频标题,视频封面等,提高视频点击率. 视频上传之后,有2件事情需要我们每天都要做的, 第一件:分析同行视频数据 第二件:分析自己视频数据 当你每天都在分析自己的视频和同

在Windows Server 2008 R2 Server中,上传视频遇到的问题(二)

上一篇  在Windows Server 2008 R2 Server中,上传视频遇到的问题(一)中遇到上传40M视频报404,然后修改配置文件节点: <httpRuntime targetFramework="4.5.2" maxRequestLength="1073741824" executionTimeout="3600"/> 和 <security> <requestFiltering> <!-