频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
微信录音amr音频文件转mp3格式
2017-07-29 10:40:24         来源:qq_36663951的博客  
收藏   我要投稿

直到现在,仍然不存在一项旨在网页上播放音频的标准。HTML5规定了一种通过 audio 元素来包含音频的标准方法。audio 元素能够播放声音文件或者音频流。当前,audio 元素支持三种音频格式:MP3 ,Wav ,Ogg Vorbis。

微信录音的音频为amr格式,不支持网页播放,且上传语音有效期3天,可用微信多媒体接口下载语音到自己的服务器,然后转码转成MP3格式,途径有两种:

一.在服务器上搭建ffmpeg

很多项目不一定放在自己服务器上,而且很多码农并不熟悉服务器方面的配置,所以没办法去搭建ffmpeg,但是对于网络接口的调用并不陌生,所以我着重讲一下使用七牛PHP框架将微信 amr音频转mp3。

二.使用七牛云存储框架转码存储

(1)下载七牛SDK

(2)将下载的整个SDK包解压之后放入项目中

(3)引入入口文件,并写好相应要使用的模块命名空间

[php] view plain copy

require_once'qiniusdk/autoload.php';

useQiniu\Auth;useQiniu\Storage\UploadManager;

useQiniu\Storage\BucketManager;

(4)将微信录音amr文件下载到本地(自己的服务器)

[php] view plain copy

privatefunctionsavemedia($serverid){$token=$this->_token;//微信请求素材的Token

$mediaid=$serverid;//语音素材的mediaid$url='https://file.api.weixin.qq.com/cgi-bin/media/get?access_token='.$token.'&media_id='.$mediaid;

$content=ihttp_get($url);//get请求if(!is_error($content)){

$prefix=explode("/",$content['headers']["Content-Type"]);$filename=$mediaid.".".$prefix[1];

$dateStr=date('Y-m-d',time());$currdir="/upload/".$dateStr.'/';

$dir=getcwd().$currdir;if(!is_dir($dir)){//创建保存文件的目录

mkdir(iconv("UTF-8","GBK",$dir),0777,true);}

$currfile=$currdir.$filename;$path=getcwd().$currfile;

if(file_exists($path)){unlink($path);//如果文件已经存在则删除已有的

}$fp=fopen($path,'w');

$state=fwrite($fp,$content['content']);//写入数据fclose($fp);

}

}

(5)将本地amr音频文件上传至七牛云并转码生成MP3文件

[php] view plain copy

privatefunctionupchange($filePath,$mediaid){

$accessKey=trim($reply['accessKey']);//七牛公钥$secretKey=trim($reply['secretKey']);//七牛私钥

$auth=newAuth($accessKey,$secretKey);

$bucket=trim($reply['bucket']);//数据处理队列名称,不设置代表不使用私有队列,使用公有队列。

$pipeline=trim($reply['pipeline']);

//通过添加'|saveas'参数,指定处理后的文件保存的bucket和key//不指定默认保存在当前空间,bucket为目标空间,后一个参数为转码之后文件名

$savekey=Qiniu\base64_urlSafeEncode($bucket.':'.$mediaid.'.mp3');//设置转码参数

$fops="avthumb/mp3/ab/320k/ar/44100/acodec/libmp3lame";$fops=$fops.'|saveas/'.$savekey;

if(!empty($pipeline)){//使用私有队列$policy=array(

'persistentOps'=>$fops,'persistentPipeline'=>$pipeline

);}else{//使用公有队列

$policy=array('persistentOps'=>$fops

);}

//指定上传转码命令

$uptoken=$auth->uploadToken($bucket,null,3600,$policy);$key=$mediaid.'.amr';//七牛云中保存的amr文件名

$uploadMgr=newUploadManager();

//上传文件并转码$filePath为本地文件路径list($ret,$err)=$uploadMgr->putFile($uptoken,$key,$filePath);

if($err!==null){returnfalse;

}else{//此时七牛云中同一段音频文件有amr和MP3两个格式的两个文件同时存在

$bucketMgr=newBucketManager($auth);//为节省空间,删除amr格式文件

$bucketMgr->delete($bucket,$key);return$ret['key'];

}}

此时七牛云空间就已经有了保存的MP3文件了。

\
点击复制链接 与好友分享!回本站首页
上一篇:UVA - 12034 Race
下一篇:极角排序以及凸包模板
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站