Skip to content

Audio Developer Guide

wuzhuowen edited this page Feb 25, 2019 · 2 revisions

Content


概述

CedarX是一套多媒体中间件,主要负责音乐媒体的播放和录制。内部集成了流媒体处理、封装处理、编解码等复杂逻辑,对外提供简单的控制接口便于使用。目前支持如下:

  • 目前支持HTTP、HTTPS、File(TF/SD卡)、Flash、音频数据流、自定义音频源播放
  • 目前支持MP3、AMR、AAC、M4A、M3U8、WAV播放
  • 目前支持AMR、PCM录音

CedarX包含两个模块——XPlayer播放、XRecord录音,两个模块互相独立。XPlayer负责把音频媒体转化成驱动可播放的PCM格式,驱动拿到PCM数据后则转化到喇叭上,播放出最终我们听到的声音。XRecord负责把驱动录下来的PCM数据转化成指定格式数据,存储在SD/TF卡。

player_app和recorder_app模块是对XPlayer播放模块和XRecord录音模块的封装,目的是使其播放/录音接口更加简单易用。下文主要介绍如何使用这两个模块进行音频播放与音频录制。


功能描述

播放功能选择

在播放前需要先选择需要的播放功能。播放功能的描述与选择请参考Audio Player Function Select Guide

播放接口说明

音频播放需要先创建一个播放实体,创建的函数api如下

function detail
player_create(); 声明:player_base * player_create();
目的:创建一个播放器实体
参数: 无
返回值:播放器实体

其中播放器实体player_base包含了该播放器支持的操作方法,用户可利用这些操作方法进行音频播放、暂停、停止等操作,结构体定义如下:

typedef struct player_base
{
    int (*play)(struct player_base *base, const char *url);
    int (*stop)(struct player_base *base);
    int (*pause)(struct player_base *base);
    int (*resume)(struct player_base *base);
    int (*seek)(struct player_base *base, int ms);
    int (*tell)(struct player_base *base);
    int (*size)(struct player_base *base);
    int (*setvol)(struct player_base *base, int vol);
    int (*getvol)(struct player_base *base);
    int (*mute)(struct player_base *base, bool is_mute);
    int (*is_mute)(struct player_base *base);
    int (*control)(struct player_base *base, int command, void *data);
    void (*set_callback)(struct player_base *base, app_player_callback cb, void *arg); /* callback can't use player interface */
    aplayer_states (*get_status)(struct player_base *base);
} player_base;

其中各个方法的描述如下:

function detail
play; 声明:int (*play)(struct player_base *base, const char *url);
目的:播放一个url音频
参数: base:创建的播放器实体; url:待播放的url
返回值:返回状态
stop; 声明:int (*stop)(struct player_base *base);
目的:停止播放
参数: base:创建的播放器实体
返回值:返回状态
pause; 声明:int (*pause)(struct player_base *base);
目的:暂停播放
参数: base:创建的播放器实体
返回值:返回状态
resume; 声明:int (*resume)(struct player_base *base);
目的:重新启动播放
参数: base:创建的播放器实体
返回值:返回状态
seek; 声明:int (*seek)(struct player_base *base, int ms);
目的:使播放器跳转到指定位置进行播放
参数: base:创建的播放器实体; ms:待跳转的位置
返回值:返回状态
tell; 声明:int (*tell)(struct player_base *base);
目的:获取当前的播放进度
参数: base:创建的播放器实体
返回值:当前的播放进度
size; 声明:int (*size)(struct player_base *base);
目的:获取当前播放音频的总长度
参数: base:创建的播放器实体
返回值:当前播放音频的总长度
setvol; 声明:int (*setvol)(struct player_base *base, int vol);
目的:设置音量
参数:base:创建的播放器实体; vol:音量值
返回值:返回状态
getvol; 声明:int (*getvol)(struct player_base *base);
目的:获取当前音量
参数: base:创建的播放器实体
返回值:返回音量值
mute; 声明:int (*mute)(struct player_base *base, bool is_mute);
目的:静音
参数: base:创建的播放器实体; is_mute:静音使能
返回值:返回状态
is_mute; 声明:int (*is_mute)(struct player_base *base);
目的:获取静音状态
参数: base:创建的播放器实体
返回值:返回是否静音
control; 声明:int (*control)(struct player_base *base, int command, void *data);
目的:控制播放器,目前不支持
参数: base:创建的播放器实体;command:命令;data:相应的参数
返回值:返回状态
set_callback; 声明:void (*set_callback)(struct player_base *base, app_player_callback cb, void *arg);
目的:设置回调函数
参数: base:创建的播放器实体;cb:设置的回调函数;arg:回调函数的参数
返回值:无
get_status; 声明:aplayer_states (*get_status)(struct player_base *base);
目的:获取播放器状态
参数: base:创建的播放器实体
返回值:返回播放器状态

录音功能选择

在录音前需要先选择需要的录音功能。录音功能的描述与选择请参考Audio Recorder Function Select Guide

录音接口说明

录音前需要先创建一个播放实体,创建的函数api如下

function detail
recorder_create(); 声明:recorder_base *recorder_create();
目的:创建一个录音器实体
参数: 无
返回值:录音器实体

其中录音器实体recorder_base包含了该录音器支持的操作方法,用户可利用这些操作方法进行录音,结构体定义如下:

struct recorder_base
{
    int (*start)(recorder_base *base, const char *url, const rec_cfg *cfg);
    int (*stop)(recorder_base *base);
};

其中各个方法的描述如下:

function detail
start; 声明:int (*start)(recorder_base *base, const char *url, const rec_cfg *cfg);
目的:启动录音
参数: base:创建的录音器实体; url:录音数据的存放地址; cfg:录音配置信息
返回值:返回状态
stop; 声明:int (*stop)(recorder_base *base);
目的:停止录音
参数: base:创建的录音器实体
返回值:返回状态

使用说明

播放使用说明

请参考evb_audio工程或example/player工程。

录音使用说明

请参考example/record工程

Clone this wiki locally