单纯限制了我对小程序坑爹的想象最近写录音功能时候又验证了一次;其中的辛酸泪;不搞过是不会懂的;为了让后面的童鞋少走点弯路;于是就有了这篇文章;先来说下我们的目标;我们要让用户录音;然后把录音上传到服务器;管理员可以在后台听录音;以及进一步对录音处理;小程序是开放了录音api的;这个翻开发文档是可以找到的;同时还有一个上传文件的接口;这两个以配合不就轻松实现了?刚开始的时候我也是这么年轻;当我开始搞起的时候才发现是多森破;首先我们需要调用wx.stopRecordapi开始录音;然后调用wx.stopRecordapi结束录音;在success回调方法中可以得到tempFilePath;这是一个录音生成的临时文件路径;用console.log打印的话是下面这个样子;调用wx.uploadFileapi;filePath就是上面的这个tempFilePath;这样就可以把录音上传到自己服务器了;霎时心情愉悦踱起了魔鬼的步伐开始摩擦摩擦;然而如果就这么轻松的搞定的话;那就没法说坑了;因为这个音频文件根本不是什么mp3等常见通用格式;再认真一看会发现这个文件是silk格式;百之谷之必应之;原来是skype的音频转码格式;那就找个转码的方案吧;于是在全球最大的同性交友网站github上找到了silk-v3-decoder;然后就发现silk-v3-decoder依赖ffmpeg;又于就又去安装ffmpeg;又然后发现想用ffmpeg转mp3需要先安装lame;下载lamewget http://downloads.sourceforge.net/lame/lame-3.100.tar.gzBashCopy解压tar -zxvf lame-3.100.tar.gzcd lame-3.100BashCopy编译安装./configure –prefix=/usr/localmakemake installBashCopy如果是64位的系统;需要增加一个软连接;ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0BashCopy下载 ffmpegwget http://ffmpeg.org/releases/ffmpeg-3.4.1.tar.bz2BashCopy解压tar -jxvf ffmpeg-3.4.1.tar.bz2BashCopy编译安装cd ffmpeg-3.4.1./configure –prefix=/usr/local –pkg-config-flags=–static –enable-libmp3lame –disable-x86asmmakemake installBashCopy剩下的就简单了;下载 silk-v3-decodercd /opt wget https://github.com/kn007/silk-v3-decoder/archive/master.zipBashCopy解压unzip master.zipmv silk-v3-decoder-master silk-v3-decoderBashCopy给予执行权限chmod -R +x /opt/silk-v3-decoder/BashCopy然后就可以调用命令了;/opt/silk-v3-decoder/converter.sh file mp3’BashCopy心想折腾这么大半天了;终于可以转码了吧;没想到又森破了;上来就是一个失败;又于是用编辑器打开上传的silk文件;发现是下面这个样子的;原来是用base64转码了;还好世界上最好的语言php解决这个问题so easy;// $file 是 silk文件路径 删掉前面的加密说明$base64 = str_replace(‘data:audio/webm;base64,’, ”, file_get_contents($file));// 转码$content = base64_decode($base64);// 把转码后的内容存入文件file_put_contents($file, $content);PHPCopy转码后再打开应该是这个样子的;再然后写个方法用php调用silk-v3-decoder;/** * 把 silk 转成MP3 * * @param $file * * @return mixed */function silkToMp3($file){ set_time_limit(0); $path = $_SERVER[‘DOCUMENT_ROOT’] . ‘/Upload/record/’ . $file; $command = ‘/usr/bin/sh /opt/silk-v3-decoder/converter.sh ‘ . $file . ‘ mp3’; exec($command, $result); return $result;}PHPCopy大舒一口气总算是搞完了;可没想到还是森破了;使用开发工具录音生成的是base64转码后的silk文件;在真机中使用微信录音上传的silk是未被转码的;于是最好做个判断;判断文件中如果含有 data:audio/webm;base64;那就使用base64转码;如果没有则不需要转了;最后再说一些需要注意的地方;小程序api的request请求最长时间为60秒;还有就是调试的时候先在系统中通过命令行使用 silk-v3-decoder;成功后再用php调用;如果转码失败可以查看 silkToMp3 的返回值;里面有错误的原因;我是一条分割线 – – -补充: 现在小程序可以直接录制 mp3 了;
微信小程序上传silk格式录音并转码为mp3
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序上传silk格式录音并转码为mp3
相关推荐
数据恢复软件(二):用C++重写恢复B乐都县E企盈小程序MP位图文件的小程序
公众号再次改版高坪区E企盈小程序小程序又多了一个入口
微信小程序加载图片时,湘桥区E企盈小程序先拉长,再恢复正常
转:(很有用)有多个按钮,点击一个变色,点击另吴中区E企盈小程序一个变色,原来的恢复颜色的方法
第12课微信小程序Component构造器自道里区E企盈小程序定义组件:
导航中的南海区E企盈小程序小竖线总结
小程序:after实现德格县E企盈小程序1px纵向分割线
汉沽区E企盈小程序企业微信内测朋友圈和客户群功能:小程序C位出道!
小程序运行加载密山市E企盈小程序机制
小程通城县E企盈小程序序中间有字的分隔线
公众号和小程序可以同名了名称支持同主体复盘锦E企盈小程序用
微信小程序修改主潜江市E企盈小程序体信息
最新评论
独特万商直播系统,直播系统技术开发公司
万商直播系统开发公司
优秀的团队,万商直播管理系统
不错的小程序案例
优秀的团队,不错的服务!
讲的很好
主播长的帅气
好系统好服务