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学习 字符串课件
Jun 15 PHP
php 变量定义方法
Jun 14 PHP
Server.HTMLEncode让代码在页面里显示为源代码
Dec 08 PHP
php中session使用示例
Mar 29 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
php实现短信发送代码
Jul 05 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
Yii视图CGridView实现操作按钮定义地址示例
Jul 14 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 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版 汉字转码的实现详解
2013/06/09 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
js中this用法实例详解
2015/05/05 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
python使用锁访问共享变量实例解析
2018/02/08 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
解决python运行效率不高的问题
2020/07/20 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
班主任对学生的评语
2014/04/26 职场文书
消防宣传语大全
2015/07/13 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
公司车辆管理制度
2015/08/04 职场文书
详细总结Python常见的安全问题
2021/05/21 Python
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android