首頁  >  文章  >  後端開發  >  PHP實作微信錄音暫時轉永久儲存實例分享

PHP實作微信錄音暫時轉永久儲存實例分享

小云云
小云云原創
2018-01-27 09:14:272178瀏覽

本文主要為大家詳細介紹了PHP微信開發之微信錄音臨時轉永久存儲,具有一定的參考價值,有興趣的小伙伴們可以參考一下,希望能幫助到大家。

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

1、透過呼叫微信媒體資源下載介面將微信錄音下載到本機


@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,而微信網頁瀏覽器不支援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(&#39;本地amr文件路径&#39;);
//mp3 在七牛上的访问地址
var_dump($amrToMp3);
/**
 * 如果你希望将这个mp3 存储在本地而不是在七牛上,那么你需要在程序上等待几秒,因为这时七牛在转换改amr的格式
 */
 sleep(10);
$res = curlHttp($amrToMp3);    //curlHttp 就是 php  curl 机制 不懂的可以看下我下面文章机制
$open = fopen(&#39;demo.mp3&#39;,&#39;w&#39;);
fwrite($open,$res);
fclose($open);

php curlHttp

相關推薦:

PHP微信開發教程之搜尋已發送圖文及匹配關鍵字回复的方法

PHP微信開發影片資源推薦

微信開發實戰之分享功能

#

以上是PHP實作微信錄音暫時轉永久儲存實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn