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 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
php调用mysql存储过程
Feb 14 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
PHP使用数组实现队列
Feb 05 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
9个比较实用的php代码片段
Mar 15 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
thinkphp jquery实现图片上传和预览效果
Jul 22 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 PHP
php实现断点续传大文件示例代码
Jun 19 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中的一个中文字符串截取函数
2007/02/14 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
php操作mongoDB实例分析
2014/12/29 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
Js 刷新框架页的代码
2010/04/13 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
Python读写Redis数据库操作示例
2014/03/18 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
将python代码和注释分离的方法
2018/04/21 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
Python类继承和多态原理解析
2020/02/05 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
优秀驾驶员先进事迹材料
2014/05/04 职场文书
女生节标语
2014/06/26 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技