音频demo:使用opencore-amr、vo-amrwbenc将PCM数据与AMR-WB数据进行编解码

1、README

前言

  • AMR-NB(AMR-NarrowBind):语音带宽范围:300 - 3700Hz,8KHz采样频率;
  • AMR-WB(AMR-WideBand):语音带宽范围50 - 7000Hz,16KHz采样频率。

不管NB还是WB,一帧都是20ms,一秒50帧。

a. 开源库下载地址

opencore-amr-0.1.3.tar.gz:支持amr-nb的编码与解码、amr-wb的解码,但不支持amr-wb的编码;

vo-amrwbenc-0.1.3.tar.gz:仅支持amr-wb的编码。

opencore-amr/vo-amrwbenc的下载地址:https://sourceforge.net/projects/opencore-amr/files/

b. 编译开源库
opencore-amr
#!/bin/bash

tar xzf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3/
./configure --prefix=$PWD/_install # --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc
make -j96
make install
vo-amrwbenc
#!/bin/bash

tar xzf vo-amrwbenc-0.1.3.tar.gz
cd vo-amrwbenc-0.1.3
./configure --prefix=$PWD/_install # --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc
make -j96
make install
c. demo使用
  • 编译
make
# 或者打开编译调试信息
make clean && make DEBUG=1
  • 使用
# 编码
$ ./pcm2amrwb
Usage:
         ./pcm2amrwb ./audio/test_16000_16_1.pcm out1.amr
         ./pcm2amrwb ./audio/test_16000_16_2.pcm out2.amr (need to modify PCM_CHANNELS=2)

# 解码
$ ./amrwb2pcm
Usage:
         ./amrwb2pcm ./audio/test.amr out_16000_16_1.pcm
d. 参考资料
e. demo目录架构
$ tree
.
├── audio
│   ├── test_16000_16_1.pcm
│   ├── test_16000_16_2.pcm
│   └── test.amr
├── include
│   ├── dec_if.h
│   └── enc_if.h
├── lib
│   ├── libopencore-amrwb.a
│   └── libvo-amrwbenc.a
├── main_amrwb2pcm.c
├── main_pcm2amrwb.c
├── Makefile
├── README.md
└── reference
    ├── amrwb-dec.c
    ├── amrwb-enc.c
    └── AMR编码文件解析_hanzhen7541的博客-CSDN博客.mhtml

2、主要代码片段

main_pcm2amrwb.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#include "enc_if.h"


// 编译时Makefile里控制
#ifdef ENABLE_DEBUG
    #define DEBUG(fmt, args...)     printf(fmt, ##args)
#else
    #define DEBUG(fmt, args...)
#endif


/* PCM参数 */
#define PCM_SAMPLERATE 	(16000) /* 只能编码 8 khz */
#define PCM_SAMPLEBITS 	(16) 	/* 只支持16位 */
#define PCM_CHANNELS 	(1) 	/* 不管PCM输入是单声道还是双声道,这里输出的amr都是单声道的 */

/* amr一帧数据是20ms,一秒50帧。16000,16,1 ==> 640 Bytes */
#define PCM_ONE_FRAME_SIZE  (PCM_SAMPLERATE/50 * PCM_SAMPLEBITS/8 * PCM_CHANNELS)

/*******************
      AMR参数
   mode    rate
    0      6600
    1      8850
    2     12650
    3     14250
    4     15850
    5     18250
    6     19850
    7     23050
    8     23850
 *******************/
#define AMR_ENCODE_MODE 	(8)


/* 是否使能背景噪声编码模式 */
#define DTX_DECODE_ENABLE 	1
#define DTX_DECODE_DISABLE 	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R-QWERT

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值