FMOD 在OpenHarmony 上播放不出声音,日志里面很多如下错误

08-07 17:35:56.334 15660 15759 W A00001/Tuanjie: [FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.
08-07 17:35:56.334 15660 15759 W A00001/Tuanjie: FMODUnity.RuntimeManager:DEBUG_CALLBACK(DEBUG_FLAGS, IntPtr, Int32, IntPtr, IntPtr)
08-07 17:35:56.339 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.354 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.356 1272 1323 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.373 922 1155 I C015B5/BoosterNet: [packet_filter_bypass.cpp] ProcessUidDropReport# Uid: 20020135, hook: 0, pkts: 0, dnsDropCount: 0.
08-07 17:35:56.373 922 1155 I C015B5/BoosterNet: [packet_filter_bypass.cpp] UpdateHookDropStats# stats 20020135, hook 0, packets 0, dnsDropCount 0
08-07 17:35:56.374 922 1155 I C015B5/BoosterNet: [packet_filter_bypass.cpp] ProcessUidRecoveryReport# Uid: 20020135, hook: 0.
08-07 17:35:56.378 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.379 1287 2389 I C02562/CustAudio: CustStream::Process:380: handle 13: Process,ProcessCount:1214300
08-07 17:35:56.382 1287 2371 I C02562/smartpakit: [SmartpaAlgoControl:638]: enter, cmd = 26, 12387
08-07 17:35:56.382 1287 2371 I C02562/CustAudio: DspInterface::SendAsyncCmd:80: send msg 0xc00c4170, cmd size=48, ret=0, cnt=12275
08-07 17:35:56.391 1272 1323 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.398 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.417 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.417 15660 15759 W A00001/Tuanjie: [FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.
08-07 17:35:56.417 15660 15759 W A00001/Tuanjie: FMODUnity.RuntimeManager:DEBUG_CALLBACK(DEBUG_FLAGS, IntPtr, Int32, IntPtr, IntPtr)
08-07 17:35:56.423 1272 1323 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.441 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.456 1272 1323 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.461 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.467 922 2063 I C015B5/BoosterNet: [dns_result_callback.cpp] OnDnsResultReport# OnDnsResultReport, total=726, fail=19
08-07 17:35:56.467 922 2063 I C015B5/BoosterNet: [dns_result_callback.cpp] OnDnsResultReport# qoeApDnsInfo, dnsSucceedCount:1, dnsFailCount:0, dnsLatencyMs:8
08-07 17:35:56.467 922 2063 I C015B0/NetConnManager: [dns_result_call_back.cpp:85]GetDefaultNet result: 0, defaultNetid: 100
08-07 17:35:56.467 922 2063 I C015B0/NetConnManager: [dns_result_call_back.cpp:33]netId_: 100, totalReports_: 1, failReports_: 0, failrate : 0.000000
08-07 17:35:56.467 922 2021 I C015B0/NetConnManager: [network.cpp:495]Last netDetectionState: [2]
08-07 17:35:56.467 929 1190 E C01F04/CoreService: [FindManagerInner-(network_search_manager.cpp:1525)] NetworkSearchManager::FindManagerInner not find inner object. slotId:0
08-07 17:35:56.467 929 1190 E C01F04/CoreService: [GetPsRadioTech-(network_search_manager.cpp:421)] NetworkSearchManager::GetPsRadioTech Failed slotId:0
08-07 17:35:56.467 922 1152 I C015B5/BoosterNet: [dns_stat_chr.cpp] GetCellDnsStat# no need handle networkType
08-07 17:35:56.479 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.489 1272 1323 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.499 1287 2389 I C02510/hdf_remote_adapter: OnRemoteRequest enter
08-07 17:35:56.519 15660 15759 W A00001/Tuanjie: [FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.
08-07 17:35:56.519 15660 15759 W A00001/Tuanjie: FMODUnity.RuntimeManager:DEBUG_CALLBACK(DEBUG_FLAGS, IntPtr, Int32, IntPtr, IntPtr)
08-07 17:35:56.523 1272 1323 I C02510/hdf_remote_adapter: OnRemoteRequest enter

是否那里不对,我也看不见更多的有用信息。

你好,

感谢你提供的Log信息。

我能问一下你们团结引擎里使用的OpenHarmony集成版本号吗?

根据这些错误信息来看,有可能是因为buffer size缓冲区大小不足时导致的设备没办法放出声音,可否麻烦你试下如下方法:

  1. 在FMOD Settings里面新添加OpenHarmony平台
  2. 在DSP Buffer Settings处取消勾选Auto,并将DSP Buffer Length改成2048

你也可以在我们的平台文档里面找到更多相关信息:https://www.fmod.com/docs/2.03/api/platforms-openharmony.html#known-issues

希望这些能帮到你,如果还有问题的话可以随时联系我。

团结引擎是V1.2.2 ,鸿蒙版本是API 11
我的設置界面会出现这种问题,我们没有用FMOD Studio 编辑音频:

之前的警告错误依然存在,没有声音。
我在Unity 启动的时候调用:
_coreSystem.init(32, INITFLAGS.NORMAL, IntPtr.Zero);也没有效果。

感谢提供的截图和版本信息。

我能问一下 “没有用FMOD Studio编辑音频” 是指还没有用FMOD Studio生成过一个 FMOD工程文件,还是指已经生成了一个空的FMOD工程文件但还没有创建任何Event(事件)呢?

因为从你所提供的截图里面看,设置界面的问题是因为在Studio Project Path那一栏没有设置当前所使用的FMOD工程文件的路径,所以才无法看到更多的后续设置选项。

一般在安装FMOD Studio后会自带一个叫做Examples.fspro 的样例工程文件,可以麻烦你用这个文件来设置一下路径看看是否还有之前的警告错误?

你可以在每次重新启动FMOD Studio后的开始界面找到这个样例工程文件。

谢谢,的确需要这样设置一个FMOD Studio project 路径才能看见,然后下面设置下就能听见声音了。

请问需要 在鸿蒙端添加适配代码吗

你好,

请问你用的是什么版本的FMOD和鸿蒙插件呢?是有遇到什么错误信息么?

1.2.2团结引擎 2.0222 fmod unity 不过我用了上面的方法已经有声音了 不过我调整 dsp buffer count好像会影响到声音延迟播放 比如调整到16

是的,如果你将 DSP buffer count 数量调整到16,延迟增加是预期的结果。这是因为音频数据需要经过更多的缓冲区才能播放出来,增加了总的处理时间,DSP buffer length 也是同理。

你可以尝试减少 DSP buffer count 来减少延迟,但请注意过低的 DSP buffer count 也可能导致音频丢失或破音。

还有个问题 是我在鸿蒙平台app切到后台 声音没有停止 我要怎么做才能达到切入后台声音暂停 切回声音重新播放呢? 需要自己实现接口还是? 感谢答复

我们在 2.02.23版本的 FMOD Unity修复了这个问题,可以麻烦你升级到这个版本看看是否还有这个问题么?