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
黑夜路人出的几道php笔试题
Aug 04 PHP
教你如何使用php session
Oct 28 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
php 流程控制switch的简单实例
Jun 07 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 PHP
如何解决php-fpm启动不了问题
Nov 17 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
smarty模板引擎基础知识入门
2015/03/30 PHP
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
python 获取本机ip地址的两个方法
2013/02/25 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python Requests 基础入门
2016/04/07 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
简短大学毕业感言
2014/01/18 职场文书
幼教简历自我评价
2014/01/28 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
大学生见习总结报告
2015/06/24 职场文书
python基础之停用词过滤详解
2021/04/21 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
Python极值整数的边界探讨分析
2021/09/15 Python