- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的应用程序中使用 AVAudioEngine 和 AVAudioPlayerNode 处理音频播放,我想实现远程控制。背景音频已配置并正常工作。
控制中心控制工作,但当我从应用程序内部播放/暂停音乐时,播放/暂停按钮不会更新。 我正在真实设备上进行测试。
Control center screenshot
这是我的 AVAudioSession 设置代码:
func setupAudioSession() {
UIApplication.shared.beginReceivingRemoteControlEvents()
do {
try AVAudioSession.sharedInstance().setActive(true)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch let sessionError {
print("Failed to activate session:", sessionError)
}
}
func setupRemoteControl() {
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.isEnabled = true
commandCenter.playCommand.addTarget { (_) -> MPRemoteCommandHandlerStatus in
self.audioPlayerNode.play()
return .success
}
commandCenter.pauseCommand.isEnabled = true
commandCenter.pauseCommand.addTarget { (_) -> MPRemoteCommandHandlerStatus in
self.audioPlayerNode.pause()
return .success
}
}
最佳答案
所以这是我的问题的解决方案,我正在启动我的 AVAudioEngine 及其从 viewDidLoad()
调用的设置函数,这就是问题所在,我使用了 .play()
/.pause()
我的 AVAudioPlayerNode 上的方法来操作音频,但是 AVAudioPlayerNode 不发出主音频 , AVAudioEngine 的 outputNode 确实如此。
因此,无论何时您想从应用程序内部或命令中心播放/暂停音频,如果您在应用程序中使用 AVAudioEngine 处理音频,请不要忘记调用 .stop()
/.start()
AVAudioEngine 上的方法。即使没有将单个属性设置为 MPNowPlayingInfoCenter.default().nowPlayingInfo
,锁定屏幕控件也应该显示,播放/暂停按钮应该在命令中心/锁定屏幕中正确更新。 .
MPRemoteCommandCenter 设置:
func setupRemoteControl() {
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.isEnabled = true
commandCenter.playCommand.addTarget { (_) -> MPRemoteCommandHandlerStatus in
try? self.audioEngine.start()
return .success
}
commandCenter.pauseCommand.isEnabled = true
commandCenter.pauseCommand.addTarget { (_) -> MPRemoteCommandHandlerStatus in
self.audioEngine.stop()
return .success
}
}
关于ios - 有没有办法使用 AVAudioEngine 和 AVAudioPlayerNode 显示锁屏控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925673/
我正在尝试动态修改附加到 AVAudioEngine 的节点图,但该图在每次重新连接后输出静音。 在下面的示例中,我想将 player 动态连接到 engine.mainMixerNode,但是每当我
我正在尝试使用 AVAudioEngine 播放 AVAudioFile。代码大部分取自苹果开发者在线视频,但没有回放。花了一些时间浏览论坛,但似乎没有任何线索。 我有两种方法。第一个调用标准的打开文
我的应用程序动态添加和删除为 mainMixerNode 提供数据的节点。发生这种情况时,我会听到咔哒声或爆裂声,因为音量并未减弱。 建立连接时如何实现平滑过渡?我是否需要在 AudioUnit 中自
我正在尝试查找有关如何使用 AVAudioEngine 的详细文档。有谁知道我在哪里可以找到它? 我找到了这个,但与文档丰富的 UI 内容相比,它似乎非常简陋。 https://developer.a
这里是第一个 stackoverflow 问题,所以请多多包涵!在为 MacOS 设计更大的音频程序的过程中,我试图创建一个测试应用程序,它可以简单地从任何系统音频输入中获取音频并将其发送到任何输出。
我正在用 Swift 编写一个 iOS 应用程序,该应用程序正在录制用户的声音,然后可以使用一些语音效果进行播放,但问题是使用内置 iPhone 麦克风时播放非常安静。带耳机就没问题。 录制代码: l
我正在使用 AVAudioEngine 进行测量。我从界面中播放刺激声音,并使用 micTap 记录返回的信号。 我现在正在研究支持多种不同格式的不同音频接口(interface)。我通过混合器转换
我成功地将 AVAudioPlayer 节点附加到我的 AVAudioEngine。但是,我需要稍后检查这些节点是否已附加到它(因此我不会重新添加它们)。 引擎上是否有任何特定属性可供我检查以查看其是
简单的问题。如何使用 AVAudioEngine 播放多声道音频文件(> 2 声道),以便我可以听到默认 2 声道输出(耳机/扬声器)上的所有声道。以下代码(去除了用于呈现的错误检查)播放文件的前两个
我正在创建一个基本的音板应用程序。我有两个开关。一种在激活时将使音频变慢且音调更低,另一种则使其变得更快和更高。我有一个 if else if if 语句,它查看这些开关,然后相应地播放音频,但是当我
我正在开发一键通功能,发送者可以将字节数组形式的音频发送到服务器,接收者可以通过套接字连接实时收听它。 当我尝试使用 AVAudioEngine 在接收端播放视频时,它不起作用。 let bu
我正在尝试制作音频处理应用程序。有没有办法使用 AVAudioEngine 将音频效果应用于音频文件? 最佳答案 是的,你当然可以,你可以使用: AVAudioPlayerNode AVAudioUn
我正在尝试设置一个 AudioQueue 以从 iPhone 上的麦克风传输音频。 我创建我的音频引擎: var audioEngine = AVAudioEngine() 还有我的音频队列:
我正在使用一个 AVAudioEngine 对象,它附有许多 AVAudioPlayerNodes。音频一切正常,除了它会停止 iPhone 在后台播放的任何音频(即来自 iTunes 或其他音乐应用
我正在设置一个 AVAudioEngine 实现以从麦克风获取音频并将其流式传输到 websocket 连接。首先,我已经点击了麦克风输入和一个中间混音器,该混音器将麦克风的音频从 44khz 下采样
在我下面的代码中,我创建了两个声音,sound1 和 sound2。每个声音都包含多个样本,允许同时播放相同的声音。问题是,如果我创建看似超过 6 到 8 个 AVAudioPlayerNode,每个
我已经设置了我的音频引擎并连接了几个节点,以便制作如下所示的音频图: // //AVAudioPlayerNode --> AVAudioMixerNode --> AVAudioUnitVarisp
我正在使用 AVAudioPlayerNode 播放歌曲,我正在尝试使用 UISlider 来控制它的时间,但我无法弄清楚如何使用 AVAUdioEngine. 最佳答案 经过反复试验,我想我终于弄明
我在对从麦克风获取的音频进行下采样时遇到问题。我正在使用 AVAudioEngine 通过以下代码从麦克风中采集样本: assert(self.engine.inputNode != nil) let
我正在尝试运行来自 their website here 的 Apple SpeakToMe:将语音识别与 AVAudioEngine 结合使用示例.我的问题是,当您停止 AVAudioEngine
我是一名优秀的程序员,十分优秀!