七牛雲Fetch第三方資源並轉碼(PHP版)


七牛雲的圖片加速一直在用,好用沒得說,最近項目需要做個微信端錄音,然后上傳,別人試聽的功能,錄音和上傳用的都是微信的接口,有文檔,比較方便,但是上傳后,微信只給保存3天,所以就下載到了七牛,也就用到了七牛的fetch功能,這步搞定之后,又發現,微信錄音生成的amr音頻在安卓機能正常播放(據說也只能在微信內置瀏覽器播放),蘋果機卻不行,各種搜索,都只能使用轉碼,雖然知道七牛雲可以可以轉音頻,但是實時轉換的接口被停用了,只能持久化轉換,到這里時,已經有一點排斥心理,其一是擔心持久轉換時間過長,不能實現上傳后就能播放,其二就是不得不說,七牛的文檔好亂,好多相關的東西不在一起寫,要分別找,而且描述的不清楚,另外吐槽下,給的PHP SDK也有點問題,返回bad token。。。。但是七牛雲的服務還是很好的,嘿嘿

話不多說,下面上代碼,兩個函數,大家參考,同樣基於ThinkPHP開發的哈,很多參數直接用C方法讀的配置文件哦

1、下載第三方資源到七牛,只要傳入第三方資源地址即可

 1 function qiniuFetch($url){
 2     $encodedURL = str_replace(array('+', '/'), array('-', '_'), base64_encode($url));
 3     $encodedEntryURI = str_replace(array('+', '/'), array('-', '_'), base64_encode(C('QINIU_BUCKET')));
 4     $url = '/fetch/' . $encodedURL . '/to/' . $encodedEntryURI;
 5     $sign = hash_hmac('sha1', $url . "\n", C('QINIU_SK'), true);
 6     $token = C('QINIU_AK') . ':' . str_replace(array('+', '/'), array('-', '_'), base64_encode($sign));
 7     $header = array('Host: iovip.qbox.me', 'Content-Type:application/x-www-form-urlencoded', 'Authorization: QBox ' . $token);
 8     $curl = curl_init();
 9     curl_setopt($curl, CURLOPT_URL, trim('http://iovip.qbox.me' . $url, '\n'));
10     curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
11     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
12     curl_setopt($curl, CURLOPT_POSTFIELDS, "");
13     $result = json_decode(curl_exec($curl), true);
14     curl_close($curl);
15     return $result['key'] ? C('QINIU_HOST') . $result['key'] : false;
16 }

2、轉換七牛雲資源的格式,只要傳入源文件的key即可,好像還支持指定另存為***文件,需要在fops那加上通道命令,時間緊就沒研究

 1 function qiniuConvert($key){
 2     $data = 'bucket=' . C('QINIU_BUCKET') . '&key=' . $key . '&fops=' . urlencode('avthumb/mp3') . '&notifyURL=' . urlencode('http://abc.com/qiniuConvertNotice') . '&pipeline=pingshizx';
 3     $sign = hash_hmac('sha1', "/pfop/\n" . $data, C('QINIU_SK'), true);
 4     $token = C('QINIU_AK') . ':' . str_replace(array('+', '/'), array('-', '_'), base64_encode($sign));
 5     $header = array('Content-Type:application/x-www-form-urlencoded', 'Authorization: QBox ' . $token);
 6     $curl = curl_init();
 7     curl_setopt($curl, CURLOPT_URL, 'http://api.qiniu.com/pfop/');
 8     curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
 9     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
10     curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
11     $result = json_decode(curl_exec($curl), true);
12     curl_close($curl);
13 }

通知結果的處理,這里返回的只是文件的key,需要加上空間地址才能訪問哦

$data = json_decode(file_get_contents("php://input"), true);
return $data['items'][0]['key'];

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM