美文网首页iOS开发你需要知道的
音频:AVAudioSession 配置

音频:AVAudioSession 配置

作者: 丶墨墨丶 | 来源:发表于2020-05-24 01:38 被阅读0次

遇到这么个场景,项目中有些页面是来自cocos2d,其中涉及到音频播放和录制(应该对应AVAudioSessionCategoryPlayAndRecord);然后OC部分也涉及到音视频的播放。存在从cocos2d场景退出后再播放OC场景下的视频存在音频声音小,应该是处于听筒模式。

对于上面的问题一般都想到AVAudioSession(主要用来管理音频设置与硬件交互)单利设置系统使用音频的方式:

/// 在我们的音视频场景配置,指定其他声音被强制变小

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord
             withOptions:AVAudioSessionCategoryOptionDuckOthers
                   error:nil ];

/// 当我们的场景结束时,为了不影响其他场景播放声音变小;

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:NO error:nil];
[session setCategory:AVAudioSessionCategoryPlayAndRecord
             withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker
                   error:nil ];
[session setActive:YES error:nil];

一、 配置AVAudioSession接口

/* set session category */
- (BOOL)setCategory:(NSString *)category error:(NSError **)outError;
/* set session category with options */
- (BOOL)setCategory:(NSString *)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError NS_AVAILABLE_IOS(6_0);
/* set session category and mode with options */
- (BOOL)setCategory:(NSString *)category mode:(NSString *)mode options:(AVAudioSessionCategoryOptions)options error:(NSError **)outError NS_AVAILABLE_IOS(10_0);

二、关闭与激活AVAudioSession配置接口

/* Set the session active or inactive. Note that activating an audio session is a synchronous (blocking) operation.
 Therefore, we recommend that applications not activate their session from a thread where a long blocking operation will be problematic.
 Note that this method will throw an exception in apps linked on or after iOS 8 if the session is set inactive while it has running or 
 paused I/O (e.g. audio queues, players, recorders, converters, remote I/Os, etc.).
*/
- (BOOL)setActive:(BOOL)active error:(NSError **)outError;
- (BOOL)setActive:(BOOL)active withOptions:(AVAudioSessionSetActiveOptions)options error:(NSError **)outError NS_AVAILABLE_IOS(6_0);

三、AVAudioSessionCategory配置项

AVAudioSessionCategoryAmbient
当前App的播放声音可以和其他app播放的声音共存,当锁屏或按静音时停止。

AVAudioSessionCategorySoloAmbient
只能播放当前App的声音,其他app的声音会停止,当锁屏或按静音时停止。

AVAudioSessionCategoryPlayback
只能播放当前App的声音,其他app的声音会停止,当锁屏或按静音时不会停止。

AVAudioSessionCategoryRecord
只能用于录音,其他app的声音会停止,当锁屏或按静音时不会停止

AVAudioSessionCategoryPlayAndRecord
在录音的同时播放其他声音,当锁屏或按静音时不会停止

AVAudioSessionCategoryAudioProcessing
使用硬件解码器处理音频,该音频会话使用期间,不能播放或录音(iOS10弃用)

AVAudioSessionCategoryMultiRoute
多种音频输入输出,例如可以耳机、USB设备同时播放等

四、AVAudionSessionMode配置项:

AVAudioSessionModeDefault
默认的模式,适用于所有的场景

AVAudioSessionModeVoiceChat
适用类别 AVAudioSessionCategoryPlayAndRecord ,应用场景VoIP

AVAudioSessionModeGameChat
适用类别 AVAudioSessionCategoryPlayAndRecord ,应用场景游戏录制,由GKVoiceChat自动设置,无需手动调用

AVAudioSessionModeVideoRecording
适用类别 AVAudioSessionCategoryPlayAndRecord,AVAudioSessionCategoryRecord 应用场景视频录制

AVAudioSessionModeMoviePlayback
适用类别 AVAudioSessionCategoryPlayBack 应用场景视频播放

AVAudioSessionModeVideoChat
适用类别 AVAudioSessionCategoryPlayAndRecord ,应用场景视频通话

AVAudioSessionModeMeasurement
适用类别AVAudioSessionCategoryPlayAndRecord,AVAudioSessionCategoryRecord,AVAudioSessionCategoryPlayback

