Неверные ключи -> ProfileLevel в AVCaptureVideoDataOutput (macOS)
Я добавляю ключи к своему AVCaptureVideoDataOutput
, при добавлении ключа AVVideoProfileLevelKey
система бросает меня ->
Не удалось установить (contentViewController) определенное пользователем проверенное свойство для (NSWindow): *** +[AVVideoOutputSettings videoOutputSettingsWithVideoSettingsDictionary:] Словарь параметров вывода содержит один или несколько недопустимых ключей: ProfileLevel
let captureSession = AVCaptureSession()
var videoCaptureOutput = AVCaptureVideoDataOutput()
videoCaptureOutput.videoSettings = [AVVideoCodecKey: AVVideoCodecType.h264,
AVVideoWidthKey : 1280,
AVVideoHeightKey : 720,
AVVideoProfileLevelKey : AVVideoProfileLevelH264HighAutoLevel] as [String : Any]
Ключ является частью AVVideoSettings.h
так это AVVideoCodecKey
, AVVideoWidthKey
а также AVVideoHeightKey
Однако мне неясно, где найти ключи, которые поддерживаются AVCaptureVideoDataOutput
,
1 ответ
Ключи и способы их создания описаны в (введите AVVideoCodecKey и перейдите к определению). В вашем конкретном случаеAVVideoProfileLevelKey : AVVideoProfileLevelH264HighAutoLevel
следует поместить в другой словарь, и этот словарь должен быть установлен на AVVideoCompressionPropertiesKey
:
let compressionSettings = [AVVideoProfileLevelKey: AVVideoProfileLevelH264HighAutoLevel]
videoCaptureOutput.videoSettings = [AVVideoCodecKey: AVVideoCodecType.h264,
AVVideoWidthKey : 1280,
AVVideoHeightKey : 720,
AVVideoProfileLevelKey : compressionSettings]
Надеюсь, это поможет кому угодно
Ни одна из ваших настроек не подходит для AVCaptureVideoDataOutput
, который предоставляет вам необработанные видеокадры. Вы настраиваете его так, как если бы он кодировал кадры в файл. Таким образом, ваш словарь настроек должен использоваться с AVAssetWriterInput
из AVAssetWriter
или установить на AVCaptureMovieFileOutput
с setOutputSettings
метод.