项目引入阿里云视频点播PHP-SDK

背景:2021年乐视云的点播将停止提供服务,项目决定选择选用阿里云的视频的点播。在上线前,需要将之前的视频提前导入资源库,URLS方式拉取是比较方便的,对编辑同事来说操作简单,而且乐视云提供视频下载url,下面是对案例进行的调整

URL批量拉取上传(调整为多个视频上传)

阿里云PHP-SDK文档示例内容如下:点击地址进入

调用UploadMediaByURL接口,完成URL批量拉取上传功能。

接口参数和返回字段请参见UploadMediaByURL。调用示例如下:

/**
* URL批量拉取上传
* @param client 发送请求客户端
* @return UploadMediaByURLResponse URL批量拉取上传响应数据
*/
function uploadMediaByURL($client) {
$request = new vod\UploadMediaByURLRequest();
$url = "http://192.168.0.0/16/***.mp4";
$request->setUploadURLs($url); $uploadMetadataList = array();
$uploadMetadata = array();
$uploadMetadata["SourceUrl"] = $url;
$uploadMetadata["Title"] = "upload by url sample";
$uploadMetadataList[] = $uploadMetadata;
$request->setUploadMetadatas(json_encode($uploadMetadataList)); return $client->getAcsResponse($request);
} try {
$client = initVodClient('<AccessKeyId>', '<AccessKeySecret>'); $result = uploadMediaByURL($client);
var_dump($result);
} catch (Exception $e) {
print $e->getMessage()."\n";
}

根据阿里云VOD的api文档,点击地址进入。

对于UploadURLs这个参数的描述是:

URL中需要包括扩展名, 比如https://****.mp4中mp4为扩展名。

如果URL中不包含扩展名,可以在UploadMetadatas中传入FileExtension来指定。

如果URL中有扩展名且同时传入FileExtension,以传入的FileExtension为准。

指定支持的扩展名,请参见上传概述。

URL编码,多个地址以英文逗号(,)分隔,最多支持20个。

避免存在特殊字符导致无法上传视频,需要URL编码后再做逗号拼接。

所以我们将示例代码进行下面的调整:

/**
* URL批量拉取上传
* @param client 发送请求客户端
* @return UploadMediaByURLResponse URL批量拉取上传响应数据
*/
function uploadMediaByURL($client) {
$request = new vod\UploadMediaByURLRequest();
$urlDates = [];
$uploadMetadataList = array();
$uploadUrls = '';
foreach ($urlDates as $urlDate){
$url = urlencode($urlDate['url']);
$uploadMetadata = array();
$uploadMetadata["SourceUrl"] = $url;
$uploadMetadata["Title"] = $urlDate['video_name'];
$uploadMetadata["CateId"] = 123;
$uploadMetadata["FileExtension"] = pathinfo($url, PATHINFO_EXTENSION);
$uploadUrls .= $url.',';
$uploadMetadataList[] = $uploadMetadata;
}
$uploadUrls = rtrim($uploadUrls, ",");
$request->setUploadURLs($uploadUrls);
$request->setUploadMetadatas(json_encode($uploadMetadataList)); return $client->getAcsResponse($request);
} try {
$client = initVodClient('<AccessKeyId>', '<AccessKeySecret>'); $result = uploadMediaByURL($client,);
var_dump($result);
} catch (Exception $e) {
print $e->getMessage()."\n";
}

相信这时候你已经明白了,我自己集成的类里的方法如下,供大家再参考下:

/**
* URL批量拉取上传
* @param client 发送请求客户端
* @return UploadMediaByURLResponse URL批量拉取上传响应数据
*/
private function uploadMediaByURL($client,$urlDates) {
$request = new vod\UploadMediaByURLRequest();
$uploadMetadataList = array();
$uploadUrls = '';
foreach ($urlDates as $urlDate){
$url = urlencode($urlDate['url']);
$uploadMetadata = array();
$uploadMetadata["SourceUrl"] = $url;
$uploadMetadata["Title"] = $urlDate['video_name'];
$uploadMetadata["CateId"] = *****;
$uploadMetadata["FileExtension"] = pathinfo($url, PATHINFO_EXTENSION);
$uploadUrls .= $url.',';
$uploadMetadataList[] = $uploadMetadata;
}
$uploadUrls = rtrim($uploadUrls, ",");
$request->setUploadURLs($uploadUrls);
$request->setUploadMetadatas(json_encode($uploadMetadataList)); return $client->getAcsResponse($request);
} public function uploadMediaByURLResult($urlDates)
{
try {
$client = $this->initVodClient();
$result = $this->uploadMediaByURL($client,$urlDates); return $result;
} catch (Exception $e) {
print $e->getMessage()."\n";
}
}

欢迎大家讨论,有好的优化大家可以在评论区提出来。

