【问题标题】:AVCaptureDevice requestAccessForMediaType:AVCaptureDevice requestAccessForMediaType:
【发布时间】:2020-01-02 04:38:41
【问题描述】:

MacOS 10.14

<key>NSMicrophoneUsageDescription</key>
    <string>Record audio!</string>

这适用于一个快速的项目:

AVCaptureDevice.requestAccess(for: .audio) { granted in
            if granted {
                //self.setupCaptureSession()
            }
        }

但这在 ObjectiveC 项目中不起作用(线程 8:信号 SIGABRT)

[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {
            if (granted) {
                //self.microphoneConsentState = PrivacyConsentStateGranted;
            }
            else {
                //self.microphoneConsentState = PrivacyConsentStateDenied;
            }
        }];

我在 ObjectiveC 项目中做错了什么或错过了什么? (我不想将我的项目转换为 swift。)

任何帮助表示赞赏。谢谢,保罗

【问题讨论】:

    标签: objective-c crash avcapturedevice


    【解决方案1】:

    为了使用 AVCaptureDevice,您需要为这两个项目添加描述,即NSCameraUsageDescription, NSMicrophoneUsageDescription

    参考请见Apple Doc

    如果您只想录制音频,也可以使用 AVAudioSession API。

    【讨论】:

    • 不,Swift 仅适用于麦克风。即使我添加了相机使用情况,ObjectiveC 仍然崩溃。
    【解决方案2】:

    我开始了一个新的 ObjectiveC 项目(MacOs 10.14)并将旧项目中的所有内容复制到它(xibs 等)。它显示了适当的访问对话,但实际上并没有记录。必须检查功能中的音频输入复选框 - 在搞砸了一个小时之后。 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      相关资源
      最近更新 更多