E企盈营销工具技术服务商 热线:4006-838-530

微信小程序上传silk格式录音并转码为mp3

E企盈直播平台营销卖货系统

单纯限制了我对小程序坑爹的想象最近写录音功能时候又验证了一次;其中的辛酸泪;不搞过是不会懂的;为了让后面的童鞋少走点弯路;于是就有了这篇文章;先来说下我们的目标;我们要让用户录音;然后把录音上传到服务器;管理员可以在后台听录音;以及进一步对录音处理;小程序是开放了录音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 了;

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序上传silk格式录音并转码为mp3
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