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

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

一.在服务器上搭建ffmpeg

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

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

(1)下载七牛SDK,下载地址:https://developer.qiniu.com/sdk

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

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

require_once 'qiniusdk/autoload.php';  use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use Qiniu\Storage\BucketManager; 

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

private function savemedia($serverid){  $token = $this->_token;          //微信请求素材的Token  $mediaid = $serverid;            //语音素材的mediaid  $url = 'http://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文件

private function upchange($filePath,$mediaid){  $accessKey = trim($reply['accessKey']);      //七牛公钥  $secretKey = trim($reply['secretKey']);      //七牛私钥  $auth = new Auth($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 = new UploadManager();  //上传文件并转码$filePath为本地文件路径  list($ret, $err) = $uploadMgr->putFile($uptoken, $key, $filePath);  if ($err !== null) {  return false;  }else {  //此时七牛云中同一段音频文件有amr和MP3两个格式的两个文件同时存在  $bucketMgr = new BucketManager($auth);  //为节省空间,删除amr格式文件  $bucketMgr->delete($bucket, $key);  return $ret['key'];  }
}

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

微信录音amr音频文件转mp3格式相关推荐

  1. PHP 将amr音频文件转换为mp3格式

    PHP 将amr音频文件转换为mp3格式 说下整体思路 1.服务器安装ffmpeg 2.使用ffmpeg -i 指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数执行即可) 3 ...

  2. Windows下批量转换Silk v3音频文件为MP3格式

    转自:https://kn007.net/topics/batch-convert-silk-v3-audio-files-to-mp3-in-windows/ 前有<解码转换QQ微信的SILK ...

  3. Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件

    Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...

  4. 用 python 脚本+ffmpeg,把当前目录及子目录下的 wma音频文件转换为mp3 格式

    用 python 脚本+ffmpeg,把当前目录及子目录下的 wma音频文件转换为mp3 格式 用 python 脚本,结合ffmpeg软件,把当前目录及子目录下的 wma 音频文件转换为 mp3 格 ...

  5. 如何将音频文件转换为MP3格式?

    音频文件有很多种格式,如 WAV.FLAC.AAC 等,其中 MP3 是最为常见的一种格式,因为它具有压缩比高.音质损失少.兼容性强等优点,适合在各种设备上播放.如果你想将一个音频文件转换为 MP3 ...

  6. Android录音amr实时转成MP3格式

    文章目录 MP3 录音使用说明 步骤一:下载NDK,并配置(Mac) 步骤二:修改C代码相关路径,编译成so库 步骤三:应用层代码代码调用系统AudioRecord类开始录音 开始录音 start() ...

  7. 在服务器端,转换amr格式音频文件为MP3格式

    由于当前pc端浏览器及移动端浏览器都不支持直接播放amr格式文件,因此考虑在服务器端,将amr文件转换为MP3文件,使浏览器可直接播放. 在服务器使用ffmpeg工具,供php调用,用来转换amr文件 ...

  8. java 将.amr音频文件转换为.mp3或.wav文件

    1.在windows系统下 //利用ffmpeg.exe工具与cmd中的命令进行转换 //sourcePath为需要转换的.amr文件路径;targetPath为转换好的.mp3文件路径: //too ...

  9. 使用python讲二进制转换为音频文件_Python使用ffmpy将amr格式的音频转化为mp3格式的例子...

    最近做了一个项目,将从微信下载的音频文件(默认为.amr格式)转化为mp3格式(否则前端播放将会遇到困难)上传到云端.经过一番研究,最终决定采用Python的ffmpy包. 安装只需执行 pip in ...

最新文章

  1. 【译】JavaScript 核心(第二版)
  2. 用电脑发短信_丢掉你的手机数据线吧!用这个软件轻松在任何设备互传文件
  3. Android 第一个OpenGL ES程序
  4. 为jupyter_notebook增加目录
  5. 不得不赞!京东开源FaceX-Zoo,一站式人脸识别研究平台
  6. GP学习(八)—How to access a raster dataset and to create a raster dataset
  7. 西门子real是什么数据类型_如何实现西门子新一代精智屏及基本屏与 S120 的直接通讯...
  8. 计算机毕业设计中民宿平台信息管理系统设计
  9. 简书和微博的区别是什么
  10. 如何理解冲突域和广播域?(转)
  11. oracle imp命令路径,在oracle中关于imp命令的详细讲解
  12. 移动Ad Hoc网络路由协议汇总
  13. 【智能制造】制造业信息化与工业4.0
  14. 【java】IDEA设置自己的名字和时间(Created by)
  15. FPGA学习笔记-1 FPGA原理与开发流程
  16. amazon 云平台入门
  17. 误删计算机桌面图标怎么恢复,大神为你解答win7系统恢复误删桌面计算机图标的步骤...
  18. 氧饱夹语音芯片,内置功放直推喇叭输出,低成本语音IC,WTN6系列
  19. 各类多媒体计算机硬件设备,多媒体教室主要有哪些硬件设备
  20. mybatis根据省份查询城市的多表查询

热门文章

  1. Python-sklearn库的安装
  2. 男朋友创业项目不被看好,作为女朋友该不该支持?
  3. PADS Logic PADS9.5-Win10补丁用于修改选项显示不全,和PADS Layout 9.5封装向导窗口显示不全
  4. 小区AO 各地小区边界下载
  5. 2019-04-07我破解了中国商标网
  6. oracle 定义atp规则,ATP新积分规则详解
  7. 菜鸟教程:HTML表单详解
  8. 【Python】漏斗模型--生成漏斗案例 Demo实例
  9. K65 Flex_CAN 匹配过程
  10. 使用pandas时间窗口函数rolling完成量化交易之移动平均线