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

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

场景

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

准备工作

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

上传步骤

image

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

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

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

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

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

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

代码实现

核心代码实现共分4步:

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

可以使用点播服务的接口SDK(Java、PHP、Python、.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");
    
    AI 代码解读
  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;
    
    AI 代码解读

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

参考代码

定义核心步骤的函数:

  1. 使用AK初始化VOD客户端
function init_vod_client($accessKeyId, $accessKeySecret) {
   
    $regionId = 'cn-shanghai';     // 点播服务所在的Region,国内请填cn-shanghai,不要填写别的区域
    $profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
    return new DefaultAcsClient($profile);
}
AI 代码解读
  1. 获取视频上传地址和凭证
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);
}
AI 代码解读
  1. 使用上传凭证和地址初始化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;
}
AI 代码解读
  1. 上传本地文件
function upload_local_file($ossClient, $uploadAddress, $localFile) {
   
    return $ossClient->uploadFile($uploadAddress['Bucket'], $uploadAddress['FileName'], $localFile);
}
AI 代码解读
  1. 刷新上传凭证
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());
}
AI 代码解读

Demo下载

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

为了扶持更多创业者,降低入行门槛,视频点播已在原有的视频点播服务五个套餐包基础上,推出了超值体验套餐包。
只需9.9元即可获得10GB流量、50GB存储、100分钟转码,可供个人、小微企业门户网站体验使用。

image

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

image

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

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

image

点击购买点播套餐包

本公众号将为大家带来更多阿里云视频点播、直播、媒体处理相关的产品发布、技术解读,感兴趣的用户可以关注公众号随时接收新鲜资讯。

目录
打赏
0
1
1
2
1322
分享
相关文章
API稳定安全最佳实践:用阿里云SDK为业务保驾护航
阿里云智能集团高级技术专家赵建强和曹佩杰介绍了API稳定安全最佳实践,涵盖业务上云真实案例、集成开发最佳实践、配额管理和共担模型四部分。通过分析企业在不同阶段遇到的问题,如签名报错、异常处理不严谨、扩容失败等,提出了解决方案和工具,确保API调用的安全性和稳定性。特别强调了SDK的使用、无AK方案、自动刷新机制以及配额中心的作用,帮助用户构建更稳定、安全的服务,提升运维效率。最终介绍了集成开发共担模型,旨在通过最佳实践和平台工具,保障业务的稳定与安全,推动行业创新与发展。
基于springboot+vue.js+uniapp小程序的视频点播系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的视频点播系统附带文章源码部署视频讲解等
137 17
基于ssm+vue.js+uniapp小程序的在线视频点播系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的在线视频点播系统附带文章和源代码部署视频讲解等
119 8
在视频点播系统工程中,我们关注的是构建一个能够处理视频内容、用户交互、数据存储和检索等功能的系统。
在视频点播系统工程中,我们关注的是构建一个能够处理视频内容、用户交互、数据存储和检索等功能的系统。
视觉智能开放平台操作报错合集之用oss上传视频后,发起调用报错是什么导致的
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)-3
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)
265 1
|
10月前
|
视频点播这边在执行 HLS标准加密 转码后的视频,在解密播放上有些技术问题视频点播这边在执行 HLS标准加密 转码后的视频,在解密播放上有些技术问题
视频点播这边在执行 HLS标准加密 转码后的视频,在解密播放上有些技术问题视频点播这边在执行 HLS标准加密 转码后的视频,在解密播放上有些技术问题
247 1
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)-2
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)
196 0
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)-1
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)
166 0
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)-3
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)
260 0

热门文章

最新文章

  • 1
    【Azure Service Bus】分享使用 Python Service Bus SDK 输出SDK内操作日志
    36
  • 2
    【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
    23
  • 3
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    92
  • 4
    CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
    54
  • 5
    【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
    29
  • 6
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    56
  • 7
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    178
  • 8
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    179
  • 9
    【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
    80
  • 10
    AutoTalk第十三期-应知必会的自动化工具-阿里云SDK支持策略(一)
    65