dev about cedarx - XradioTech/xradiotech-wiki GitHub Wiki
中文 | EN
主页 | 产品 | 下载 | 开发指南 | FAQ | 联系我们 | 购买样品
开发指南 > CedarX
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工程