CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
串流

内存播放和串流播放

CRI将整个音频数据读取内存再播放的方法称为“内存播放”。
将一边一点一点读取音频数据到内存一边播放的方法称为“串流播放”。
二者的优点和缺点如下。
内存播放 串流播放
内存大小 缺点:需要大量工作内存 优点:工作内存的需要量不大
播放准备 缺点:在读取整个音频数据之前无法开始播放 优点:无需等待读取整个音频数据
发声延迟 优点:低发声延迟 缺点:收到播放请求后开始串流播放,发声延迟长
文件访问 优点:播放期间不会影响读取其他文件 缺点:读取其他文件的时间增长
很多应用程序无法提供用于预先读取大量和大容量音频数据的内存区域。
在这种情况下,必须有能够节省内存播放音频数据的串流播放功能。

串流播放的方法

只要在播放Cue时,在CRI Atom Craft上指定串流播放的音频数据,将自动播放串流。
如果设置音频文件名和AWB文件中的文件ID,则执行串流播放。(AWB文件是打包多个声音文件的文件)

应用程序在初始化时为串流设置缓冲区。串流播放的Voice可以根据需要使用此缓冲区。

adx2u_overview_dbas.png


D-BAS

串流播放需要轮流使用一定大小的缓冲区来播放音频数据。
此缓冲区称为流缓冲区
ADX使用CRI独有的D-BAS技术来有效管理流缓冲区。
D-BAS会预先以固定长度分配流缓冲区,
是一种以块为单位为每个串流播放分配流缓冲区的机制。
D-BAS具有以下优点。
  1. 可轻松估计流缓冲区的大小
  2. 可有效使用固定长度的流缓冲区
  3. 不会产生内存碎片
创建D-BAS时,请指定应用程序中的最大串流播放数量、串流播放的最大瞬时比特率。
也就是说,设想最差的串流播放状态
此时,如果还要同时串流播放视频等,请根据以上要求设置播放数量和比特率。
由于是设想串流播放的最差状态来分配流缓冲区,
因此只要应用程序端促成创建D-BAS时的设置值,就不会出现串流来不及的情况。
(如果超出了设置值,执行串流播放时将出现错误。)
此外,D-BAS根据串流播放的数量和比特率,
为每个串流播放动态分配缓冲区块。
如下图所示,当串流播放的数量少时,会使用剩余的缓冲区,
为每个串流播放分配比最低限度大小多的流缓冲区。
由于缓冲区大小增加,因此可以减少串流播放访问存储媒体的次数,
从而有效地加载其他文件。
ADX_A_46_DBAS_few_streaming.png
另一方面,如果串流播放的情况接近最差状态时,则如下图所示,
为每个串流播放分配所需最低限度的流缓冲区。
ADX_A_47_DBAS_lot_streaming.png
即使在这种情况下,每个串流播放也不会中断,也可以加载其他文件。
但是,由于频繁访问媒体,会降低其他文件的加载效率。