微信小程序录音文件.silk上传服务器并且转换mp3格式。本教程将采用nodejs/silk_v3_decoder.exe/ffmpeg三个东西配合使用。本教程是在windows下通过。
本教程包括下面几个步骤:
1、nodejs安装等一些基本使用就不说了,如果使用nodejs开发的人即可知道,它是服务器脚本语言和php、java等后端技术语言类似。
2、安装silk_v3_decoder.exe,安装方式也很简单,在https://github.com/kn007/silk-v3-decoder这个地址可以下载。下载下来主要包括:lame.exe文件、silk_v3_decoder.exe文件、silk2mp3.exe文件。这三个文件尽量不用删除任何一个。
3、安装ffmpeg文件,https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20160316-git-d0a9114-win64-static.7z这个地址可以下载,下载好解压好之后,给ffmpeg建立一个环境变量,环境变量指定到刚刚解压文件夹里面的bin文件夹里面即可。
上面三个步骤准备好之后就是在nodejs里面写程序了。首先我们要安装child_process。这个是nodejs的一个插件,用来执行系统命令的。
安装命令:
- npm install child_process;安装好之后引到要处理的文件,如:var exec=require("child_process").exec;。
接下来如下书写代码:
- var audioSilk="xiaoweiba.silk";
- var audioPcmName="xiaoweiba.pcm";
- var audioMp3Name="xiaoweiba.mp3";
先利用silk_v3_decoder.exe把.silk文件转换成pcm再利用ffmpeg把pcm转mp3即可。至于为什么要先转pcm再转mp3这个是一个解码过程,详尽介绍自行百度谷歌。如果缺少一个步骤转换出来的不保证能播放。
具体nodejs实现代码如下:
- exec("C:\\nodejs\\web\\silk_v3_decoder\\silk_v3_decoder.exe "+audioSilk+" C:\\nodejs\\web\\audio\\"+audioPcmName, function(err,stdout,stderr){
- if(err) {
- console.log('get weather api error:');
- } else {
- //console.log(stdout);
- exec("ffmpeg -y -f s16le -ar 24000 -ac 1 -i C:\\nodejs\\web\\audio\\"+audioPcmName+" C:\\nodejs\\web\\audio\\"+audioMp3Name,function(){
- if(err) {
- console.log('get weather api error:');
- } else {
- console.log("mp3转换成功");
- }
- });
- }
- });
C:\nodejs\web\silk_v3_decoder\silk_v3_decoder.exe "这个是指通过silk_v3_decoder.exe文件转换,注意一定要绝对路劲,"+audioSilk+"这个是输入文件,即要转换的.silk文件, " C:\nodejs\web\audio\"这个是输出目录,+audioPcmName这个是输出文件名接下来的代码这里就不分析了。想必大家都能看的懂。