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
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
php IP及IP段进行访问限制的代码
Dec 17 PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
PHP 出现 http500 错误的解决方法
Mar 09 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获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
js select常用操作控制代码
2010/03/16 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
javascript控制台详解
2015/06/25 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python实现的科学计算器功能示例
2017/08/04 Python
python 两个数据库postgresql对比
2019/10/21 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
医院护理人员的自我评价分享
2013/10/04 职场文书
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
高中美术教学反思
2016/02/17 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript