PHP微信開發之微信錄音臨時轉永久儲存php技巧

來源:互聯網
上載者:User
這篇文章主要為大家詳細介紹了PHP開發之錄音臨時轉永久儲存,具有一定的參考價值,感興趣的小夥伴們可以參考一下

最近做開發的時候碰到了這個問題,甲方希望使用者在端的錄音能夠一直有效。就是隨時開啟好友的分享就能聽到好友的錄音。可在官方開發手冊上查到錄音檔案上傳後只能在端保留3天時間,3天后就失效了。怎麼辦呢?

1、通過調用媒體資源下載介面將錄音下載到本地

@paramsString access_token 公眾號access_tokenString serverId 通過錄音上傳介面擷取到的serverIdhttp://file.api.weixin.qq.com/cgi-bin/media/get?access_token={$access_token}&media_id={$serverId}

2、從方下載到本地的錄音檔案格式是amr,而網頁瀏覽器並不支援amr檔案的音頻檔案播放。所以我們需要將amr 轉換成
網頁能夠識別的mp3格式。

怎麼轉換呢?我找到了一個平台可以支援這種轉換,七牛雲端儲存平台.通過七牛雲端儲存我們可以將amr轉換成mp3

require("./extension/autoload.php");//官方開發包 可在官方下載 php版本 載入其中的autoload.php extension 是隨意 起的名字/** * @param * String $filepa 本地amr檔案路徑 * @return * String 解析後儲存在七牛儲存空間中的mp3遠程地址 */function upchange($filepa){  $accessKey="七牛accessKey 在七牛後台擷取";  $secretKey="七牛secretKey 在七牛後台擷取";  $httpUrl ="七牛分配的訪問地址 在七牛後台擷取";  $bucket = "儲存空間對象bucket 在七牛後台建立";  //轉碼時使用的隊列名稱  $pipeline = '轉碼隊列名稱 在七牛後台建立';  $auth = new \Qiniu\Auth($accessKey, $secretKey);  $rand_name = getRandChar__(6).time().'.mp3';  //要進行轉碼的轉碼操作  $fops = "avthumb/mp3/ab/64k/ar/22050";  //$fops = "mp3";  //可以對轉碼後的檔案進行使用saveas參數自訂命名,當然也可以不指定檔案會預設命名並儲存在當間  $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兩個數之間的一個隨機整數  }  return $str;}$amrToMp3 = upchange('本地amr檔案路徑');//mp3 在七牛上的訪問地址var_dump($amrToMp3);/** * 如果你希望將這個mp3 儲存在本地而不是在七牛上,那麼你需要在程式上等待幾秒,因為這時七牛在轉換改amr的格式 */ sleep(10);$res = curlHttp($amrToMp3);    //curlHttp 就是 php  curl 機制 不懂的可以看下我下面文章機制$open = fopen('demo.mp3','w');fwrite($open,$res);fclose($open);

php curlHttp

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.