PHP微信开发之微信录音临时转永久存储


Posted in PHP onJanuary 26, 2018

最近做开发的时候碰到了这个问题,甲方希望用户在微信端的录音能够一直有效。就是随时打开好友的分享就能听到好友的录音。可在微信官方开发手册上查到微信录音文件上传后只能在微信端保留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('本地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 相关文章推荐
global.php
Dec 09 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
php使用递归函数实现数字累加的方法
Mar 16 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
yii用户注册表单验证实例
Dec 26 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
thinkphp jquery实现图片上传和预览效果
Jul 22 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 PHP
PHP CURL与java http使用方法详解
Jan 26 #PHP
php实现mysql连接池效果实现代码
Jan 25 #PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 #PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 #PHP
PHP开发之用微信远程遥控服务器
Jan 25 #PHP
php实现统计二进制中1的个数算法示例
Jan 23 #PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 #PHP
You might like
用php+javascript实现二级级联菜单的制作
2008/05/06 PHP
php mssql 日期出现中文字符的解决方法
2009/03/10 PHP
php实现每日签到功能
2018/11/29 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
树结构之JavaScript
2017/01/24 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
Bootstrap 树控件使用经验分享(图文解说)
2017/11/06 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
详解React中setState回调函数
2018/06/14 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
python实现txt文件格式转换为arff格式
2018/05/31 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
教师师德承诺书
2014/03/26 职场文书
党员承诺书格式
2014/05/21 职场文书
合作协议书范文
2014/08/20 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
中学语文教学反思
2016/02/16 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
mysql数据库入门第一步之创建表
2021/05/14 MySQL