七牛云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') . '&notifyURL=' . 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'];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值