七牛云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 ...
随机推荐
- 用IBM WebSphere DataStage进行数据整合: 第 1 部分
转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/ 引言 传统的数据整合方式需要大量的手工 ...
- Mvc音乐商店demo的ajax异步删除功能总结
刚刚从学校出来参加工作,没啥工作经验,所以各位大神们不要嘲笑哈! 来公司后要进行培训,给我们的作业中有一个使用 dapper+mvc+ajax+SQL Server 2008,来实现一个音乐商店的de ...
- <正见>摘抄
1- 没有全能的力量能够扭转死亡之路,因此也就不会困在期待之中.如果没有盲目的期待,就不会有失望,如果能够了解一切都是无常,就不会攀缘执著.如果不攀缘执著,就不会患得患失,也才能真正完完全全地活着. ...
- [转]从数据库中导出用友U8的现存量数据到Excel表
转载自:http://www.czerp.com.cn/page/Default.asp?ID=372 可通过Excel获取外部数据的方式与SQL数据库创建查询连接,并导入到Excel中: Selec ...
- C51编程中对单片机绝对地址访问的两种方法
在进行8051单片机应用系统程序设计时,编程都往往少不了要直接操作系统的各个存储器地址空间.C51程序经过编译之后产生的目标代码具有浮动地址,其绝对地址必须经过BL51连接定位后才能确定.为了能够在C ...
- C 宏定义
C/C++中宏使用总结 .C/C++中宏总结C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境.本节将介绍如何应用预处理程序和注释 ...
- Qt之图标切分与合并(关键是使用QPixmap的copy函数来拷贝整张图片的某个区域)
有些时候会将多张有相同功能的图片绘制成一张,不管是使用或者绘制上都会方便很多.对美工与开发者来说也都是一件省事.省力.更省心的方式.二全其美,又何乐而不为呢... 例如:QQ等级 ...
- c++容器使用总结(转载)
目录 ==================================================== 第一章 容器 第二章 Vector和string 第三章 关联容器 第四章 迭代器 第五 ...
- python局域网alive ip侦听
python局域网alive ip侦听 作者:vpoet mails:vpoet_sir@163.com 注:写着玩,欢迎copy # -*- coding: cp936 -*- # coding = ...
- hdu 5610 Baby Ming and Weight lifting
Problem Description Baby Ming is fond of weight lifting. He has a barbell pole(the weight of which c ...