问题标签 [audiosession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
399 浏览

iphone - AudioSession 实际上和 OpenAL 是一样的吗?

AudioSession 实际上和 OpenAL 是一样的吗?

0 投票
6 回答
3667 浏览

iphone - 我可以从 kAudioSessionProperty_AudioRoute 属性返回什么样的路由?

苹果人试图搞笑并在文档中写道:

现实中可能有什么样的返回值?

0 投票
1 回答
302 浏览

iphone - 如何收听该属性?

那么,如果我想收到有关 kAudioSessionProperty_AudioInputAvailable 的通知,我该怎么做呢?

0 投票
5 回答
5599 浏览

iphone - PlaySystemSound 静音开关打开

我知道,我必须将其设置AudioSession为“播放”类别,即使在静音开关打开时也允许音频。这就是我所做的,但是当开关打开时声音仍然会静音。


编辑:顺便说一句,该应用程序是一个音板。播放声音是应用程序的唯一目的。以下是 Apple Doc 对此的评价:

将此类别用于音频播放至关重要的应用程序。即使屏幕锁定且响铃/静音开关设置为静音,您的音频也能播放。


编辑 2:打开静音开关,声音甚至不会通过耳机播放。我知道用户为王。我知道静音开关有它的用途。那不是问题。我试图得到一个关于将AudioSession类别设置为kAudioSessionCategory_MediaPlayback没有预期结果的答案。


编辑 3:按照 Jonathan Watmough 的建议,我设置了AudioServices kAudioServicesPropertyIsUISound属性,但仍然没有运气。我错过了什么吗?

0 投票
1 回答
1707 浏览

iphone - SpeakHere 的 AudioQueue 代码在 iPad 上失败

我在我正在创建的必须同时播放和录制的应用程序中使用 SpeakHere 音频类。

我在通用应用程序构建(针对 iPad 和 iPhone)中使用带有 3.2 设备目标的最新 SDK。

该应用程序使用 MPMoviePlayerController 播放流媒体电影并同时录制音频。

这在 iPhone 上 100% 完美运行。

但是,它在我的客户 iPad 上 100% 失败。 日志显示 AudioSession 拒绝激活的 !act 错误!我从他那里收到的每个日志文件都包含许多被返回给回调函数的中断和路由更改(即类别)。**在 iPhone 上,我根本看不到这样的东西。日志仅显示已创建记录并记录到指定文件。没有中断,没有路线变化,没有废话。

以下是相关日志:

我已经删除了两个回调函数,仅记录中断的发生和路由更改(有原因)。所以我不会费心发布代码,因为它实际上什么也没做。不过,在一次尝试开始在 iPad 上录制期间,我多次看到这些日志。

我几乎已经阅读了在 Apple Dev 论坛和 StackOverflow 中可以找到的所有帖子,但似乎无法在 Apple Docs 中找到有相同问题的人或任何解释 iPad 行为差异的相关注释。--注意:iPad 确实显示了一些其他已修复的缺陷行为,例如永不结束的不匹配的 Begin Interruption 呼叫(因此我从未停用会话)。

我从未收到任何日志,表明来自 AudioQueue 或 AudioSession 代码的任何失败的初始化或激活调用。当我尝试开始录制时,它只是失败了。--我什至试图强制 AudioSessionSetActive(true); 在每次尝试使用音响系统之前打电话,我仍然收到这些错误。

这是初始化调用的相关代码:

稍后在视频的 loadstate 回调中,我只是尝试开始录制到预定的文件路径:

录音完全失败。

感谢您的时间和帮助。

0 投票
1 回答
1442 浏览

iphone - 如何在后台使用 AVAudioPlayer 播放音乐?

我目前在前台使用 AVAudioPlayer 播放音乐,但是当我按下主页按钮时,我的应用程序进入后台并且音乐停止。我将 AVAudioSession 的类别设置为 AVAudioSessionCategoryPlayback 并将 active 设置为 YES。此外,我audio在 Info.plist 中添加了 UIBackgroundModes 的键。

我还需要做些什么来启用背景音乐播放吗?

0 投票
3 回答
4509 浏览

iphone - 路由 iPhone 音频声音

我有一个可以同时收听和播放声音的应用程序。默认情况下,声音输出通过耳机。因此,我使用以下代码将其路由到扬声器:

这工作正常。但是现在,我想在连接耳机或外部扬声器时通过耳机路由声音。我将如何实现这一目标?

理想情况下,应用程序启动时所有其他声音(即音乐等)都应静音。

谢谢!

0 投票
2 回答
1419 浏览

iphone - 鉴于多任务处理,我如何在 iOS 中处理其他音频播放?

Audio Session Cookbook中有一节关于“在应用启动期间检查其他音频是否正在播放”。

我正在使用 MonoTouch(但请随意给出 Objective-C 的答案,API 是相同的),因此该文档中的代码如下所示:

结果是,如果我的应用程序开始播放 iPod 音乐,那么 iPod 音乐将继续播放并阻止我使用硬件音频解码器(无论如何我都不需要)。如果我的应用程序启动时没有播放 iPod 音乐,我可以使用硬件解码器。

然后我可以使用 的值otherAudioPlaying来确定是否开始播放我自己的音乐。

现在这在不支持多任务处理的旧操作系统上工作得很好。但是通过多任务处理,用户可以离开我的应用程序(背景),开始在 iPod 上播放音乐,然后重新进入我的应用程序。然后他们的 iPod 音乐将被静音,我的音乐将重新开始播放。

我希望发生的事情是当我的应用程序返回前台时让 iPod 音乐继续播放 - 即使我的应用程序在后台运行时正在播放我自己的音乐(并使用硬件解码器)。

(而且,反过来——如果我的应用程序在后台没有播放音乐,我想检测它返回时是否可以开始播放音乐)。

我怎样才能做到这一点?(最好不要突然切断我的音频,保持通常发生的良好淡出。)

编辑:我还应该指出,我所有的音频工作都是在主线程之外完成的。

0 投票
5 回答
2333 浏览

ios4 - AudioQueueStart 失败 -12985

我制作了一个流媒体音乐播放器,它在前台运行良好。但在iOS4后台,它不会自动播放下一首歌曲。(遥控有效)原因是AudioQueueStart return -12985

我已经检查了音频会话。就好了。我AudioQueueStart在它开始播放音乐时使用。你怎么能删除AudioQueueStart


AudioQueueStart我在网上阅读了有关失败主题的答案。

要检查的一件事是 AudioSession 首先是活动的。就我而言,我之前在开始新歌之前将会话设置为在歌曲更改之间处于非活动状态:AudioSessionSetActive(false);

一旦我删除了这个 AudioQueueStart 就可以从后台正常工作。

0 投票
1 回答
2412 浏览

iphone - MPMoviePlayerController 和 AVAudioPlayer 音频混合故障

我正在为 iPhone 开发一个交互式故事书类型的应用程序,我最近遇到了一个令人沮丧的错误,涉及设备上的音频混合。

首先,我设置了一个音频会话。我将类别设置为AVAudioSessionCategoryAmbient,然后初始化并播放我的AVAudioPlayer实例。现在,在后台播放音频时,我正在使用MPMoviePlayerController预加载要播放的视频,然后调用prepareToPlay。我以这种方式预加载视频的原因是因为我需要它在稍后以相当严格的时间提示立即播放。

在这种配置中,音频/电影工作正常,它们混合在一起,不会相互干扰。但是,这个特定的音频会话类别不允许在设备锁定时继续播放音频,这是我真正需要的功能。结果,我不得不考虑一个不同的类别:AVAudioSessionCategoryPlayback

根据 Apple 文档,默认情况下,此类别不允许与其他音频混合。要启用与其他音频的混合,我将覆盖相关类别:

不幸的是,这解决了我在锁定时播放的问题,但引入了另一个问题:AVAudioPlayer音频被短暂中断,因为视频加载时有轻微的卡顿。口吃很小,可能不到一秒钟,但足以破坏用户体验。我已经阅读了这篇相关文章,它使我能够使用AVAudioSessionCategoryAmbient预加载视频,但不幸的是,同样的方法似乎不适用于新类别。

音频会话类别应用成功,根据返回码。有谁知道为什么启用此类别的音频混合与环境类别提供的混合设施不同?