ios - AVCaptureSession 处于事件状态时的 AudioServicesPlaySystemSound

标签 ios avcapturesession audiotoolbox

我正在开发录音应用程序,我想在录音开始时播放声音。

不幸的是,从 iOS 5 开始,当带有音频设备的 AVCaptureSession 处于事件状态时,似乎无法播放系统声音。

这是我正在使用的代码的相关部分

- (void)viewDidLoad {
    [super viewDidLoad];

    NSURL * soundURL = [[NSBundle mainBundle] URLForResource:@"recording-starts" withExtension:@"aif"];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &_recStartSound);

    //...

    if ([self.captureManager setupSession]) {
        // ... 

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            [self.captureManager.session startRunning];
        });

        // ...                    
    }
}

稍后,我只是调用 AudioServicesPlaySystemSound(_recStartSound) 并且没有任何反应。 但是,如果我在 session 设置之前进行相同的调用,声音会按预期播放。

我找到了这个 bug report ,这与我的问题以及 this 完全相关和 this问题,但我找不到任何解决方法。

如何在开始 AV 录制之前播放一段短音?

最佳答案

改为使用 AVAudioPlayer 播放声音。

关于ios - AVCaptureSession 处于事件状态时的 AudioServicesPlaySystemSound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956497/

相关文章:

ios - 将Objective-C AudioUnits简介转换为Swift

ios - AudioQueue 字节到 ffmpeg 可理解的 WAV 格式

ios - iOS 中的欧元货币格式化程序在数字之前/之后移动符号

ios - 漏洞 : MPMediaItem Download Status on iOS & MPMediaPropertyPredicate using assetURL

ios - SpriteKit,如何将实时摄像机放置在后台

ios - 快速捕捉实时照片

avfoundation - 如何获得系统卷 iOS?

objective-c - CLLocationManager startUpdatingLocation 与 startMonitoringSignificantLocationChanges

sql - 如何在HTML5中将数据存储到数据库

ios - 我可以使用 AVCaptureSession 从文件中读取视频吗?