七牛云Fetch第三方资源并转码(PHP版)
七牛云的图片加速一直在用,好用没得说,最近项目需要做个微信端录音,然后上传,别人试听的功能,录音和上传用的都是微信的接口,有文档,比较方便,但是上传后,微信只给保存3天,所以就下载到了七牛,也就用到了七牛的fetch功能,这步搞定之后,又发现,微信录音生成的amr音频在安卓机能正常播放(据说也只能在微信内置浏览器播放),苹果机却不行,各种搜索,都只能使用转码,虽然知道七牛云可以可以转音频,但是实时转换的接口被停用了,只能持久化转换,到这里时,已经有一点排斥心理,其一是担心持久转换时间过长,不能实现上传后就能播放,其二就是不得不说,七牛的文档好乱,好多相关的东西不在一起写,要分别找,而且描述的不清楚,另外吐槽下,给的PHP SDK也有点问题,返回bad token。。。。但是七牛云的服务还是很好的,嘿嘿
话不多说,下面上代码,两个函数,大家参考,同样基于ThinkPHP开发的哈,很多参数直接用C方法读的配置文件哦
1、下载第三方资源到七牛,只要传入第三方资源地址即可
function qiniuFetch($url){
$encodedURL = str_replace(array('+', '/'), array('-', '_'), base64_encode($url));
$encodedEntryURI = str_replace(array('+', '/'), array('-', '_'), base64_encode(C('QINIU_BUCKET')));
$url = '/fetch/' . $encodedURL . '/to/' . $encodedEntryURI;
$sign = hash_hmac('sha1', $url . "\n", C('QINIU_SK'), true);
$token = C('QINIU_AK') . ':' . str_replace(array('+', '/'), array('-', '_'), base64_encode($sign));
$header = array('Host: iovip.qbox.me', 'Content-Type:application/x-www-form-urlencoded', 'Authorization: QBox ' . $token);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, trim('http://iovip.qbox.me' . $url, '\n'));
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "");
$result = json_decode(curl_exec($curl), true);
curl_close($curl);
return $result['key'] ? C('QINIU_HOST') . $result['key'] : false;
}
2、转换七牛云资源的格式,只要传入源文件的key即可,好像还支持指定另存为***文件,需要在fops那加上通道命令,时间紧就没研究
function qiniuConvert($key){
$data = 'bucket=' . C('QINIU_BUCKET') . '&key=' . $key . '&fops=' . urlencode('avthumb/mp3') . '¬ifyURL=' . urlencode('http://abc.com/qiniuConvertNotice') . '&pipeline=pingshizx';
$sign = hash_hmac('sha1', "/pfop/\n" . $data, C('QINIU_SK'), true);
$token = C('QINIU_AK') . ':' . str_replace(array('+', '/'), array('-', '_'), base64_encode($sign));
$header = array('Content-Type:application/x-www-form-urlencoded', 'Authorization: QBox ' . $token);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://api.qiniu.com/pfop/');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$result = json_decode(curl_exec($curl), true);
curl_close($curl);
}
通知结果的处理,这里返回的只是文件的key,需要加上空间地址才能访问哦
$data = json_decode(file_get_contents("php://input"), true);
return $data['items'][0]['key'];
七牛云Fetch第三方资源并转码(PHP版)的更多相关文章
- 开发者选择短视频SDK,为何青睐七牛云?
从文字到图片再到视频的互联网内容媒介发展途径,随着 5g 技术的逐渐落地愈发清晰.短视频市场中的角力也随着诸多资本和创业者的涌入,进入到白热化阶段.这样的情况下,选择合适的短视频SDK产品就显得尤为重 ...
- 根据短链生成二维码并上传七牛云(Java)
通过短链生成二维码并上传七牛云(Java) 前言 网上这种帖子其实也是很多,大部分搜出来的是CSDN的,然后点进去一看都几乎一样:所以这次给个自己实践的例子记录. 这次也是通过搜索得到的一部分能实现这 ...
- 七牛云的 python sdk 是如何 批量删除资源的
今天做项目的时候用到七牛云,关于对资源的操作是在后端做的,用的SDK,但是,在网上没找到详细的解析,官方文档也没有太详细的解说,所以无奈只好看下源码 这里做一下简单的记录 from qiniu imp ...
- 关于七牛云存储,HTTPS资源上传不成功问题
关于七牛云存储,HTTPS资源上传不成功问题 官方给出了一个解决方案,亲测可用.特此记录一下. 找到QNConfiguration.m文件.然后重写两个方法,直接上代码. + (instancetyp ...
- PHP生成二维码并上传到七牛云
参考资料 qr-code生成二维码 七牛云上传图片 实现步骤 //拿到插入后的id $res = DB::table('book_book')->insertGetId($data); i ...
- php总结 --- 18. 七牛云存储
第三方资源拉取 /** * 七牛云抓取文件 * @param string $url 文件URL地址 * * 参考地址:http://developer.qiniu.com/code/v6/api/k ...
- 《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)
两个月前的发布的博客<介绍一款开源的类Excel电子表格软件>引起了热议:在博客园有近2000个View.超过20个评论. 同时有热心读者电话咨询如何能够在SpreadDesing中实现存 ...
- Android开发中使用七牛云存储进行图片上传下载
Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...
- 使用Qiniu-JavaScript-SDK上传文件至七牛云存储
一.Qiniu-JavaScript-SDK介绍 基于 JS-SDK 可以方便的从浏览器端上传文件至七牛云存储,并对上传成功后的图片进行丰富的数据处理操作. JS-SDK 兼容支持 H5 File A ...
随机推荐
- FastJSON 简单使用
FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库.多了不说了,百度一下一大把. 在此,简单的总结一下自己用过,测试过的方法. 如果使用 ...
- linux crontab运行
Linux在相应用户下,用crontab -l 命令可以查看该用户定时执行的任务. 1- $>crontab -l 无内容. 则表示没有指定用户执行对应用户下的crontab文件. 2- $&g ...
- python保留指定文件、删除目录其他文件的功能(2)
在(1)中脚本实现了保留指定文件的功能,但不能删除空目录,在此补上删除空目录的方法 def DeleteEmptyDir(path): for i in range(1,100): for paren ...
- firefox因gnash cpu 高
sudo apt-get remove --purge gnash 去adobe下载adobe flash for linux 解压 tar zxvf install_flash_player_11_ ...
- 移动端Web App自适应布局探索
1.困扰多时的问题 在这之前做Web App开发的的时候,在自适应方面一般都是宽度通过百分比,高度以iPhone6跟iPhone5之间的一个平衡值写死,我们的设计稿都是iPhone5的640 * 11 ...
- Linux下安装Perl和Perl的DBI模块
今天在虚拟机测试shell脚本的时候,有些命令使用不了. 比如说 mysqlhotcopy ,它提示Perl的版本太低. 我用的 RedHat9 的Perl才5.8.0版本...(2002年以前的) ...
- 分布式文件系统 Mogilefs 安装步骤
我这里的环境都是 RHEL 5 的环境. MySQL 数据库 和 tracker 都放到一台服务器上, 为 192.168.2.85 storage server两台, 分别为 192.168.2.9 ...
- Linux下GDB调试C/C++
首先先编译程序并生成调试符号: gcc -g -c main.cpp gcc -o exefile main.o 以上的exefile为可执行程序的文件名 然后: gdb exefile 可以开始gd ...
- 理解*ptr++
这是C语言中指针的基本用法之一,我们先来看一个小例子.下面是代码: int main(void) { char *p = "Hello"; while(*p++) printf(& ...
- 【转】android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
关键词:android camera CMM 模组 camera参数 CAMIF平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者 ...