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 相关文章推荐
PHP:风雨欲来 路在何方?
Oct 09 PHP
php入门学习知识点一 PHP与MYSql连接与查询
Jul 14 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
php表单请求获得数据求和示例
May 15 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP MSSQL 分页实例
Apr 13 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
php实现数组重复数字统计实例
Sep 30 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
PHP4.04简明安装
2006/10/09 PHP
PHP编码规范-php coding standard
2007/03/16 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
PHP时间函数使用详解
2019/03/21 PHP
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
招商业务员岗位职责
2013/12/16 职场文书
外贸业务员工作职责
2014/01/06 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
单位未婚证明范本
2014/11/25 职场文书
财务经理岗位职责
2015/01/31 职场文书
教师党员个人总结
2015/02/10 职场文书
学习计划是什么
2019/04/30 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript