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 相关文章推荐
header()函数使用说明
Nov 23 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
PHP制作万年历
Jan 07 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
Apr 03 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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的autoload自动加载机制使用说明
2010/12/28 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
简单介绍Python中的decode()方法的使用
2015/05/18 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
程序员岗位职责
2013/11/11 职场文书
关于中国梦的演讲稿
2014/04/23 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
工作表扬信
2015/01/17 职场文书
留学推荐信怎么写
2015/03/26 职场文书
教师创先争优承诺书
2015/04/27 职场文书
音乐课外活动总结
2015/05/09 职场文书
入党介绍人意见范文
2015/06/01 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
python多线程方法详解
2022/01/18 Python