AUAudioUnit无法播放背景错误代码561145187中的音频

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AUAudioUnit无法播放背景错误代码561145187中的音频相关的知识,希望对你有一定的参考价值。

我正在使用AUAudioUnit播放应用程序正在从服务器流式传输的音频。我的代码在前台工作正常。但是,当我为该应用程序设置背景时,它将无法播放音频。我收到以下错误。

[[aurioc] AURemoteIO.cpp:1590:Start:AUIOClient_StartIO失败(561145187)

错误代码561145187表示AVAudiosessionErrorCodeCannotStartRecording

[此错误类型通常在应用开始混合录制时发生从后台运行,并且未配置为应用间音频应用。

这是我在Swift中设置AVAudioSession的方式:

try AVAudioSession.sharedInstance().setCategory(.playAndRecord, mode: .voiceChat, options: [.allowBluetooth])

这是我在Objective-C中设置AUAudioUnit的方式:

AudioComponentDescription description;
description.componentType = kAudioUnitType_Output;
description.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
description.componentManufacturer = kAudioUnitManufacturer_Apple;
description.componentFlags = 0;
description.componentFlagsMask = 0;

self.format = [[AVAudioFormat alloc] initWithSettings: @{
                                                       AVFormatIDKey: @(kAudioFormatLinearPCM),
                                                       AVSampleRateKey: @16000,
                                                       AVNumberOfChannelsKey: @1,
                                                       AVLinearPCMIsFloatKey: @NO,
                                                       AVLinearPCMBitDepthKey: @16,
                                                       AVLinearPCMIsBigEndianKey: @NO
                                                       }];

self.audioUnit = [[AUAudioUnit alloc] initWithComponentDescription:description options:0 error:nil];

[当我调用startHardwareAndReturnError方法时,即是我收到该错误消息。

[self.unit startHardwareAndReturnError:outError];

我已经设置了背景模式-音频功能。而且我很确定我设置了AVAudioSession,因此它是不可混合的。我什至没有录音。我只是想播放音频。我还想念什么?

答案

要在后台录制音频,您必须在前台启动音频单元。然后,音频单元将继续在后台运行。如果没有任何数据可播放,则可以播放静音。

如果您不录制音频,请不要使用playAndRecord会话类型。请改用仅播放会话类型之一。

以上是关于AUAudioUnit无法播放背景错误代码561145187中的音频的主要内容,如果未能解决你的问题,请参考以下文章

在自定义 AUAudioUnit 中查找爆裂声和爆裂声的原因

无法在后台播放 mp4 文件

AUAudioUnit & AudioUnitGetProperty、AudioUnitSetProperty

如何创建实现多个音频单元的 AUAudioUnit?

视频无法在颤振 Web 应用程序中播放

AUAudioUnit 获取主机采样率变化