RKMEDIA--AENC/ADEC使用

本节介绍rkmedia中aenc/adec模块的使用

音频编解码是通过对rkaudio的封装实现,目前支持

编码:G711A/G711U/G726/MP2

解码:G711A/G711U/G726

因为版权等问题,已经不支持aac和mp3格式

编码初始化:

  AENC_CHN_ATTR_S aenc_attr;
  aenc_attr.enCodecType = RK_CODEC_TYPE_MP2;
  aenc_attr.u32Bitrate = 64000;
  aenc_attr.u32Quality = 1;
  aenc_attr.stAencMP3.u32Channels = 2;
  aenc_attr.stAencMP3.u32SampleRate = 16000;
  ret = RK_MPI_AENC_CreateChn(mpp_chn_aenc.s32ChnId, &aenc_attr);
  if (ret) {
    printf("Create AENC[0] failed! ret=%d\n", ret);
    return -1;
  }

解码初始化:

  ADEC_CHN_ATTR_S stAdecAttr = {0};
  stAdecAttr.enCodecType = code_type;
  if (code_type == RK_CODEC_TYPE_G711A) {
    stAdecAttr.stAdecG711A.u32Channels = u32ChnCnt;
    stAdecAttr.stAdecG711A.u32SampleRate = u32SampleRate;
  } else if (code_type == RK_CODEC_TYPE_G711U) {
    stAdecAttr.stAdecG711U.u32Channels = u32ChnCnt;
    stAdecAttr.stAdecG711U.u32SampleRate = u32SampleRate;
  }

  ret = RK_MPI_ADEC_CreateChn(0, &stAdecAttr);
  if (ret) {
    printf("ERROR: Create ADEC[0] failed! ret=%d\n", ret);
    return -1;
  }

只有g711a/u需要配置u32Channels、u32SampleRate参数,其他只需配置enCodecType参数即可。

编解码g726时注意只能配置成8khz单声道。

rkmedia提供编解码demo:rkmedia_ai_aenc_test 、rkmedia_adec_ao_test

执行时一般只要配置-r -c -o -t -l 选项即可,-f -d选项保持默认即可。

编码g726:rkmedia_ai_aenc_test -r 8000 -c 1 -t 4 -o aenc.g726

解码g726:rkmedia_adec_ao_test -i aenc.g726 -r 8000 -c 1 -t 4

提供ffmpeg电脑端解码命令,用于测试验证编码数据。

1、解码播放g726:ffplay -f g726 -ar 8000 -ac 1 -code_size 2 -i aenc.g726  (code_size 范围2-5对应16kbps,24kbps,32kbps,40kbps)
2、解码播放g711a:ffplay -f alaw -ar 16000 -ac 2 -i aenc.g711a
3、解码播放g711u:ffplay -f mulaw -ar 16000 -ac 2 -i aenc.g711u
4、播放pcm数据:ffplay -ar 44100 -ac 1 -f s16le -i test.pcm

-ar 表示采样率
-ac 表示音频通道数
-i 表示输入文件
-ab bitrate 设置音频码率
-f 表示格式

如有其他问题,可以在评论区一起探讨。

文章汇总:RKMEDIA使用简介_未_定的博客-CSDN博客

你可能感兴趣的:(RK-rkmedia,linux,rkmedia,rockchip,rv1126,rv1109)