PHP微信開發(fā)之微信錄音臨時轉(zhuǎn)永久存儲
最近做開發(fā)的時候碰到了這個問題,甲方希望用戶在微信端的錄音能夠一直有效。就是隨時打開好友的分享就能聽到好友的錄音。可在微信官方開發(fā)手冊上查到微信錄音文件上傳后只能在微信端保留3天時間,3天后就失效了。怎么辦呢?
1、通過調(diào)用微信媒體資源下載接口將微信錄音下載到本地
@params
String access_token 微信公眾號access_token
String serverId 通過錄音上傳接口獲取到的serverId
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={$access_token}&media_id={$serverId}
2、從微信方下載到本地的錄音文件格式是amr,而微信網(wǎng)頁瀏覽器并不支持amr文件的音頻文件播放。所以我們需要將amr 轉(zhuǎn)換成
網(wǎng)頁能夠識別的mp3格式。
怎么轉(zhuǎn)換呢?我找到了一個平臺可以支持這種轉(zhuǎn)換,七牛云存儲平臺.通過七牛云存儲我們可以將amr轉(zhuǎn)換成mp3
require("./extension/autoload.php");//官方開發(fā)包 可在官方下載 php版本 載入其中的autoload.php extension 是隨意 起的名字
/**
* @param
* String $filepa 本地amr文件路徑
* @return
* String 解析后存儲在七牛存儲空間中的mp3遠(yuǎn)程地址
*/
function upchange($filepa){
$accessKey="七牛accessKey 在七牛后臺獲取";
$secretKey="七牛secretKey 在七牛后臺獲取";
$httpUrl ="七牛分配的訪問地址 在七牛后臺獲取";
$bucket = "存儲空間對象bucket 在七牛后臺創(chuàng)建";
//轉(zhuǎn)碼時使用的隊(duì)列名稱
$pipeline = '轉(zhuǎn)碼隊(duì)列名稱 在七牛后臺創(chuàng)建';
$auth = new \Qiniu\Auth($accessKey, $secretKey);
$rand_name = getRandChar__(6).time().'.mp3';
//要進(jìn)行轉(zhuǎn)碼的轉(zhuǎn)碼操作
$fops = "avthumb/mp3/ab/64k/ar/22050";
//$fops = "mp3";
//可以對轉(zhuǎn)碼后的文件進(jìn)行使用saveas參數(shù)自定義命名,當(dāng)然也可以不指定文件會默認(rèn)命名并保存在當(dāng)間
$savekey = Qiniu\base64_urlSafeEncode('kepei:'.$rand_name);
$fops = $fops.'|saveas/'.$savekey;
$policy = array(
'persistentOps' => $fops,
'persistentNotifyUrl' => 'http://',
);
$uptoken = $auth->uploadToken($bucket, null, 3600, $policy);
//上傳文件的本地路徑
$filePath = $filepa;
$key = $rand_name;
//$key = '';
$uploadMgr = new \Qiniu\Storage\UploadManager();
list($ret, $err) = $uploadMgr->putFile($uptoken, $key, $filePath);
if ($err !== null) {
return false;
} else {
return $httpUrl.$rand_name;
}
}
function getRandChar__($length){
$str = null;
$strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
$max = strlen($strPol)-1;
for($i=0;$i<$length;$i++){
$str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max兩個數(shù)之間的一個隨機(jī)整數(shù)
}
return $str;
}
$amrToMp3 = upchange('本地amr文件路徑');
//mp3 在七牛上的訪問地址
var_dump($amrToMp3);
/**
* 如果你希望將這個mp3 存儲在本地而不是在七牛上,那么你需要在程序上等待幾秒,因?yàn)檫@時七牛在轉(zhuǎn)換改amr的格式
*/
sleep(10);
$res = curlHttp($amrToMp3); //curlHttp 就是 php curl 機(jī)制 不懂的可以看下我下面文章機(jī)制
$open = fopen('demo.mp3','w');
fwrite($open,$res);
fclose($open);
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PHP根據(jù)兩點(diǎn)間的經(jīng)緯度計(jì)算距離
這篇文章主要介紹了PHP如何根據(jù)兩點(diǎn)間的經(jīng)緯度計(jì)算距離,代碼很簡單,但很實(shí)用,需要的朋友可以參考下2014-10-10
PHP隨機(jī)生成隨機(jī)個數(shù)的字母組合示例
在很多系統(tǒng)環(huán)境下大家都會用到字母組合各種編碼。下面為大家介紹下使用php隨機(jī)生成隨機(jī)個數(shù)的字母組合,感興趣的朋友可以了解下2014-01-01
PHP用mysql數(shù)據(jù)庫存儲session的代碼
大部分使用php的人一旦應(yīng)用到session都會使用cookie。 cookie雖好可是它也會給我們帶來一些隱患的。2010-03-03
PHP CURL post數(shù)據(jù)報(bào)錯 failed creating formpost data
我們有時候用curl上傳文件遇到failed creating formpost data的錯誤,那具體是如何產(chǎn)生,又如何進(jìn)行處理解決呢,下面我們就來探討下2016-10-10
微信公眾平臺開發(fā)教程⑥ 微信開發(fā)集成類的使用圖文詳解
這篇文章主要介紹了微信公眾平臺開發(fā)之微信開發(fā)集成類的使用,結(jié)合圖文形式詳細(xì)分析了微信開發(fā)集成類的原理、功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-04-04
php+mysql結(jié)合Ajax實(shí)現(xiàn)點(diǎn)贊功能完整實(shí)例
這篇文章主要介紹了php+mysql結(jié)合Ajax實(shí)現(xiàn)點(diǎn)贊功能,以一個完整實(shí)例形式詳細(xì)分析了實(shí)現(xiàn)點(diǎn)贊功能中涉及的html頁面、Ajax功能及php方法的使用技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-01-01
學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)裝飾器模式(decorator)
這篇文章主要介紹了php設(shè)計(jì)模式中的裝飾模式,使用php實(shí)現(xiàn)裝飾模式,感興趣的小伙伴們可以參考一下2015-12-12

