# 团结引擎 OpenHarmony getRecordNumDriver返回0 无法录音

**URL:** https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683
**Category:** 中文支持
**Tags:** openharmony
**Created:** [March 11, 2025, 11:01am UTC](https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683 "2025-03-11T11:01:14Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![xiangchunsong520](https://avatars.discourse-cdn.com/v4/letter/x/b5ac83/32.png) [@xiangchunsong520](https://qa.fmod.com/u/xiangchunsong520)
#### Post date: [March 11, 2025, 11:01am UTC](https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683/1 "2025-03-11T11:01:14Z")

</div>

在团结引擎中调用以下代码：

```auto
FMOD.System system;
FMOD.RESULT result = FMOD.Factory.System_Create(out system);
ERRCHECK(result);

IntPtr extraDriverData = new IntPtr();
result = system.init(100, FMOD.INITFLAGS.NORMAL, extraDriverData);
ERRCHECK(result);
        
int numDrivers, numConnected;
result = system.getRecordNumDrivers(out numDrivers, out numConnected);
ERRCHECK(result);
Debug.Log("numDrivers : " + numDrivers);
Debug.Log("numConnected : " + numConnected);
if (numDrivers == 0)
{
    Debug.LogError("No recording devices found/plugged in! Aborting.");
    return;
}
        
result = system.getRecordDriverInfo(0, out string name, 512, out guid, out Guid nativeRate, out FMOD.SPEAKERMODE speakermode, out int nativeChannels, out FMOD.DRIVER_STATE state);
ERRCHECK(result);
Debug.Log("nativeRate : " + nativeRate);

FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();
exinfo.cbsize = Marshal.SizeOf(exinfo);
exinfo.numchannels = nativeChannels;
exinfo.format = FMOD.SOUND_FORMAT.PCM16;
exinfo.defaultfrequency = nativeRate;
exinfo.length = (uint)(nativeRate * sizeof(short) * nativeChannels);
byte[] data = null;
result = system.createSound(data, FMOD.MODE.LOOP_NORMAL | FMOD.MODE.OPENUSER, ref exinfo, out sound);
ERRCHECK(result);

result = system.recordStart(0, sound, true);
ERRCHECK(result);

```

getRecordNumDrivers函数始终返回0，导致无法录音。

若不判断设备数量：

```auto
……
// if (numDrivers == 0)
// {
// Debug.LogError("No recording devices found/plugged in! Aborting.");
// return;
// }
        
int nativeRate = 24000;
int nativeChannels = 1;

FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();
exinfo.cbsize = Marshal.SizeOf(exinfo);
exinfo.numchannels = nativeChannels;
exinfo.format = FMOD.SOUND_FORMAT.PCM16;
exinfo.defaultfrequency = nativeRate;
exinfo.length = (uint)(nativeRate * sizeof(short) * nativeChannels);
byte[] data = null;
result = system.createSound(data, FMOD.MODE.LOOP_NORMAL | FMOD.MODE.OPENUSER, ref exinfo, out sound);
ERRCHECK(result);

result = system.recordStart(0, sound, true);
ERRCHECK(result);

```

则会在recordStart时报FMOD.RESULT.ERR\_INVALID\_POSITION错误  
同样的代码在PC，Android，IOS上都能正常录音

---

<div class="post-metadata">

### Author: ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)
#### Post date: [March 13, 2025, 5:31am UTC](https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683/2 "2025-03-13T05:31:18Z")

</div>

你好，非常感谢你分享的代码和信息！

可以请你提供一下以下信息吗：

- 团结引擎版本号
- FMOD OpenHarmony插件的版本号

还有就是可否麻烦你在 FMOD Settings里进行如下操作，并将团结引擎控制台里的完整日志信息分享给我们进行调查：

- 设置日志级别：​将 `Logging Level` 设置为 `Log`​
- 启用 API 错误日志：​勾选 `Enable API Error Logging`  
 ![enableLogImage](https://canada1.discourse-cdn.com/flex036/uploads/fmod/original/2X/8/88a8e3ce70154b374eda69f1198482bbe65d39ab.png)

---

<div class="post-metadata">

### Author: ![xiangchunsong520](https://avatars.discourse-cdn.com/v4/letter/x/b5ac83/32.png) [@xiangchunsong520](https://qa.fmod.com/u/xiangchunsong520)
#### Post date: [March 13, 2025, 12:57pm UTC](https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683/3 "2025-03-13T12:57:39Z")

</div>

你好，谢谢你的回复，以下是版本信息：

- 团结引擎版本号：1.4.4

- FMOD OpenHarmony插件版本号：2.02.25

以下是运行时的完整log：

```auto
[FMOD] FMOD_OS_Init : Cannot access Resource Manager, rawfile support unavailable, ensure fmod.init has been called with UIAbility

[FMOD] System::create : Header version = 2.02.25. Current version = 2.02.25.

[FMOD] SystemI::setOutputInternal : Setting output to 'FMOD OpenHarmony Audio Output'

[FMOD] SystemI::setAdvancedSettings : mAdvancedSettings.cbSize = 104

[FMOD] SystemI::setAdvancedSettings : mAdvancedSettings.maxFADPCMCodecs = 32

[FMOD] SystemI::setAdvancedSettings : mAdvancedSettings.defaultDecodeBufferSize = 400

[FMOD] SystemI::setAdvancedSettings : mAdvancedSettings.distanceFilterCenterFreq = 1500.000000

[FMOD] SystemI::setAdvancedSettings : mAdvancedSettings.DSPBufferPoolSize = 8

[FMOD] SystemI::setAdvancedSettings : mAdvancedSettings.resamplerMethod = 2

[FMOD] SystemI::setAdvancedSettings : mAdvancedSettings.randomSeed = 1252847472

[FMOD] SystemI::setAdvancedSettings : mAdvancedSettings.maxConvolutionThreads = 3

[FMOD] Manager::init : maxchannels = 128 studioflags = 00000008 flags 00000000 extradriverdata 0.

[FMOD] SystemI::init : Initialize version=20225 (147536), maxchannels=128, flags=0x00020000

[FMOD] OHAudio_Init : Output buffer size: 1114 samples, DSP buffer: 2048 * 4.

[FMOD] Thread::initThread : Init FMOD stream thread. Affinity: 0x4000000000000003, Priority: 0xFFFF7FFB, Stack Size: 98304, Semaphore: No, Sleep Time: 10, Looping: Yes.

[FMOD] SystemI::DSPCodecPoolRegister : register codec pool for pool type 7

[FMOD] Thread::initThread : Init FMOD mixer thread. Affinity: 0x4000000000000001, Priority: 0xFFFF7FFA, Stack Size: 81920, Semaphore: Yes, Sleep Time: 0, Looping: Yes.

[FMOD] AsyncManager::init : manager 0x5ccba89808 isAsync 1 updatePeriod 0.02

[FMOD] Thread::initThread : Init FMOD Studio update thread. Affinity: 0x4000000000000002, Priority: 0xFFFF7FFD, Stack Size: 98304, Semaphore: No, Sleep Time: 1, Looping: No.

[FMOD] AsyncManager::init : done

[FMOD] PlaybackSystem::init : 

[FMOD] Thread::initThread : Init FMOD Studio sample load thread. Affinity: 0x4000000000000003, Priority: 0xFFFF7FFD, Stack Size: 98304, Semaphore: No, Sleep Time: 1, Looping: No.

[FMOD] OutputRingBuffer::read : Buffer starvation detected, requested 35664 bytes, 29872 / 65536 bytes available.

[FMOD] PlaybackSystem::init : done

[FMOD] Thread::initThread : Init FMOD Studio bank load thread. Affinity: 0x4000000000000003, Priority: 0xFFFF7FFD, Stack Size: 98304, Semaphore: No, Sleep Time: 1, Looping: No.

[FMOD] Manager::init : done.

[FMOD] FOpenFile::open : fopen failed to open 'Data/StreamingAssets/Master.bank', errno = 2

[FMOD] RuntimeBankModel::openFile : Failed to open file 'Data/StreamingAssets/Master.bank'

[FMOD] System::loadBankFile(Data/StreamingAssets/Master.bank, 0, 0x5caad0bfb0) returned ERR_FILE_NOTFOUND for STUDIO_SYSTEM (0x1FFF1F).
BankLoadException: [FMOD] Could not load bank 'Data/StreamingAssets/Master.bank' : ERR_FILE_NOTFOUND : File not found.
system output: OHAUDIO
system drivers #: 2
system driver info: rate 48000, mode STEREO, channels 2
system driver info: rate 48000, mode STEREO, channels 2
fmod setting : rate 48000, mode STEREO, channels 2
fmod setting : DSP buffer size 2048, num 4
latency by DSP: 170
[FMOD] SystemI::init : Initialize version=20225 (147536), maxchannels=100, flags=0x00000000

[FMOD] SystemI::setOutputInternal : Setting output to 'FMOD OpenHarmony Audio Output'

[FMOD] OHAudio_Init : Output buffer size: 1114 samples, DSP buffer: 1024 * 4.

[FMOD] Thread::initThread : Init FMOD stream thread. Affinity: 0x4000000000000003, Priority: 0xFFFF7FFB, Stack Size: 98304, Semaphore: No, Sleep Time: 10, Looping: Yes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

MicRecorder numDrivers : 0
MicRecorder numConnected : 0
No recording devices found/plugged in! Aborting.
[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.

```

---

<div class="post-metadata">

### Author: ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)
#### Post date: [March 18, 2025, 5:15am UTC](https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683/4 "2025-03-18T05:15:19Z")

</div>

谢谢你提供的版本号和完整Log信息！

我这边已经成功复现了你提到的 `getRecordNumDriver` 在OpenHarmony平台上函数始终返回0的问题，我已将此问题提交给开发团队进行深入调查。​一旦有最新进展，我会第一时间通知你。​非常感谢你让我们注意到这个问题。

此外，我们注意到日志中存在以下信息：

> [@xiangchunsong520](#):
>
> ```auto
> [FMOD] FMOD_OS_Init : Cannot access Resource Manager, rawfile support unavailable, ensure fmod.init has been called with UIAbility
> 
> ```

这表明在 OpenHarmony 平台上，FMOD 可能未正确初始化，可能导致无法播放声音。​我们在目前最新的 2.02.27 版本中已修复了此问题。​建议你可以尝试升级到此版本以解决该问题。

> [@xiangchunsong520](#):
>
> `[FMOD] OutputRingBuffer::read : Insufficient buffer size detected, requested 35664 bytes, buffer size is 32768 bytes.`

这个信息表示缓冲区大小不足，可能导致无法听到声音。​遇到问题的话你可以参考这个帖子里的解决方法：[FMOD 在OpenHarmony 上播放不出声音，日志里面很多如下错误 - #2 by li\_fmod](https://qa.fmod.com/t/fmod-openharmony/21976/2)

---

<div class="post-metadata">

### Author: ![xiangchunsong520](https://avatars.discourse-cdn.com/v4/letter/x/b5ac83/32.png) [@xiangchunsong520](https://qa.fmod.com/u/xiangchunsong520)
#### Post date: [March 19, 2025, 2:00am UTC](https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683/5 "2025-03-19T02:00:50Z")

</div>

> [@li\_fmod](#):
>
> 我这边已经成功复现了你提到的 `getRecordNumDriver` 在OpenHarmony平台上函数始终返回0的问题，我已将此问题提交给开发团队进行深入调查。​一旦有最新进展，我会第一时间通知你。​非常感谢你让我们注意到这个问题。

非常感谢你们对这个问题的重视！ 👍

---

<div class="post-metadata">

### Author: ![xiangchunsong520](https://avatars.discourse-cdn.com/v4/letter/x/b5ac83/32.png) [@xiangchunsong520](https://qa.fmod.com/u/xiangchunsong520)
#### Post date: [May 6, 2025, 1:58am UTC](https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683/6 "2025-05-06T01:58:41Z")

</div>

你好， getRecordNumDriver 在OpenHarmony平台上函数始终返回0的问题有进展了吗

---

<div class="post-metadata">

### Author: ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)
#### Post date: [May 6, 2025, 6:04am UTC](https://qa.fmod.com/t/openharmony-getrecordnumdriver-0/22683/7 "2025-05-06T06:04:05Z")

</div>

你好，感谢你的跟进！

我这边查了一下，发现这个问题还没被正式排进我们近期的开发日程，可能还需要一段时间才能处理。后续一旦有更新，我会第一时间通知你。

非常感谢你的耐心和支持！我会再跟开发组反馈一下。
