AVAudioSession AVAudioSessionCategoryPlayAndRecord 故障

2024-03-08

我想使用录制带有音频的视频AVCaptureSession。为此,我需要 AudioSessionCategoryAVAudioSessionCategoryPlayAndRecord,因为我的应用程序还播放有声视频。

我希望从默认扬声器中听到音频,并且希望它与其他音频混合。所以我需要选项AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers.

如果我在播放其他音频时执行以下操作,则其他应用程序的音频中会出现明显的可听故障:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

有没有办法消除这个故障?

它似乎发生在有一个AVAudioSessionRouteChangeReasonRouteConfigurationChange据通知AVAudioSessionRouteChangeReasonCategoryChange从无麦克风输入到麦克风输入。

当应用程序进入后台(无论是否停用音频会话)时,也会发生配置更改(和故障)。当从后台返回而不停用音频会话时,当AVCaptureSession配置发生变化,即当相机从前切换到后时。在这种情况下,不会触及音频路由,并且仅在从后台返回而不停用音频会话时才会发生。路线更改的通知会被触发两次。一次禁用麦克风,一次再次启用它。

请注意,通过下载 Apple 的 AVCamManual 示例,可以轻松重现此行为。将以下内容添加到viewDidLoad of AAPLCameraViewController.m:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
…
session.usesApplicationAudioSession = YES;
session.automaticallyConfiguresApplicationAudioSession = NO;

其他一些可能相关的奇怪的事情:

将音频类别设置为AVAudioSessionCategoryAmbient首先并激活它:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient withOptions:0 error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

然后更改类别:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];

尽管有选项标志,其他音频仍停止播放。不会抛出任何错误。


正如 @Cbas 在评论中指出的那样,Apple 工作人员已确认从仅输出路由切换到输入+输出路由时存在故障,并且该问题没有解决方法,可能的解决方法是完全避免从输出切换 -仅通过始终使用输入输出路由AVAudioSessionCategoryPlayAndRecord即使应用程序未录制,也会显示类别。 另外,如果音频会话类别已经设置为 AVAudioSessionCategoryPlayAndRecord,请勿再次设置,否则会出现故障。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AVAudioSession AVAudioSessionCategoryPlayAndRecord 故障 的相关文章