阿里云视频点播之URL批量拉取上传(调整为多个视频上传)的更多相关文章

  1. 阿里云视频点播 php开发

    先购买开通阿里云的<视频点播>服务,视频点播 可以购买套餐 ,我在项目中使用的是299套餐 开发前在<用户信息管理>生成Access Key Secret,开发密钥使用 阿里云 ...

  2. 阿里云视频点播获取视频点播的video信息

    背景 因为在项目中需要使用阿里云的视频点播服务,需要获取视频点播的时长信息. 工具类 生成签名串Signature SignatureUtils.java package com.meeno.wzq. ...

  3. python 写了一个批量拉取文件进excel文档

    路径如: C:\\Users\\huaqi\\Desktop\\信息收集 “信息收集”目录下有以下子目录:[技术,客服,运营,行政] “技术”目录下有以下子文件:[小白.txt,小红.txt,小黑.t ...

  4. 如何从git上批量拉取本地当前分支的所有代码

    1 我本地有一个文件_netrc文件里面存储这git的相关信息,包括用户名和密码 你可以根据自己的git相关信息配置自己的信息 2 我当前的分支是dev,我要拉取当前分支下的所有代码,编写shell脚 ...

  5. springboot整合阿里云视频点播接口

    官方SDK文档地址: https://help.aliyun.com/document_detail/57756.html?spm=a2c4g.11186623.6.904.4e0d3bd9VbkIC ...

  6. 阿里云ESC学生服务器搭建springboot项目生产环境(Mysql+JDK)不需要上传安装包

    嗯,之前服务器被挖矿的病毒弄的登录不进去了,所以联系了阿里云客服,提交工单,最后建议重置,所以我就重置了, 嗯,学习经验,docker如果懂的不是太多,不要随便云部署,都给别人挖矿了.   Mysql ...

  7. 阿里云主机SSD实例磁盘测试及IO调度算法调整

    测试背景及环境说明 阿里云ECS 主机配置: 4C8G root@zabbix-master:~# grep -i "model name" /proc/cpuinfo model ...

  8. k8s-for批量拉取国内镜像并做tag标签

    kubeadm config images list  ##查看所需镜像 如果是1.15 或者是其他就需要改改 又或者是下面的国内的镜像地址不能用了 百度完改改就ok   #!/bin/bash im ...

  9. BitmapImage处理网络图片,例如阿里云获取的图片。异步加载到需要显示的控件上。提升速度非常明显。

    想直接把网络图片赋给控件,又要下载又要缓存,速度非常慢.不流畅. 需要进行处理,异步加载会显著提升速度.方法如下: public static BitmapImage ByteArrayToBitma ...

随机推荐

  1. 这个厉害了,ssm框架整合全过程,建议收藏起来好好看看

    1.0 环境要求 IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 1.1 数据库 创建书籍数据库表,包括书籍编号,书籍名称,书籍数量以及书籍描述. CREATE DATABA ...

  2. 硕思logo设计师注册码去哪里找,文末附链接

    硕思logo设计师注册码去哪里找呢?当然是硕思logo设计师官网啦! 最近小编总是会被网友们咨询关于logo设计的问题,其中很多网友并不是专业的设计人员,特别是一些设计公司面对新手设计时,往往会不知所 ...

  3. 怎么理解虚拟 DOM?

    一.前言 现在web前端的开发,对于MVVM框架的运用,那是信手拈来,用的飞起.一个xxx-cli工具,就能初始化一套模板,再填充业务代码,打包部署即可.但是会用,是一个方面,大家有没有底层深入思考一 ...

  4. laravel数据填充

    post表有这2个字段 填充20条数据, 执行 php artisan tinker 执行预览 factory(App\Post::class,20)->make(); 插入数据库 factor ...

  5. P6823 「EZEC-4」zrmpaul Loves Array

    发现进行一次排序后先前的操作都无效了,所以只需做最后一次排序后的操作.翻转操作打个翻转标记,互换操作根据翻转标记即可. 时间复杂度 \(O\left(n+m\right)\). code: #incl ...

  6. Matlab 补充知识

    1:disp函数和fprintf函数类似 disp(a) 自动输出a变量的值 disp('dadad') 输出一个字符串 Disp(['a','b','ccc']) 三个字符串连在一起 2:matla ...

  7. 使用Jmeter测试快速入门

    一 创建线程组 1.1.2.   线程组主要包含三个参数:线程数.准备时长(Ramp-Up Period(in seconds)).循环次数. 1.1.3.    线程数:虚拟用户数.一个虚拟用户占用 ...

  8. 关于Django的序列化问题。serializers

    在DRF框架里,ModelSerializers是一个重要的组件.大大的帮组我们节省了数据序列化的过程,真的可以说是良心产品.接手的这个项目用的Django,前人的代码都是手动序列化的,为了保证风格的 ...

  9. 第10.6节 Python包的概念

    一. 引言 在<第10.2节 Python的模块及模块导入>介绍了模块的概念及导入的几个关键点,Python中的模块是一个单个的py文件,当我们开发的项目或功能集由多个文件构成时,我们需要 ...

  10. Python特殊序列\d能匹配哪些数字?

    在缺省语言环境下,老猿对\d的匹配范围做了个测试,下面的数字包含半角数字.全角数字.中文数字,测试语句如下: >>> m=re.search(r'(\d*)(\D*)(\d*)',' ...