HarmonyOS 麦克风音频数据拷贝后通过AVCodec编码处理

这里要实现,将麦克风录制的ArrayBuffer数据拷贝到底层库通过

static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVBuffer *buffer, void *userData) 

回调所提供的OH_AVBuffer *buffer中。

按照如下开源代码中的示例防写,而在下面这个例子中是从文件读取数据拷贝到buffer中:https://gitee.com/openharmony/multimedia_av_codec/blob/master/test/nativedemo/audio_demo/avcodec_audio_avbuffer_aac_encoder_demo.cpp

在拷贝从麦克风获取的ArrayBuffer时,无法得到 OH_AVBuffer中的定义, 如下代码中的buffer->buffer_->memory_ 或buffer->buffer_->flag_ ,OH_AVBuffer在定义中并未暴露其中的字段定义,这里应该添加什么引用可以获取到?

uint32_t index = signal_->inQueue_.front();
auto buffer = signal_->inBufferQueue_.front();
DEMO_CHECK_AND_BREAK_LOG(buffer != nullptr, "Fatal: GetInputBuffer fail");
if (!inputFile_->eof()) {
  inputFile_->read(reinterpret_cast<char *>(OH_AVBuffer_GetAddr(buffer)), INPUT_FRAME_BYTES);
  buffer->buffer_->memory_->SetSize(INPUT_FRAME_BYTES);
  sumReadSize += INPUT_FRAME_BYTES;
} else {
  buffer->buffer_->memory_->SetSize(1);
  buffer->buffer_->flag_ = AVCODEC_BUFFER_FLAGS_EOS;
  HandleEOS(index);
  sumReadSize += 0;
  break;
}
HarmonyOS
2024-12-25 11:45:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

请参考以下网页:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/audio-encoding-V5

参考步骤8,获取Buffer。

分享
微博
QQ
微信
回复
2024-12-25 12:31:24
相关问题
HarmonyOS 麦克风权限不弹窗
356浏览 • 1回复 待解决
鸿蒙webview调用摄像头和麦克风
2616浏览 • 0回复 待解决
HarmonyOS 不同app之间麦克风抢占问题
785浏览 • 1回复 待解决
HarmonyOS如何从麦克风录制mp3文件
1185浏览 • 1回复 待解决
HarmonyOS 数据拷贝无法读取
483浏览 • 1回复 待解决
HarmonyOS 音频编码格式转换
113浏览 • 1回复 待解决