HarmonyOS鸿蒙Next中OH_Audio录音不成功,播放成功

HarmonyOS鸿蒙Next中OH_Audio录音不成功,播放成功 我们当前需要采集和播放8k 16位单声道的声音,根据文档播放成功了,但录音不成功。

根据文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/using-ohaudio-for-recording-0000001820999941

OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_CAPTURER);
OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);

// 设置音频采样率
OH_AudioStreamBuilder_SetSamplingRate(builder, 8000);
// 设置音频声道
OH_AudioStreamBuilder_SetChannelCount(builder, 1);
// 设置音频采样格式
OH_AudioStreamBuilder_SetSampleFormat(builder, AUDIOSTREAM_SAMPLE_S16LE);
// 设置音频流的编码类型
OH_AudioStreamBuilder_SetEncodingType(builder, AUDIOSTREAM_ENCODING_TYPE_RAW);
// 设置输入音频流的工作场景
OH_AudioStreamBuilder_SetCapturerInfo(builder, AUDIOSTREAM_SOURCE_TYPE_MIC);

// 配置回调函数
callbacks.OH_AudioCapturer_OnReadData = MyOnRecordReadData;
callbacks.OH_AudioCapturer_OnStreamEvent = MyOnRecordStreamEvent;
callbacks.OH_AudioCapturer_OnInterruptEvent = MyOnRecordInterruptEvent;
callbacks.OH_AudioCapturer_OnError = MyOnRecordError;

// 设置音频输入流的回调
OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, this);

没有走到MyOnRecordReadData方法内。 日志如附件文件2

如果把 OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer); 放在 OH_AudioCapturer_Start(audioCapturer); 之前,日志如文件3:

[nodict][fast_audio_stream.cpp] [SetAudioStreamInfo]FastAudioStreamInfo, Sampling rate: 8000, channels: 1, format: 1, stream type: 1
[nodict][fast_audio_stream.cpp] [SetAudioStreamInfo]Stream is not supported.

这意思 是不支持8k 16位单声道吗?


更多关于HarmonyOS鸿蒙Next中OH_Audio录音不成功,播放成功的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中OH_Audio录音不成功,播放成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


报错日志中:SetCapturerSource is not supported,可能是没有获取麦克风权限导致的。

可以参考录音播放的demo: https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Native/Audio

回到顶部