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
Возвращаемое значение
Этот метод возвраты
YES
true
если получатель отбрасывает последние видеокадры и возвращается НЕ иначе.Обсуждение
Если возвращается этот метод
YES
true
, получатель отбросит кадры, стоящиеся в очереди, в то время как поток, обрабатывающий существующие кадры, блокируется вoutputVideoFrame:withSampleBuffer:fromConnection:
илиcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:
метод делегата. Метод делегатаcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:
будет вызван для каждого отбрасывающегося кадра. Значение по умолчаниюNO
false
.Оператор импорта
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
Параметры
minimumVideoFrameInterval
NSTimeInterval
указание минимального интервала между видеокадрами. Значение 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)
videoFrame
withSampleBuffer:(QTSampleBuffer *)sampleBuffer
fromConnection:(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:
то, что клиенты могут использовать для настройки размера и формата пикселя видеокадров, выведенных получателем. Когда словарь будет ненолем, получатель попытается к буферам выходного пикселя с помощью атрибутов, указанных в словаре. Ненулевой словарь также гарантирует что выводCVImageBuffer
aCVPixelBuffer
. Когда значение для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
Должен ли получатель отбросить последние видеокадры.
Обсуждение
Установка этого к
YES
true
заставит получатель отбрасывать кадры, стоящиеся в очереди, в то время как поток, обрабатывающий существующие кадры, блокируется вoutputVideoFrame:withSampleBuffer:fromConnection:
илиcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:
метод делегата. Метод делегатаcaptureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:
будет вызван для каждого отбрасывающегося кадра. Значение по умолчаниюNO
false
.Оператор импорта
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
, тогда выходные буферы получателя с помощью самого быстрого пикселя буферизуют атрибуты.Обсуждение
Эти наборы метода пиксельный буфер приписывает это клиенты, могут использовать для настройки размера и формата пикселя видеокадров, выведенных получателем. Когда словарь будет ненолем, получатель попытается к буферам выходного пикселя с помощью атрибутов, указанных в словаре. Ненулевой словарь также гарантирует что вывод
CVImageBuffer
aCVPixelBuffer
. Когда значение для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
установлен вYES
true
.Объявление
Objective C
- (void)captureOutput:(QTCaptureOutput *)
captureOutput
didDropVideoFrameWithSampleBuffer:(QTSampleBuffer *)sampleBuffer
fromConnection:(QTCaptureConnection *)connection
Обсуждение
Когда
automaticallyDropsLateVideoFrames
установлен вYES
true
, этот метод вызывают каждый раз, когда отбрасывается последний видеокадр. Этот метод вызывают один раз для каждого отброшенного кадра и можно вызвать перед вызовом к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 *)
captureOutput
didOutputVideoFrame:(CVImageBufferRef)videoFrame
withSampleBuffer:(QTSampleBuffer *)sampleBuffer
fromConnection:(QTCaptureConnection *)connection
Обсуждение
Делегаты получают это сообщение каждый раз, когда выходные распаковки и выводят новый видеокадр. Делегаты могут использовать предоставленный видеокадр для пользовательского предварительного просмотра или для дальнейшей обработки изображений. Делегаты не должны предполагать, что этот метод вызовут на основном потоке. Кроме того, этот метод периодически вызывают, таким образом, должно быть эффективно предотвратить проблемы производительности получения.
Специальные замечания
Для быстрого предъявления претензий в отношении ресурсов памяти, после этого метода возвраты, демонстрационные данные, содержавшие в
QTSampleBuffer
объект будет выпущен с помощьюdecrementSampleUseCount
метод. Клиенты, ссылающиеся на демонстрационный буфер и интересующиеся демонстрационными данными, что это содержит после этого метода возвраты, должны вызватьincrementSampleUseCount
на демонстрационном буфере в этом методе, чтобы гарантировать, что данные остаются допустимыми, пока им больше не нужен он (в котором времени они должны вызватьdecrementSampleUseCount
). Клиенты, ссылающиеся на демонстрационный буфер после этого метода возвраты, но только нуждающиеся в доступе к его метаданным, таким как продолжительность, время представления и другие атрибуты, не должны вызыватьincrementSampleUseCount
.Обратите внимание на то, что для поддержания оптимальной производительности некоторая выборка буферизует непосредственно ссылочные пулы памяти, которая, возможно, должна быть снова использована системой устройства и другими вводами получения. Это часто имеет место для несжатого собственного получения устройства, где блоки памяти копируются как можно меньше. Если многократные демонстрационные буферы сошлются на такие пулы памяти слишком долго, то вводы больше не будут в состоянии скопировать новые выборки в память, и те выборки будут отброшены. Если Ваше приложение заставляет выборки быть отброшенными, держась за демонстрационные данные для слишком долгого использования
incrementSampleUseCount
, но этому нужен доступ к демонстрационным данным в течение длительного периода времени, рассмотрите копирование данных в новый буфер и затем вызовdecrementSampleUseCount
на демонстрационном буфере так, чтобы память это сослалось, может быть снова использован.Оператор импорта
Objective C
@import QTKit;
Доступность
OS X v10.5 и позже.
Осуждаемый в OS X v10.9.