项目引入阿里云视频点播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. 牛客练习赛60E 旗鼓相当的对手

    dsu on tree 题目链接 点我跳转 题目大意 给你一棵以\(1\)为根节点,包含\(n\)个节点的树和一个参数 \(k\),求每个节点的"\(rating\)" \(rat ...

  2. uniapp兄弟组件如何修改数据?一看就废!

    1. 如A组件里有个num = 10 并需要在生命周期函数created里通过uniapp提供的uni.$on方法来注册全局事件,并加一个形参.( uni.$on( '自定义事件名') , 形参 =& ...

  3. [转载]Windows环境下 Hadoop Error: JAVA_HOME is incorrectly set. 问题

    最近尝试在windows开发MR程序并且提交Job,在解压缩好hadoop,配置好环境变量后, 打开cmd 输入hadoop version 的时候出现以下错误: Error: JAVA_HOME i ...

  4. mysql5.5升级5.7(1)

    卸载旧版本mysql 当然要记得备份数据库数据啦 1.查看需要卸载的部分: rpm -qa |grep -i mysql 2.开始卸载: yum remove mysql* 接下来是安装新版mysql ...

  5. mq消息消费,broker选址

    PullRequest.MessageQueue.BrokerName 根据PullRequest.MessageQueue得到brokerId,默认0或者用缓存中的suggest,每次消息拉取后会更 ...

  6. 网络拓扑实例之交换机基于全局地址池作为DHCP服务器(七)

    组网图形 DHCP服务器简介 通常用户希望网络中的每台终端能够动态获取IP地址.DNS服务器的IP地址.路由信息.网关信息等网络参数,不需要手动配置终端的IP地址等网络参数:另外,针对一些移动终端(手 ...

  7. DVWA SQL Injection High

    High 虽然是high等级,但是通过源码审计发现与low等级一样,没有对传入的值做任何过滤,唯一不同的就是点击连接后打开了另外一个对话框,用户在新打开的页面输入 其余的步骤与low级别的一样:htt ...

  8. .NET 面试题汇总(带答案)

    1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么? 答:尽可能用约束(包括CHECK.主键.唯一键.外键.非空字段)实现,这种方式的效率最好:其次用触发器,这种方式可以保证无论何 ...

  9. MySQL入门看这一篇就够了

    MySQL JavaEE:企业级Java开发 web阶段 分为1.前端(页面,展示数据库中的数据) 2.后台(连接点:链接数据库JDBC.Mybatis,链接前端(控制视图跳转,给前端传递数据)) 3 ...

  10. (8)ASP.NET Core3.1 Ocelot Consul服务注册与发现

    1.服务注册与发现(Service Discovery) ●服务注册:我们通过在每个服务实例写入注册代码,实例在启动的时候会先去注册中心(例如Consul.ZooKeeper.etcd.Eureka) ...