QTCaptureDecompressedVideoOutput
Этот класс представляет выходное место назначения для a QTCaptureSession объект, который может использоваться для обработки распакованных кадров от получаемого видео. Экземпляры QTCaptureDecompressedVideoOutput произведите распакованные видеокадры, подходящие для высококачественной обработки. Поскольку экземпляры поддерживают максимальное качество кадра и избегают отбрасывать кадры, использование этого вывода может привести к сокращенной производительности при получении. Приложения, которые должны обработать распакованные кадры, но могут терпеть отброшенные кадры или падения качества распаковки, должны использовать QTCaptureVideoPreviewOutput вместо этого. Приложения могут получить доступ к распакованным кадрам через captureOutput:didOutputVideoFrame:withSampleBuffer:fromConnection: метод делегата. Клиенты могут также создать подклассы QTCaptureDecompressedVideoOutput добавить пользовательское поведение получения.
Наследование
-
NSObject -
QTCaptureOutput -
QTCaptureDecompressedVideoOutput
-
NSObject -
QTCaptureOutput -
QTCaptureDecompressedVideoOutput
Оператор импорта
Swift
import QTKit
Objective C
@import QTKit;
Доступность
Доступный в QuickTime 7.2.1 и позже.
-
Были обработаны возвраты, отбрасывает ли получатель видеокадры, выводящиеся перед более ранними кадрами.
Объявление
Objective C
- (BOOL)automaticallyDropsLateVideoFramesВозвращаемое значение
Этот метод возвраты
YEStrueесли получатель отбрасывает последние видеокадры и возвращается НЕ иначе.Обсуждение
Если возвращается этот метод
YEStrue, получатель отбросит кадры, стоящиеся в очереди, в то время как поток, обрабатывающий существующие кадры, блокируется вoutputVideoFrame:withSampleBuffer:fromConnection:илиcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:метод делегата. Метод делегатаcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:будет вызван для каждого отбрасывающегося кадра. Значение по умолчаниюNOfalse.Оператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже; QuickTime 7.6.3.
Осуждаемый в OS X v10.9.
-
Возвращает делегата получателя.
Объявление
Objective C
- (id)delegateОператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже.
Осуждаемый в OS X v10.9.
-
setDelegate: - setDelegate:(OS X v10.9)Устанавливает делегата получателя.
Объявление
Objective C
- (void)setDelegate:(id)delegateОператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже.
Осуждаемый в OS X v10.9.
-
Устанавливает минимальный временной интервал, между которым получатель должен вывести последовательные видеокадры.
Объявление
Objective C
- (void)setMinimumVideoFrameInterval:(NSTimeInterval)minimumVideoFrameIntervalПараметры
minimumVideoFrameIntervalNSTimeIntervalуказание минимального интервала между видеокадрами. Значение 0 указывает, что не должно быть никакого предела частоты кадров.Обсуждение
Этот метод устанавливает минимальную сумму времени, которое должно разделить последовательные кадры, выведенные получателем. Это эквивалентно инверсии максимальной частоты кадров. Значение 0 указывает неограниченную максимальную частоту кадров. Значение по умолчанию 0.
Оператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже; QuickTime 7.6.3.
Осуждаемый в OS X v10.9.
-
outputVideoFrame:withSampleBuffer:fromConnection: - outputVideoFrame:withSampleBuffer:fromConnection:(OS X v10.9)Вызванный каждый раз, когда получатель выводит новый видеокадр.
Объявление
Objective C
- (void)outputVideoFrame:(CVImageBufferRef)videoFramewithSampleBuffer:(QTSampleBuffer *)sampleBufferfromConnection:(QTCaptureConnection *)connectionПараметры
videoFrameБазовый Видео буфер, содержащий распакованный кадр.
sampleBufferДемонстрационное буферное, содержащее дополнительную информацию о кадре, таком как его время представления.
connectionСоединение, из которого было получено видео.
Обсуждение
Этот метод не должен быть вызван непосредственно. Подклассы могут переопределить этот метод для обеспечения пользовательского поведения обработки для каждого кадра. Реализация по умолчанию вызывает делегата
captureOutput:didOutputVideoFrame:withSampleBuffer:fromConnection:метод. Подклассы не должны предполагать, что этот метод вызовут на основном потоке. Кроме того, этот метод периодически вызывают, таким образом, должно быть эффективно предотвратить проблемы производительности получения.Специальные замечания
Для быстрого предъявления претензий в отношении ресурсов памяти, после этого метода возвраты, демонстрационные данные, содержавшие в
QTSampleBufferобъект будет выпущен с помощьюdecrementSampleUseCountметод. Клиенты, ссылающиеся на демонстрационный буфер и интересующиеся демонстрационными данными, что это содержит после этого метода возвраты, должны вызватьincrementSampleUseCountна демонстрационном буфере в этом методе, чтобы гарантировать, что данные остаются допустимыми, пока им больше не нужен он (в котором времени они должны вызватьdecrementSampleUseCount). Клиенты, ссылающиеся на демонстрационный буфер после этого метода возвраты, но только нуждающиеся в доступе к его метаданным, таким как продолжительность, время представления и другие атрибуты, не должны вызыватьincrementSampleUseCount.Обратите внимание на то, что для поддержания оптимальной производительности некоторая выборка буферизует непосредственно ссылочные пулы памяти, которая, возможно, должна быть снова использована системой устройства и другими вводами получения. Это часто имеет место для несжатого собственного получения устройства, где блоки памяти копируются как можно меньше. Если многократные демонстрационные буферы сошлются на такие пулы памяти слишком долго, то вводы больше не будут в состоянии скопировать новые выборки в память, и те выборки будут отброшены. Если Ваше приложение заставляет выборки быть отброшенными, держась за демонстрационные данные для слишком долгого использования
incrementSampleUseCount, но этому нужен доступ к демонстрационным данным в течение длительного периода времени, рассмотрите копирование данных в новый буфер и затем вызовdecrementSampleUseCountна демонстрационном буфере так, чтобы память это сослалось, может быть снова использован.Оператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже.
Осуждаемый в OS X v10.9.
-
minimumVideoFrameInterval - minimumVideoFrameInterval(OS X v10.9)Возвращает минимальный временной интервал, между которым получатель выведет последовательные видеокадры.
Объявление
Objective C
- (NSTimeInterval)minimumVideoFrameIntervalВозвращаемое значение
NSTimeIntervalуказание минимального интервала между видеокадрами. Возвраты 0, если нет никакого предельного набора частоты кадров.Обсуждение
Этот метод возвращает минимальную сумму времени, которое должно разделить последовательные кадры, выведенные получателем. Это эквивалентно инверсии максимальной частоты кадров. Значение 0 указывает неограниченную максимальную частоту кадров. Значение по умолчанию 0.
Оператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже; QuickTime 7.6.3.
Осуждаемый в OS X v10.9.
-
pixelBufferAttributes - pixelBufferAttributes(OS X v10.9)Возвращает Базовые Видео пиксельные буферные атрибуты, ранее установленные
setPixelBufferAttributes:это определяет, какие пиксельные буферы выводятся получателем.Объявление
Objective C
- (NSDictionary *)pixelBufferAttributesВозвращаемое значение
Словарь, содержащий пиксель, буферизует атрибуты для буферов, выведенных получателем. Ключи в словаре описаны в
CoreVideo/CVPixelBuffer.h. Если возвращаемое значениеNIL, тогда выходные буферы получателя с помощью самого быстрого пикселя буферизуют атрибуты.Обсуждение
Этот метод возвращает пиксельные буферные атрибуты, установленные
setPixelBufferAttributes:то, что клиенты могут использовать для настройки размера и формата пикселя видеокадров, выведенных получателем. Когда словарь будет ненолем, получатель попытается к буферам выходного пикселя с помощью атрибутов, указанных в словаре. Ненулевой словарь также гарантирует что выводCVImageBufferaCVPixelBuffer. Когда значение дляkCVPixelBufferPixelFormatTypeKeyустановлен в NSNumber, все буферы изображения, выведенные получателем, будут в том формате. Когда значение будет NSArray, буферы изображения, выведенные получателем, будут в самом оптимальном формате, указанном в том массиве. Если полученные изображения не будут в том из указанных форматов пикселя, то преобразование формата будет выполняться. Если словарьNILили нет никакого значения дляkCVPixelBufferPixelFormatTypeKey, тогда получатель выведет изображения в самом эффективном формате, данном ввод. Например, если источник будет iSight создание компонента Y'CbCr, 8-разрядного 4:2:2 видео тогда, то Y'CbCr, 8-разрядный 4:2:2, будет использоваться в качестве выходного формата во избежание любых преобразований. Значение по умолчанию для возвращенного словаряNIL.Оператор импорта
Objective C
@import QTKit;Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.9.
-
Были обработаны наборы, отбрасывает ли получатель видеокадры, выводящиеся перед более ранними кадрами.
Объявление
Objective C
- (void)setAutomaticallyDropsLateVideoFrames:(BOOL)automaticallyDropsLateVideoFramesПараметры
automaticallyDropsLateVideoFramesДолжен ли получатель отбросить последние видеокадры.
Обсуждение
Установка этого к
YEStrueзаставит получатель отбрасывать кадры, стоящиеся в очереди, в то время как поток, обрабатывающий существующие кадры, блокируется вoutputVideoFrame:withSampleBuffer:fromConnection:илиcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:метод делегата. Метод делегатаcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:будет вызван для каждого отбрасывающегося кадра. Значение по умолчаниюNOfalse.Оператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже; QuickTime 7.6.3.
Осуждаемый в OS X v10.9.
-
setPixelBufferAttributes: - setPixelBufferAttributes:(OS X v10.9)Устанавливает пиксельные буферные атрибуты CoreVideo, определяющие, какие пиксельные буферы выводятся получателем.
Объявление
Objective C
- (void)setPixelBufferAttributes:(NSDictionary *)pixelBufferAttributesПараметры
pixelBufferAttributesСловарь, содержащий пиксель, буферизует атрибуты для буферов, которые будут выведены получателем. Ключи в словаре описаны в
CoreVideo/CVPixelBuffer.h. Если словарьNIL, тогда выходные буферы получателя с помощью самого быстрого пикселя буферизуют атрибуты.Обсуждение
Эти наборы метода пиксельный буфер приписывает это клиенты, могут использовать для настройки размера и формата пикселя видеокадров, выведенных получателем. Когда словарь будет ненолем, получатель попытается к буферам выходного пикселя с помощью атрибутов, указанных в словаре. Ненулевой словарь также гарантирует что вывод
CVImageBufferaCVPixelBuffer. Когда значение дляkCVPixelBufferPixelFormatTypeKeyустановлен в NSNumber, все буферы изображения, выведенные получателем, будут в том формате. Когда значение будет NSArray, буферы изображения, выведенные получателем, будут в самом оптимальном формате, указанном в том массиве. Если полученные изображения не будут в том из указанных форматов пикселя, то преобразование формата будет выполняться. Если словарьNILили нет никакого значения дляkCVPixelBufferPixelFormatTypeKey, тогда получатель выведет изображения в самом эффективном формате, данном ввод. Например, если источник будет iSight создание компонента Y'CbCr, 8-разрядного 4:2:2 видео тогда, то Y'CbCr, 8-разрядный 4:2:2, будет использоваться в качестве выходного формата во избежание любых преобразований.Оператор импорта
Objective C
@import QTKit;Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.9.
-
captureOutput:didDropVideoFrameWithSampleBuffer:fromConnection: captureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:(OS X v10.9)Вызванный один раз для каждого кадра, отбрасывающегося когда
automaticallyDropsLateVideoFramesустановлен вYEStrue.Объявление
Objective C
- (void)captureOutput:(QTCaptureOutput *)captureOutputdidDropVideoFrameWithSampleBuffer:(QTSampleBuffer *)sampleBufferfromConnection:(QTCaptureConnection *)connectionОбсуждение
Когда
automaticallyDropsLateVideoFramesустановлен вYEStrue, этот метод вызывают каждый раз, когда отбрасывается последний видеокадр. Этот метод вызывают один раз для каждого отброшенного кадра и можно вызвать перед вызовом кoutputVideoFrame:withSampleBuffer:fromConnection:илиcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:метод делегата, во время которого те кадры были отброшены возвраты.QTSampleBufferобъект передал этому методу делегата, будет содержать метаданные об отброшенном видеокадре, таком как его продолжительность и метка времени представления, но не будет содержать фактических видеоданных. Делегаты не должны предполагать, что этот метод вызовут на основном потоке. Поскольку этот метод можно вызвать на том же потоке, который ответственен за вывод видеокадров, должно быть эффективно предотвратить дальнейшие проблемы производительности получения, такие как дополнительные отброшенные видеокадры.Оператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже; QuickTime 7.6.3.
Осуждаемый в OS X v10.9.
-
captureOutput:didOutputVideoFrame:withSampleBuffer:fromConnection: captureOutput:didOutputVideoFrame:withSampleBuffer:fromConnection:(OS X v10.9)Вызванный каждый раз, когда предварительный просмотр видео вывел выводы новый видеокадр.
Объявление
Objective C
- (void)captureOutput:(QTCaptureOutput *)captureOutputdidOutputVideoFrame:(CVImageBufferRef)videoFramewithSampleBuffer:(QTSampleBuffer *)sampleBufferfromConnection:(QTCaptureConnection *)connectionОбсуждение
Делегаты получают это сообщение каждый раз, когда выходные распаковки и выводят новый видеокадр. Делегаты могут использовать предоставленный видеокадр для пользовательского предварительного просмотра или для дальнейшей обработки изображений. Делегаты не должны предполагать, что этот метод вызовут на основном потоке. Кроме того, этот метод периодически вызывают, таким образом, должно быть эффективно предотвратить проблемы производительности получения.
Специальные замечания
Для быстрого предъявления претензий в отношении ресурсов памяти, после этого метода возвраты, демонстрационные данные, содержавшие в
QTSampleBufferобъект будет выпущен с помощьюdecrementSampleUseCountметод. Клиенты, ссылающиеся на демонстрационный буфер и интересующиеся демонстрационными данными, что это содержит после этого метода возвраты, должны вызватьincrementSampleUseCountна демонстрационном буфере в этом методе, чтобы гарантировать, что данные остаются допустимыми, пока им больше не нужен он (в котором времени они должны вызватьdecrementSampleUseCount). Клиенты, ссылающиеся на демонстрационный буфер после этого метода возвраты, но только нуждающиеся в доступе к его метаданным, таким как продолжительность, время представления и другие атрибуты, не должны вызыватьincrementSampleUseCount.Обратите внимание на то, что для поддержания оптимальной производительности некоторая выборка буферизует непосредственно ссылочные пулы памяти, которая, возможно, должна быть снова использована системой устройства и другими вводами получения. Это часто имеет место для несжатого собственного получения устройства, где блоки памяти копируются как можно меньше. Если многократные демонстрационные буферы сошлются на такие пулы памяти слишком долго, то вводы больше не будут в состоянии скопировать новые выборки в память, и те выборки будут отброшены. Если Ваше приложение заставляет выборки быть отброшенными, держась за демонстрационные данные для слишком долгого использования
incrementSampleUseCount, но этому нужен доступ к демонстрационным данным в течение длительного периода времени, рассмотрите копирование данных в новый буфер и затем вызовdecrementSampleUseCountна демонстрационном буфере так, чтобы память это сослалось, может быть снова использован.Оператор импорта
Objective C
@import QTKit;Доступность
OS X v10.5 и позже.
Осуждаемый в OS X v10.9.
