微信开发 - 微信录音临时转永久存储

标题

最近做开发的时候碰到了这个问题,甲方希望用户在微信端的录音能够一直有效。就是随时打开好友的分享就能听到好友的录音。可在微信官方开发手册上查到微信录音文件上传后只能在微信端保留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 curlHttp

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值