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 相关文章推荐
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
PHP队列用法实例
Nov 05 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
yii2带搜索功能的下拉框实例详解
May 12 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
Laravel基础_关于view共享数据的示例讲解
Oct 14 PHP
PHP实现简单注册登录系统
Dec 28 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中print(),print_r(),echo()的区别详解
2014/12/01 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
python实现图片彩色转化为素描
2019/01/15 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
python 实现简易的记事本
2020/11/30 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
火车的故事教学反思
2014/02/11 职场文书
暑期研修感言
2014/02/17 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
大学生就业意向书范文
2014/04/01 职场文书
求职意向书
2014/07/29 职场文书
总经理检讨书
2014/09/15 职场文书
工作推荐信模板
2015/03/25 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL