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 相关文章推荐
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
解析php防止form重复提交的方法
Jul 01 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
php similar_text()函数的定义和用法
May 12 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
CI框架数据库查询之join用法分析
May 18 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
详解PHP队列的实现
Mar 14 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不用正则采集速度探究总结
2008/03/24 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
JavaScript中的类继承
2010/11/25 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
python函数的万能参数传参详解
2019/07/26 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
什么是Rollback Segment
2013/04/22 面试题
幼儿园园长岗位职责
2013/11/26 职场文书
超市商业计划书
2014/05/04 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
应届毕业生自荐信
2015/03/04 职场文书
2016年国培研修日志
2015/11/13 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
nginx七层负载均衡配置详解
2022/07/15 Servers