微信高清音频处理

记一次微信音频处理

项目背景:微信jssdk,功能很丰富。针对语音这块,项目中使用了上传语音和语音识别。因为项目具体需求,需要将微信的语音在其他端内进行语音播放。所以,服务端需要根据media_id下载语音(格式为speex),然后转码成wav。为了节约成本,将wav转成mp3。整个处理流程如下:

1.h5上传

上传文件,获取media_id

2.服务端根据media_id,下载文件到服务器
3.转码speex至wav

第三方库:https://github.com/ppninja/wechat-speex-declib

Install speex

  1. download speex source code, https://downloads.xiph.org/releases/speex/speex-1.2.0.tar.gz

  2. tar xzvf speex-1.2.0.tar.gz

  3. cd speex-1.2.0 && ./configure && make && make install

Install decoder

  1. git clone https://github.com/gamelife1314/wechat-speex-declib.git

  2. cd wechat-speex-declib && make && cp ./bin/speex_decode /usr/local/bin/speex2wav

  3. speex2wav test.speex test.wav

4.将wav文件转成mp3,但之前需要安装ffmpeg,同时安装mp3编码库:libmp3lame。

如果直接使用mp2转码,会出现本地可以正常播放,但在云端无法自动播放。比如:阿里云的oss,直接转,是无法直接播放的。
安装可以参考我的这篇文章:ffmpeg+libmp3lame库源码安装教程

5.使用ffmpeg,转wav至mp3
ffmpeg -i tt.wav -ac 1 -ab 128 -ar 8000 -acodec  libmp3lame tt3.mp3
说明:ab:比特率,ar:采样率,-acodec 编码 ac:声道
6.上传到服务器,记录数据库,实现在线播放

总结:在整个过程中,有几点需要注意:1.音频是speex,如何转码?2.使用ffmpeg转mp3

你可能感兴趣的:(微信高清音频处理)