CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
调整声音解码缓冲时间

如果你使用了CRI Atom文件库的默认设置,部分安卓设备可能生成噪音(断续的声音) 或者不会播放音频。

该问题可以如以下来调整声音解码缓冲时间,以得到解决。

解决方法: 调整声音解码缓冲时间

在部分设备中,默认的声音解码缓冲时间不够长, 导致出现噪音或无声的问题。

如需避免此问题,你可以调整以下 CriWare.CriWareInitializer 组件设置 来延长声音解码缓冲时间,直到解决该问题为止。

以下图片显示了Unity Editor的Inspector中的 CriWare.CriWareInitializer

adx2u_initializer_bufferingtime.png

被红色方框包围的部分从上到下显示了

  • (a) Buffering Time(缓冲时间): 输出缓冲时间(毫秒)
  • (b) Start Buffering Time(起始缓冲时间): 回放起始缓冲时间(毫秒)

以下数值为默认设置。

  • (a) Buffering Time: 133 (毫秒)
  • (b) Start Buffering Time: 100 (毫秒)

在(a)中,请调整声音解码缓冲时间的大小。 在(b)中,请指定开始回放前累积的音频数据的数值(毫秒)。

所延长的缓冲时间将根据设备型号以及应用程序的负载状态而定。 你必须为每个设备都设定一个合适的数值。

请以同样的数值反复增加 (a) 和 (b) 直到没有噪音并且声音能够正常播放为止。

接着,如果你使用了 安卓的低延迟声音回放 , 音频回放将以(b)数值延迟。 请仅减少(b)数值以免造成声音断断续续的情况。

范例设置

CRI已在以下设备中确认噪音(断续的声音)。

  • ARROWS X LTE F-05D (OS 4.0.3)
  • ARROWS X F-10D (OS 4.0.3)

举F-05D为例,我们已证实以下在CRI SDK的设置将不会生成噪音。

  • (a) Buffering Time: 200 (毫秒)
  • (b) Start Buffering Time: 150 (毫秒)

我们同样在以下设备中确认无回放声音。

  • REGZA Tablet AT700/35D AT200 (OS 4.0.3)

我们已确认AT200的ADX音频将在以下设置下 进行播放。

  • (a) Buffering Time: 220 (毫秒)
  • (b) Start Buffering Time: 220 (毫秒)

总的来说,请使用默认数值。 只有在一个特定设备无法播放声音或声音断断续续的情况下,在应用程序中选择设备模型 并且调整缓冲时间。

补充

# 使用代码来识别设备模型的范例代码

如需使用代码来识别一个模型,举ARROWS X LTE F-05D为例, 你可以确认android.os.Build中的MODEL是否为"F-05D"。 以下显示了测试于Unity的范例代码。
{
AndroidJavaClass clsUnity;
string MODEL_ID;
clsUnity = new AndroidJavaClass("android.os.Build");
MODEL_ID = clsUnity.GetStatic<string>("MODEL");
/* 将字符串与安卓设备名(F-05D)比较; */
int ret = MODEL_ID.CompareTo("F-05D");
if (ret == 0) {
/* F-05D的设定 */
initializer.atomConfig.androidBufferingTime = 200;
initializer.atomConfig.androidStartBufferingTime = 150;
}
}

# 减少回放开始的延迟

本部分描述了利用增加声音解码缓冲时间的长度,以减少噪音。 与此同时,你可以将默认数值在不会生成噪音的范围内减少, 以减少回放开始的延迟。 在这之前,请在一台真正的设备上确认是否能顺利回放。