最近做開發(fā)的時(shí)候碰到了這個(gè)問題,甲方希望用戶在微信端的錄音能夠一直有效。就是隨時(shí)打開好友的分享就能聽到好友的錄音??稍谖⑿殴俜介_發(fā)手冊(cè)上查到微信錄音文件上傳后只能在微信端保留3天時(shí)間,3天后就失效了。怎么辦呢?
1、通過調(diào)用微信媒體資源下載接口將微信錄音下載到本地
@params String access_token 微信公眾號(hào)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)頁能夠識(shí)別的mp3格式。
怎么轉(zhuǎn)換呢?我找到了一個(gè)平臺(tái)可以支持這種轉(zhuǎn)換,七牛云存儲(chǔ)平臺(tái).通過七牛云存儲(chǔ)我們可以將amr轉(zhuǎn)換成mp3
require("./extension/autoload.php");//官方開發(fā)包 可在官方下載 php版本 載入其中的autoload.php extension 是隨意 起的名字 /** * @param * String $filepa 本地amr文件路徑 * @return * String 解析后存儲(chǔ)在七牛存儲(chǔ)空間中的mp3遠(yuǎn)程地址 */ function upchange($filepa){ $accessKey="七牛accessKey 在七牛后臺(tái)獲取"; $secretKey="七牛secretKey 在七牛后臺(tái)獲取"; $httpUrl ="七牛分配的訪問地址 在七牛后臺(tái)獲取"; $bucket = "存儲(chǔ)空間對(duì)象bucket 在七牛后臺(tái)創(chuàng)建"; //轉(zhuǎn)碼時(shí)使用的隊(duì)列名稱 $pipeline = '轉(zhuǎn)碼隊(duì)列名稱 在七牛后臺(tái)創(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"; //可以對(duì)轉(zhuǎn)碼后的文件進(jìn)行使用saveas參數(shù)自定義命名,當(dāng)然也可以不指定文件會(huì)默認(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兩個(gè)數(shù)之間的一個(gè)隨機(jī)整數(shù) } return $str; } $amrToMp3 = upchange('本地amr文件路徑'); //mp3 在七牛上的訪問地址 var_dump($amrToMp3); /** * 如果你希望將這個(gè)mp3 存儲(chǔ)在本地而不是在七牛上,那么你需要在程序上等待幾秒,因?yàn)檫@時(shí)七牛在轉(zhuǎn)換改amr的格式 */ sleep(10); $res = curlHttp($amrToMp3); //curlHttp 就是 php curl 機(jī)制 不懂的可以看下我下面文章機(jī)制 $open = fopen('demo.mp3','w'); fwrite($open,$res); fclose($open);
php curlHttp
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:南京 濱州 株洲 太原 曲靖 南昌 興安盟 白酒營銷
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP微信開發(fā)之微信錄音臨時(shí)轉(zhuǎn)永久存儲(chǔ)》,本文關(guān)鍵詞 PHP,微信,開,發(fā)之,錄音,臨時(shí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。