AVAudioSessionModeSpokenAudio
iOS9新增加的。如果另一个应用程序播放语音提示,您的应用程序应该暂停而不是躲避它的音频。在中断的应用程序的音频结束后,您可以继续您的应用程序的音频播放。

五、AVAudioSessionCategoryOptions配置项

AVAudioSessionCategoryOptionMixWithOthers
适用于:
AVAudioSessionCategoryPlayAndRecord
AVAudioSessionCategoryPlayback
AVAudioSessionCategoryMultiRoute
用于可以和其他app进行混音

AVAudioSessionCategoryOptionDuckOthers
适用于AVAudioSessionCategoryAmbient, AVAudioSessionCategoryPlayAndRecord, AVAudioSessionCategoryPlayback, and AVAudioSessionCategoryMultiRoute, 用于压低其他声音播放的音量,使期音量变小;在设置 CategoryPlayAndRecord 时,同时设置option为Duckothers 那么会压低其他音量播放

AVAudioSessionCategoryOptionAllowBluetooth
适用于AVAudioSessionCategoryRecord ,AVAudioSessionCategoryPlayAndRecord, 用于是否支持蓝牙设备耳机等

AVAudioSessionCategoryOptionDefaultToSpeaker
适用于AVAudioSessionCategoryPlayAndRecord ,用于将声音从Speaker播放,外放,即免提

AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers
适用于AVAudioSessionCategoryPlayAndRecord, AVAudioSessionCategoryPlayback, and AVAudioSessionCategoryMultiRoute, iOS9 新增加的

AVAudioSessionCategoryOptionAllowBluetoothA2DP
适用于AVAudioSessionCategoryPlayAndRecord,蓝牙和a2dp

AVAudioSessionCategoryOptionAllowAirPlay
适用于AVAudioSessionCategoryPlayAndRecord,airplay

六、监听音频通知

AVAudioSessionRouteChangeNotification
/// 监听外部设备改变

 [[NSNotificationCenter defaultCenter] addObserver:self
                                              selector:@selector(audioRouteChangeListenerCallback:)
                                                  name:AVAudioSessionRouteChangeNotification
                                                object:nil];

AVAudioSessionSilenceSecondaryAudioHintNotification
/// 其他app占用音频通道

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(otherAppAudioSessionCallBack:)
                                                 name:AVAudioSessionSilenceSecondaryAudioHintNotification
                                               object:nil];

AVAudioSessionInterruptionNotification
/// 电话、闹铃等一般性中断通知

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(systermAudioSessionCallBack:)
                                                 name:AVAudioSessionInterruptionNotification
                                               object:nil];

相关文章

  • 音频:AVAudioSession 配置

    遇到这么个场景,项目中有些页面是来自cocos2d,其中涉及到音频播放和录制(应该对应AVAudioSession...

  • AVAudioSession 学习

    AVAudioSession 作用 配置音频会话类别和模式,以与系统交流您打算如何在应用中使用音频的方式 激活应用...

  • iOS 音频-AVAudioSession

    AVAudioSession 概述 最近在做 webrtc 采集与播放音频,使用AVAudioSession进行播...

  • iOS音频之AudioUnit简单播放音频 -(2)

    实现AudioUnit播放音频demo地址从配置环境到播放成功的以下步骤详解 一、设置AVAudioSession...

  • AVAudioSession音频会话中断监听配置

    工作之余打个笔记。音频后台播放时需要做响应监听配置,比如电话,微信语音等 原理是,在音乐播放被中断时,暂停播放,在...

  • AVAudioSession -- 音频管理

    AVAudioSession介绍 音频输出作为硬件资源,对于ios系统来说是唯一的;AVAudioSession可...

  • iOS WebRTC中AVAudioSession

    收藏点赞文章:iOS 音频-AVAudioSessioniOS音频掌柜-- AVAudioSession 在Web...

  • AVFoundtion主要类

    AVAudioSession 系统音频信息的交互AVAudioPlayer 音频播放器AVAudioRecord...

  • iOS音频-AVAudioSession

    最近在处理录音方面的问题,做个转载参考链接参考链接 AVAudioSession就是用来管理多个APP对音频硬件设...

  • iOS 音频-AVAudioSession

    1. AVAudioSession 概述 最近一年一直在做IPC Camera的iOS客户端开发。和音频打交道,必...

网友评论

    本文标题:音频:AVAudioSession 配置

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