随机推荐

  • 在 Linux 中调试 C++ 程序

    我写了一个简单的 C 程序 如下所示 include
  • 截断文本并在鼠标悬停时显示它

    我需要截断文本 末尾带有 并且将鼠标悬停在整个文本上时应该展开 我尝试用下面的代码截断 此代码的问题是 它会在单击时展开内容 但我需要当用户将鼠标悬停在 p 标签上的任何位置时打开它 var len 100 var p document g
  • 阻止滚动以及展开/折叠可折叠工具栏

    我正在使用Collapsible Toolbar在我的应用程序中 活动启动时可折叠工具栏处于展开状态 启用滚动并且正常工作 但现在我需要显示全屏错误布局 以防我的 API 失败 在这种情况下 我必须折叠工具栏并阻止滚动效果 错误布局显示重试
  • Spark hivecontext 的查询会锁定 hive 表吗?

    我知道如果我从 Hive 提交查询 将获取共享锁 然后 Hive 表将被查询锁定 https cwiki apache org confluence display Hive Locking https cwiki apache org c
  • 实现下拉菜单项颤动的复选框

    如何在flutter应用程序中实现下拉菜单项的复选框 每个里面DropdownMenuItem 你可以有Row作为一个孩子 你可以通过CheckBox其次是Text 帮助您入门的示例工作代码 body Center child Dropdo
  • 获取 ntp 调整通知

    我的情况很奇怪 我需要一些有关 NTP 时间调整的指导 我有一台运行 NTP 守护进程的 PC Red Hat 这台 PC 通过 LAN 上的 Stratum 2 时间服务器调整其时间 我的 PC 还通过串行端口 RS 232 连接到 DV
  • 如何将 Vec<&mut T> 转换为 Vec<&T>?

    我有一个可变引用向量 struct T let mut mut vec Vec lt mut T gt vec 如何将它 的副本 传递到采用不可变引用向量的函数中 fn cool func mut immut vec Vec lt T gt
  • iPad IOS html 表单选择在触摸时无法打开

    我有一个选择框 通过以下方式创建
  • Vim 加载 vimrc 后是否加载插件?

    我正在尝试覆盖插件中设置的突出显示 该插件执行以下操作 highlight link WordUnderTheCursor Underlined 首先 我不知道 添加到highlight做任何事 但这无关紧要 在 vimrc 中做类似的事情
  • 使用异步函数订阅可观察对象是否安全

    我有一个以 50Hz 发送事件的事件发射器 我想使用异步方法订阅这个发射器 代码如下所示 this emitter fromEventPattern this addHandler this removeHandler err char g
  • org.hibernate.MappingException:属性映射在 ENUM 实体中的列数错误

    我创建了数据库 其中引用了 ENUM 表 并且该枚举的实体有例外 脚本示例 CREATE TABLE status code VARCHAR 40 status ENUM not started in progress finished i
  • 从 jquery 安全地调用我的 Web api

    我有一个简单的问题 可能会指出一个复杂的答案 我有一个运行良好的网络 API 但现在我想设置身份验证 授权 我需要它在所有平台上工作 但主要来自 jQuery 当然 我不想像这样以纯文本形式沿着管道发送我的用户名和密码 function G
  • 有没有办法加快 docker exec 的速度?

    有没有办法消除 docker exec 的开销 例如 当我打电话时docker exec ls在已经运行的容器上 需要0 15秒才能返回结果 root min time docker exec 6f ls bin boot dev etc
  • 制作 Silverlight 和常规 .NET REST 客户端的最便携方法是什么

    我正在尝试让服务器应用程序使用 WCF 公开一些状态信息 特别是我在使用带有 RESTful API 的 WCF 服务之后 当谈到从 silverlight 中使用 REST api 时 我遇到了一些困难 我想要作为附加类型的客户端的应用程
  • 如何在M1 Mac上安装Deepface(Python人脸识别包)?

    我正在尝试使用 deepface python 库 我已经按照中列出的指南安装了张量流https claytonpilat medium com tutorial tensorflow on an m1 mac using jupyter
  • 使用 Python 多处理的高内存使用率

    我看过几篇关于使用 Python 多处理模块的内存使用情况的帖子 然而这些问题似乎并不能回答我在这里遇到的问题 我将我的分析发表出来 希望有人能帮助我 Issue 我正在使用多处理并行执行任务 我注意到工作进程的内存消耗无限增长 我有一个小
  • 如何上传大文件(≥3GB)到FastAPI后端?

    我正在尝试将大文件 3GB 上传到我的 FastAPI 服务器 without将整个文件加载到内存中 因为我的服务器只有 2GB 可用内存 服务器端 async def uploadfiles upload file UploadFile
  • 是否有 Observable.Interval 的“热门”等价物

    如果我执行以下操作 var obs Observable Interval TimeSpan FromSeconds 1 Select x gt A x ToString obs Subscribe x gt Console WriteLi
  • MongoDB社区:任意兼容版本下WiredTiger启动失败

    今天 在没有做出任何有意识的改变的情况下 我的 mongodb 社区停止了工作 当我检查酿造服务时 我看到错误状态 mongodb community error 3584 user Library LaunchAgents email p
  • AVAudioSession AVAudioSessionCategoryPlayAndRecord 故障

    我想使用录制带有音频的视频AVCaptureSession 为此 我需要 AudioSessionCategoryAVAudioSessionCategoryPlayAndRecord 因为我的应用程序还播放有声视频 我希望从默认扬声器中听