HarmonyOS 音视频之音频采集实战

往期知识点整理

背景

应用开发过程中很多场景都有音频采集需求,比如聊天功能的发送语音功能,实时语音转文本功能,实时语音通话,实时视频通话等。在Android和iOS端,系统提供了两种形式:

  • 实时音频流采集
  • 音频文件录制

系统还提供了不同形式的API,比如Android:

  • AudioRecorder Java接口
  • MediaRecorder Java接口
  • OpenSLES C++接口
  • AAudio C++接口

在 鸿蒙 化适配的过程中也有音频采集的需求,本文我们一步一步实现音频采集功能。

音频录制接口介绍

HarmonyOS 提供了TS与C++两种音频采集接口:

  • AudioCapture
  • OHAudio

分别介绍这两种语言的API。

AudioCapture

使用AudioCapturer录制音频涉及到AudioCapturer实例的创建、音频采集参数的配置、采集的开始与停止、资源的释放等,下面官方给出的状态示意图将方法和状态切换标记的很清晰:

createAudioCapture

创建capture主要涉及到参数配置:

 import { audio } from '@kit.AudioKit';
 
 let audioStreamInfo: audio.AudioStreamInfo = {
   samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, // 采样率
   channels: audio.AudioChannel.CHANNEL_2, // 通道
   sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式
   encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式
 };
 
 let audioCapturerInfo: audio.AudioCapturerInfo = {
   source: audio.SourceType.SOURCE_TYPE_MIC,
   capturerFlags: 0
 };
 
 let audioCapturerOptions: audio.AudioCapturerOptions = {
   streamInfo: audioStreamInfo,
   capturerInfo: audioCapturerInfo
 };
 
 audio.createAudioCapturer(audioCapturerOptions, (err, data) => {
   if (err) {
   } else {
     let audioCapturer = data;
   }
 });

参数包含两大块:

  • AudioStreamInfo:音频格式配置信息
    • samplingRate:采样率
    • channels:声道数
    • sampleFormat:采样格式
    • encodingType:音频编码类型,目前只支持PCM的ENCODING_TYPE_RAW配置
  • AudioCapturerInfo:采集配置信息
    • source:音源类型,包含:
      • SOURCE_TYPE_INVALID:无效的音频源
      • SOURCE_TYPE_MIC:Mic音频源
      • SOURCE_TYPE_VOICE_RECOGNITION:语音识别源
      • SOURCE_TYPE_PLAYBACK_CAPTURE:播放音频流(内录)录制音频源
      • SOURCE_TYPE_VOICE_COMMUNICATION:语音通话场景的音频源
      • SOURCE_TYPE_VOICE_MESSAGEÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值