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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
浅谈php扩展imagick
Jun 02 PHP
php中unserialize返回false的解决方法
Sep 22 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
PHPThumb图片处理实例
2014/05/03 PHP
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
Python易忽视知识点小结
2015/05/25 Python
20个常用Python运维库和模块
2018/02/12 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
django2.0扩展用户字段示例
2019/02/13 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
结婚典礼证婚词
2014/01/11 职场文书
火车的故事教学反思
2014/02/11 职场文书
绩效管理实施方案
2014/03/19 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
2014年纪检工作总结
2014/11/12 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书