CRI ADX  Last Updated: 2024-07-17 10:48 p
关于CriAtomExPlayer
CriAtomExPlayer是用于播放音频数据和Cue的模块。
提供用于播放/停止音频数据、更改音量等发声控制接口。
CriAtomExPlayer模块提供名为"AtomExPlayer"的播放控制对象。
AtomExPlayer是关注从数据输入到音频输出的Player对象。
通过使用AtomExPlayer,用户不需要执行复杂的操作即可播放音频数据。
使用AtomPlayer播放音频数据的步骤如下。
  1. 创建AtomExPlayer。
  2. 为AtomExPlayer设置音频数据。
  3. 开始播放音频。

创建AtomExPlayer

要播放音频,必须先创建AtomExPlayer。
使用::criAtomExPlayer_Create 函数创建AtomExPlayer。
创建AtomExPlayer时,必须指定用于确定Player规格的配置构件和工作内存。 关于Player的具体创建方法,请参照教程
[备注]
可以省略创建AtomExPlayer时的配置构件。
(省略时按照预设设置创建AtomExPlayer。)

如果成功创建Player,则返回用于Player的句柄( CriAtomExPlayerHn )作为函数的返回值。
设置数据和开始播放等后续操作均在此句柄上执行。

设置音频数据

要播放音频数据,首先必须指示Player"播放哪个音频数据"
AtomExPlayer支持与音频数据的输入格式相对应的播放方法。
为AtomExPlayer设置音频数据时,必须使用与播放方式相对应的数据设置函数。

播放方式和数据设置函数
播放方式 说明 数据设置函数
播放Cue 播放ACB文件中的Cue criAtomExPlayer_SetCueName
criAtomExPlayer_SetCueId
AWB播放 播放打包为AWB文件的音频数据 criAtomExPlayer_SetWaveId
内存播放 播放加载到内存中的音频数据 criAtomExPlayer_SetData
文件播放 播放音频文件 criAtomExPlayer_SetFile



例如,如果想要播放当前目录中的sample.adx,请使用如下的数据设置方法。
/* 将sample.adx设置到AtomPlayer中 */
criAtomExPlayer_SetFile(player, NULL, "sample.adx");
void criAtomExPlayer_SetFile(CriAtomExPlayerHn player, CriFsBinderHn binder, const CriChar8 *path)
Set the sound data to play (specifying a file name)

开始播放

设置音频数据后,通过执行::criAtomExPlayer_Start 函数来播放设置的音频数据。

如何监控播放状态

通过以上操作可以播放音频数据,但根据情况,有时可能需要检查"播放中的声音状态",例如是否开始发声?播放是否已完成?
AtomExPlayer提供"状态监视"机制来应对这些情况。
对AtomExPlayer执行::criAtomExPlayer_GetStatus 函数时,AtomExPlayer将返回名为"状态"的值来表示Player状态。
为状态定义了以下值,可以从该值了解Player的状态。

状态和Player状态的关系

状态 Player状态
CRIATOMEXPLAYER_STATUS_STOP Player停止。
不会播放音频数据。
CRIATOMEXPLAYER_STATUS_PREP Player正在准备播放。
正在读取音频数据,但还没有开始发声。
CRIATOMEXPLAYER_STATUS_PLAYING Player正在播放音频。
一边读取音频数据一边发声。
CRIATOMEXPLAYER_STATUS_PLAYEND Player完成播放。
设置的音频数据播放到最后并结束。
CRIATOMEXPLAYER_STATUS_ERROR Player播放音频失败。
发生了读取错误等问题。



AtomExPlayer的状态通常随着音频播放按照以下顺序转换。
  1. 创建AtomExPlayer时,Player的状态为STOP。
  2. 通过执行::criAtomExPlayer_Start 函数,Player的状态转换为PREP。
  3. 在读取播放所需的音频数据时,Player的状态转换为PLAYING,开始发声。
  4. 播放完所有设置的数据时,发声结束,Player的状态转换为PLAYEND。
状态转换图如下。
[备注]
如果在播放期间再次执行::criAtomExPlayer_Start 函数,则Player的状态将返回PREP。
如果在播放期间发生某个错误(例如数据读取失败),则Player的状态转换为ERROR。
此外,如果使用::criAtomExPlayer_Stop 函数停止播放,则Player的状态转换为STOP。
对PLAYEND状态和ERROR状态的Player执行::criAtomExPlayer_Start 函数时,状态也会转换为PREP。

丢弃Player

可以使用::criAtomExPlayer_Destroy 函数丢弃不再需要的AtomExPlayer。
通过丢弃AtomExPlayer,可以将创建Player时设置的工作内存用于其他用途或释放内存。
[备注]
如果一个AtomExPlayer依次播放多个声音,则不需要每次发声开始时丢弃。
可以使用::criAtomExPlayer_SetData 函数等为停止的AtomExPlayer(STOP状态、PLAYEND状态、ERROR状态的Player)设置其他音频数据,使用:criAtomExPlayer_Start 函数播放。
(如果执行::criAtomExPlayer_Start 函数但不重新设置数据,则从头开始播放上次播放的音频。)

[注意]
无法对正在播放的AtomExPlayer(PREP状态或PLAYING状态的Player)执行::criAtomExPlayer_SetFile函数。
(可以在播放期间设置Cue ID、AWB内容ID、内存数据。)

关于其他功能

AtomPlayer除简单播放音频外,还具有更改正在播放的声音的音量、连接多个音频数据播放等功能。