美文网首页iOS开发
iOS 获取麦克风音量

iOS 获取麦克风音量

作者: yitez | 来源:发表于2019-05-15 11:08 被阅读228次

项目需求要获取麦克风音量,然后界面做出反馈。
注意:录音之前需要先调用以下方法,因为播放和录制的模式是不同的

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    [[AVAudioSession sharedInstance] setActive:YES error:nil];

1、使用AVAudioQueue的方案:

使用AudioQueueRef相关的方法来录制声音,录音的步骤在这里:使用AudioQueue进行录音

1、启用metering:设置其kAudioQueueProperty_EnableLevelMetering属性为true。

- (BOOL)enableUpdateLevelMetering
{
    UInt32 val = 1;
    OSStatus status = AudioQueueSetProperty(_audioQueue, kAudioQueueProperty_EnableLevelMetering, &val, sizeof(UInt32));
    if( status == kAudioSessionNoError )
    {
        return YES;
    }
    
    return NO;
}

2、调用方法获取音量(建议使用定时器实时获取)

-(float)getCurrentPower {
  UInt32 dataSize = sizeof(AudioQueueLevelMeterState) * recordFormat.mChannelsPerFrame;
  AudioQueueLevelMeterState *levels = (AudioQueueLevelMeterState*)malloc(dataSize);

  OSStatus rc = AudioQueueGetProperty(audioQueue, kAudioQueueProperty_CurrentLevelMeter, levels, &dataSize);
  if (rc) {
    NSLog(@"NoiseLeveMeter>>takeSample - AudioQueueGetProperty(CurrentLevelMeter) returned %@", rc);
  }

  float channelAvg = 0;
  for (int i = 0; i < recordFormat.mChannelsPerFrame; i++) {
    channelAvg += levels[i].mPeakPower;
  }
  free(levels);

  // This works because in this particular case one channel always has an mAveragePower of 0.
  return channelAvg;
}

2、使用AVAudioRecorder的方案:

使用AVAudioRecorder来录音很简单,这里就不说了。
1、启用metering

recorder.meteringEnabled = YES;

2、获取音量

 float   decibels    = [recorder averagePowerForChannel:0];

相关文章

  • iOS 获取麦克风音量

    项目需求要获取麦克风音量,然后界面做出反馈。注意:录音之前需要先调用以下方法,因为播放和录制的模式是不同的 1、使...

  • iOS 系统媒体音量

    iOS 媒体音量获取以及控制 获取系统音量 调整系统音量 iOS7 之后,可以使用系统提供的MPVolumeVie...

  • 20170313 iOS 权限相关 : 判断与 跳转 设置

    iOS 常见错误(持续更新) iOS权限获取 摄像头与麦克风 iOS各种权限判断(相机,相册,定位,录音) ios...

  • ios麦克风音量实时检测

    一、全局变量声明 二、功能部分1、UI部分 2、功能部分

  • ios麦克风音量实时检测

    一、引入系统库 二、全局变量声明 三、功能部分 1、UI部分 2、功能部分 参考:https://blog.csd...

  • iOS个人信息获取说明

    iOS个人信息获取说明 需要授权获取的列表有iOS 10以后,苹果增强了对用户隐私的保护,访问照相机、相册、麦克风...

  • iOS系统音量&屏幕亮度调节

    一,系统音量获取 系统框架 获取系统音量slider 监听系统物理按键调节音量 获取系统当前音量 二,屏幕亮度 很...

  • FFmpeg-iOS获取摄像头麦克风

    今天咱来讲讲在iOS 平台上利用ffmpeg获取到摄像头和麦克风,代码很少,后面再加上iOS 自带的获取摄像头的例...

  • mpeg学习博客(一定好好学)

    FFmpeg-iOS获取摄像头麦克风http://allluckly.cn/ffmpeg/ffmpeg4 http...

  • RN-权限整理(iOS)

    获取系统权限1、相机2、相册3、位置4、麦克风5、通知状态 iOS工具类:PermissionsManager.h...

网友评论

    本文标题:iOS 获取麦克风音量

    本文链接:https://www.haomeiwen.com/subject/mqauaqtx.html