HarmonyOS 鸿蒙Next 音频采集,回调不被调用
HarmonyOS 鸿蒙Next 音频采集,回调不被调用 回调函数:
int32_t MyCaptureOnReadData(OH_AudioCapturer *capturer, void *userData, void *buffer, int32_t length) {
// 从buffer中取出length长度的录音数据
IRTC_LOG_DEBUG();
return 0;
}
// 自定义音频流事件函数
int32_t MyCaptureOnStreamEvent(OH_AudioCapturer *capturer, void *userData, OH_AudioStream_Event event) {
// 根据event表示的音频流事件信息,更新播放器状态和界面
IRTC_LOG_DEBUG();
return 0;
}
// 自定义音频中断事件函数
int32_t MyCaptureOnInterruptEvent(OH_AudioCapturer *capturer, void *userData, OH_AudioInterrupt_ForceType type, OH_AudioInterrupt_Hint hint) {
// 根据type和hint表示的音频中断信息,更新录制器状态和界面
IRTC_LOG_DEBUG();
return 0;
}
// 自定义异常回调函数
int32_t MyCaptureOnError(OH_AudioCapturer *capturer, void *userData, OH_AudioStream_Result error) {
// 根据error表示的音频异常信息,做出相应的处理
IRTC_LOG_DEBUG();
return 0;
}
开启采集代码
OH_AudioStreamBuilder *builder;
OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_CAPTURER);
// 设置音频采样率
OH_AudioStreamBuilder_SetSamplingRate(builder, 48000);
// 设置音频声道
OH_AudioStreamBuilder_SetChannelCount(builder, 2);
// 设置音频采样格式
OH_AudioStreamBuilder_SetSampleFormat(builder, AUDIOSTREAM_SAMPLE_S16LE);
// 设置音频流的编码类型
OH_AudioStreamBuilder_SetEncodingType(builder, AUDIOSTREAM_ENCODING_TYPE_RAW);
// 设置输入音频流的工作场景
OH_AudioStreamBuilder_SetCapturerInfo(builder, AUDIOSTREAM_SOURCE_TYPE_MIC);
OH_AudioCapturer_Callbacks callbacks;
// 配置回调函数
callbacks.OH_AudioCapturer_OnReadData = MyCaptureOnReadData;
callbacks.OH_AudioCapturer_OnStreamEvent = MyCaptureOnStreamEvent;
callbacks.OH_AudioCapturer_OnInterruptEvent = MyCaptureOnInterruptEvent;
callbacks.OH_AudioCapturer_OnError = MyCaptureOnError;
OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, nullptr);
OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer_);
OH_AudioCapturer_Start(audioCapturer_);
MyCaptureOnReadData函数不会被回调
更多关于HarmonyOS 鸿蒙Next 音频采集,回调不被调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
完整的demo有没有,参考下
更多关于HarmonyOS 鸿蒙Next 音频采集,回调不被调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
楼主您好,该问题需要demo代码进行分析,建议通过在线提单提交问题。
支持 - 在线提单 - 华为开发者联盟 (huawei.com)
针对“HarmonyOS 鸿蒙Next 音频采集,回调不被调用”的问题,可能的原因及解决方法如下:
-
回调未正确注册: 确认在音频采集初始化过程中,回调接口是否已按照鸿蒙API要求正确注册。检查注册回调函数的参数是否正确,包括回调函数指针及其相关上下文。
-
权限问题: 确认应用是否具有音频采集的权限。在鸿蒙系统中,音频采集通常需要申请麦克风权限,确保权限申请流程无误且用户已授权。
-
线程或任务调度问题: 回调未被调用可能由于线程或任务调度问题导致。检查音频采集是否在合适的线程或任务中执行,确保回调能够被执行到。
-
API使用错误: 确认使用的鸿蒙音频采集API是否正确,包括API的版本、参数设置等。错误的API使用可能导致回调机制失效。
-
系统或设备问题: 考虑是否存在系统或设备特定的bug,导致回调机制异常。尝试在不同设备或系统版本上复现问题,以排除设备或系统因素的影响。
如果以上方法均无法解决问题,可能是鸿蒙系统或音频采集框架内部的bug。此时,建议联系鸿蒙官方客服寻求进一步帮助。官网客服地址是:https://www.itying.com/category-93-b0.html,