微信--下载amr转mp3

    xiaoxiao2021-09-22  61

    写得不错:http://www.cnblogs.com/zhongxia/p/5917163.html

    微信的录音文件上传到微信服务器上,只能保存三天。 因此需要做一个转存到自己服务器,或者七牛云的操作。

    转存到自己服务器

    调用微信JSSDK API 录音, 录音结束,上传到微信服务器,获取录音文件的 media_id根据 media_id 下载录音文件(amr)格式转存到自己服务器(amr需要转码成mp3) 或者 七牛云(有转码功能)

    步骤1代码

    ... /** * 开始录音[省略了一部分代码] */ startRecord: function() { var that = this; if (!that._startRecordFlag) { typeof wx !== "undefined" && wx.startRecord({ success: function(res) { Logger.log("res", res) if (res.errMsg == 'startRecord:ok') { Logger.log("正在开始录音....") that._startTime = new Date().getTime(); } } }); } }, /** * 结束录音,并上传 */ stopRecord: function() { that._startRecordFlag = false; typeof wx !== "undefined" && wx.stopRecord({ success: function(res) { //上传录音 wx.uploadVoice({ localId: res.localId, isShowProgressTips: 1, success: function(resUpload) { //下载录音文件到服务器,转存起来 Model.downloadRecordAudio(resUpload.serverId, function(result) { console.log(resUpload.serverId, result.path) that.attachment = result.path; // that.attachment = resUpload.serverId; that.stopRecordCallback && that.stopRecordCallback(); }) } }); } }); }, ...

    步骤2代码

    <?php //处理方法, upload(); //media_id为微信jssdk接口上传后返回的媒体id function upload(){ $media_id = $_POST["media_id"]; $access_token = getAccessToken(); $path = "./weixinrecord/"; //保存路径,相对当前文件的路径 $outPath = "./php/weixinrecord/"; //输出路径,给show.php 文件用,上一级 if(!is_dir($path)){ mkdir($path); } //微 信上传下载媒体文件 $url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={$access_token}&media_id={$media_id}"; $filename = "wxupload_".time().rand(1111,9999).".amr"; downAndSaveFile($url,$path."/".$filename); $data["path"] = $outPath.$filename; $data["msg"] = "download record audio success!"; // $data["url"] = $url; echo json_encode($data); } //获取Token function getAccessToken() { // access_token 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode(file_get_contents("./access_token.json")); if ($data->expire_time < time()) { $appid = "youappid"; //自己的appid $appsecret = "youappsecret"; //自己的appsecret $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}"; $res = json_decode(httpGet($url)); $access_token = $res->access_token; if ($access_token) { $data->expire_time = time() + 7000; $data->access_token = $access_token; $fp = fopen("./access_token.json", "w"); fwrite($fp, json_encode($data)); fclose($fp); } } else { $access_token = $data->access_token; } return $access_token; } //HTTP get 请求 function httpGet($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl); curl_close($curl); return $res; } //根据URL地址,下载文件 function downAndSaveFile($url,$savePath){ ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); $fp = fopen($savePath, 'a'); fwrite($fp, $img); fclose($fp); } ?>

    转载请注明原文地址: https://ju.6miu.com/read-677799.html

    最新回复(0)