1、https://sourceforge.net/projects/opencore-amr/files/

    a、下载opencore-amr-0.1.3、vo-amrwbenc-0.1.3,通过查看代码例子,发现前者是AMR-NB的编解码与AMR-WB的解码,后者是AMR—WB的编码;

    b、由于本人是需要解析wav数据后,编码成AMR-WB,故用后者进行测试

    

javaamr和awb 转wav_#include

2、https://www.msys2.org/

    a、下载msys2,安装完msys2,根据官网pacman -S --needed base-devel mingw-w64-x86_64-toolchain命令安装mingw64环境,注意安装完mingw64,需要把路径配置到系统环境变量的path;

    b、打开开始菜单msys2里面的msys2 MinGW x64,输入gcc -v,看看上述安装是否成功

javaamr和awb 转wav_音频_02


3、mingw64编译vo-amrwbenc-0.1.3,(查询资料说是不能用msvc编译,看了一下configure文件,貌似里面也有msvc的一些说明,有时间在分析)    a、打开msys2 MinGW x64终端,进入vo-amrwbenc-0.1.3代码路径;

    b、输入./configure检查编译环境,完后输入make执行脚本编译,编译完成后会在vo-amrwbenc-0.1.3\.libs目录下生成libvo-amrwbenc-0.dll与libvo-amrwbenc-0.dll.def

    注意:libvo-amrwbenc-0.a是linux下面的静态库不能用于windows

    

javaamr和awb 转wav_#include_03

javaamr和awb 转wav_#include_04

javaamr和awb 转wav_采样率_05


4、转换libvo-amrwbenc-0.dll.def为libvo-amrwbenc-0.dll.lib

    a、在msys2 MinGW x64终端键入C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin,cmd终端也可,我这里是vs2015的安装目录;

   b、 在终端输入./lib.exe /machine:x64 /def:C:/Users/Administrator/Downloads/vo-amrwbenc-0.1.3/vo-amrwbenc-0.1.3/.libs/libvo-amrwbenc-0.dll.def /out:C:/Users/Administrator/Downloads/vo-amrwbenc-0.1.3/vo-amrwbenc-0.1.3/.libs/libvo-amrwbenc-0.dll.lib

    意思就说把def转换为64位的lib,至此lib与dll拿到手

    

javaamr和awb 转wav_linux_06

javaamr和awb 转wav_采样率_07

5、demo测试
    a、vs2015新建console程序,修改项目属性-->c++-->all Options-->precompiled header为Not Using Precompiled Headers,去掉stdafx.h、stdafx.cpp等乱七八糟的文件,只留下ConsoleApplication1.cpp改名字为ConsoleApplication1.c,此项目不处理也成;
   b、 拷贝vo-amrwbenc-0.1.3目录下面amrwb-enc.c里面的测试代码,覆盖console程序的ConsoleApplication1.c内容,修改以下内容:

    1)、去掉#include <unistd.h> 这句话引用了linux文件

    2)、修改#include <enc_if.h>为#include "enc_if.h"
    3)、注释掉引用getopt的while循环,getopt是linux函数
    4)、main函数里面添加int optind = 1;
    5)、右键项目属性-->调试-->命令参数里面添加一个wav文件名与amr文件名

    6)、别忘记把libvo-amrwbenc-0.dll.lib与libvo-amrwbenc-0.dll拷贝到项目里面

   7)、拷贝libvo-amrwbenc头文件到console项目里面,具体见下图

   8)、_CRT_SECURE_NO_WARNINGS添加到属性-->c++-->All Options-->Preprocessor Definitions中

    注意:amr是16000采样率,1声道的文件格式,所以你的wav最好也转换为这种格式,比如下载个Cool Edit Pro转换一下wav的采样率与声道数

    

javaamr和awb 转wav_采样率_08

javaamr和awb 转wav_#include_09

6、编译完成,对比wav声音与amr-wb声音、时长都是一样的,测试demo附上

  百度网盘地址:百度网盘 请输入提取码  

                          提取码:gpu5