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 相关文章推荐
oracle资料库函式库
Oct 09 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
Dec 02 PHP
form自动提交实例讲解
Jul 10 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 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 array操作10个小技巧分享
2011/06/23 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
33道php常见面试题及答案
2015/07/06 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
Node 代理访问的实现
2019/09/19 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
numpy排序与集合运算用法示例
2017/12/15 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
python获取Pandas列名的几种方法
2019/08/07 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
如何执行一个shell程序
2012/11/23 面试题
迟到检讨书5000字
2014/01/31 职场文书
庆元旦广播稿
2014/02/10 职场文书
市级文明单位申报材料
2014/05/07 职场文书
活动总结新闻稿
2014/08/30 职场文书
初中化学教学反思
2016/02/22 职场文书