AVCaptureVideoDataOutput
Наследование
-
NSObject
-
AVCaptureOutput
-
AVCaptureVideoDataOutput
-
NSObject
-
AVCaptureOutput
-
AVCaptureVideoDataOutput
Оператор импорта
Swift
import AVFoundation
Objective C
@import AVFoundation;
Доступность
Доступный в iOS 4.0 и позже.
AVCaptureVideoDataOutput
конкретный подкласс AVCaptureOutput
Вы используете, чтобы обработать несжатые кадры от видео, получаемого или получить доступ к сжатым кадрам.
Экземпляр AVCaptureVideoDataOutput
производит видеокадры, можно обработать использование других носителей APIs. Можно получить доступ к кадрам с captureOutput:didOutputSampleBuffer:fromConnection:
метод делегата.
-
videoSettings
СвойствоНастройки сжатия для вывода.
Объявление
Swift
var videoSettings: [NSObject : AnyObject]!
Objective C
@property(nonatomic, copy) NSDictionary *videoSettings
Обсуждение
Словарь содержит значения для ключей настроек сжатия, определенных в
Video Settings
, или пиксельный буфер приписывает ключи, определенные вCVPixelBufferRef
. Единственный ключ, в настоящее время поддерживаемый,kCVPixelBufferPixelFormatTypeKey
ключ.Получить возможные значения для поддерживаемых видео форматов пикселя (
kCVPixelBufferPixelFormatTypeKey
) и форматы видеокодека (AVVideoCodecKey
), посмотритеavailableVideoCVPixelFormatTypes
иavailableVideoCodecTypes
соответственно.Для получения выборок в их собственном формате устройства установите это свойство в
nil
:AVCaptureVideoDataOutput *myVideoOutput; // assume this exists
myVideoOutput.videoSettings = nil; // receives samples in device format
Если Вы устанавливаете это свойство в
nil
и затем впоследствии запросите его, Вы получаете словарь, отражающий настройки, используемые текущими сеансами полученияsessionPreset
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.0 и позже.
-
Минимальная продолжительность кадра.
Оператор осуждения
Используйте
AVCaptureConnection
классvideoMinFrameDuration
свойство вместо этого.Объявление
Objective C
@property(nonatomic) CMTime minFrameDuration
Обсуждение
Это свойство указывает минимальную продолжительность каждого видеокадра, выведенного получателем, помещая нижнюю границу в количество времени, которое должно разделить последовательные кадры. Это эквивалентно инверсии максимальной частоты кадров. Значение
kCMTimeZero
илиkCMTimeInvalid
указывает неограниченную максимальную частоту кадров.Значение по умолчанию
kCMTimeInvalid
.Оператор импорта
Objective C
@import AVFoundation;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 5.0.
-
alwaysDiscardsLateVideoFrames
СвойствоУказывает, отбрасываются ли видеокадры, если они поступают поздно.
Объявление
Swift
var alwaysDiscardsLateVideoFrames: Bool
Objective C
@property(nonatomic) BOOL alwaysDiscardsLateVideoFrames
Обсуждение
Когда значение этого свойства
YES
true
, объект сразу отбрасывает кадры, полученные, в то время как очередь отгрузки, обрабатывающая существующие кадры, блокируется вcaptureOutput:didOutputSampleBuffer:fromConnection:
метод делегата.Когда значение этого свойства
NO
false
, делегатам разрешают больше времени для обработки старых кадров, прежде чем новые кадры будут отброшены, но использование памяти приложения может увеличиться значительно в результате.Значение по умолчанию
YES
true
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.0 и позже.
-
recommendedVideoSettingsForAssetWriterWithOutputFileType (_:) - recommendedVideoSettingsForAssetWriterWithOutputFileType:
Указывает рекомендуемые настройки для использования с AVAssetWriterInput.
Объявление
Swift
func recommendedVideoSettingsForAssetWriterWithOutputFileType(_
outputFileType
: String!) -> [NSObject : AnyObject]!Objective C
- (NSDictionary *)recommendedVideoSettingsForAssetWriterWithOutputFileType:(NSString *)
outputFileType
Параметры
outputFileType
Указывает UTI типа файла, который будет записан. Посмотрите
File Format UTIs
для поддерживаемых типов.Возвращаемое значение
Полностью заполненный словарь ключей и значений, которые совместимы с
AVAssetWriter
.Обсуждение
Значение этого свойства
NSDictionary
содержа значения для ключей настроек сжатия, определенных вVideo Settings
.Этот словарь подходит для использования в качестве
outputSettings
параметр при созданииAVAssetWriterInput
следующим образом:[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:outputSettings sourceFormatHint:hint];
Словарь возвратился, содержит все необходимые ключи и оценивает необходимый
AVAssetWriter
. ПосмотритеAVAssetWriterInput
классinitWithMediaType:outputSettings:
метод для более подробно обсуждения.Для фильма в формате QuickTime и типов файлов ISO, рекомендуемые параметры видео произведут вывод, сопоставимый с тем из
AVCaptureMovieFileOutput
.Обратите внимание на то, что словарь настроек зависит от текущей конфигурации получателя
AVCaptureSession
и его вводы. Словарь настроек может измениться если изменения конфигурации сеанса. Также, сконфигурируйте свой сеанс сначала, затем запросите рекомендуемые параметры видео.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 7.0 и позже.
-
availableVideoCVPixelFormatTypes
СвойствоУказывает поддерживаемые видео форматы пикселя, которые могут быть указаны в
videoSettings
. (только для чтения)Объявление
Swift
var availableVideoCVPixelFormatTypes: [AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSArray *availableVideoCVPixelFormatTypes
Обсуждение
Значение этого свойства является массивом
NSNumber
объекты можно использовать в качестве значений дляkCVPixelBufferPixelFormatTypeKey
вvideoSettings
свойство. Первый формат в возвращенном списке является самым эффективным выходным форматом.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 5.0 и позже.
См. также
-
availableVideoCodecTypes
СвойствоУказывает поддерживаемые форматы видеокодека, которые могут быть указаны в
videoSettings
. (только для чтения)Объявление
Swift
var availableVideoCodecTypes: [AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSArray *availableVideoCodecTypes
Обсуждение
Значение этого свойства является массивом
NSString
объекты можно использовать в качестве значений дляAVVideoCodecKey
вvideoSettings
свойство. Первый формат в возвращенном списке является самым эффективным выходным форматом.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 5.0 и позже.
-
Устанавливает демонстрационного буферного делегата и очередь, на которую должны быть вызваны обратные вызовы.
Объявление
Swift
func setSampleBufferDelegate(_
sampleBufferDelegate
: AVCaptureVideoDataOutputSampleBufferDelegate!, queuesampleBufferCallbackQueue
: dispatch_queue_t!)Objective C
- (void)setSampleBufferDelegate:(id<AVCaptureVideoDataOutputSampleBufferDelegate>)
sampleBufferDelegate
queue:(dispatch_queue_t)sampleBufferCallbackQueue
Параметры
sampleBufferDelegate
Объект, соответствующий
AVCaptureVideoDataOutputSampleBufferDelegate
протокол, который получит демонстрационные буферы после того, как они будут получены.sampleBufferCallbackQueue
Очередь, на которую должны быть вызваны обратные вызовы. Необходимо использовать последовательную очередь отгрузки, чтобы гарантировать, что видеокадры будут поставлены в порядке.
sampleBufferCallbackQueue параметр может не быть
NULL
, кроме тех случаев, когда установкаsampleBufferDelegate
кnil
.Обсуждение
Когда новый видео демонстрационный буфер получен, он отправляется демонстрационному буферному делегату, использующему
captureOutput:didOutputSampleBuffer:fromConnection:
. Все методы делегата вызываются на указанную очередь отгрузки.Если очередь будет блокирована, когда новые кадры будут получены, то те кадры будут автоматически отброшены за один раз определенные значением
alwaysDiscardsLateVideoFrames
свойство. Это позволяет Вам обрабатывать существующие кадры на той же очереди, не имея необходимость управлять потенциальными увеличениями использования памяти, которые иначе произошли бы, когда та обработка неспособна не отставать от уровня входящих кадров.Если Ваша обработка кадра последовательно неспособна не отставать от уровня входящих кадров, необходимо рассмотреть использование
minFrameDuration
свойство, которое будет обычно приводить к лучшим показателям производительности и большему количеству непротиворечивых частот кадров, чем одно только отбрасывание кадра.Если необходимо минимизировать возможности отбрасываемых кадров, необходимо указать очередь, на которой достаточно мелкая сумма обработки делается за пределами получения демонстрационных буферов. Однако при миграции дополнительной обработки на другую очередь Вы ответственны за обеспечение, что использование памяти не растет без связанного от необработанных кадров.
Специальные замечания
Этот метод использование
dispatch_retain
иdispatch_release
управлять очередью.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.0 и позже.
-
sampleBufferDelegate
СвойствоДелегат объекта получения. (только для чтения)
Объявление
Swift
var sampleBufferDelegate: AVCaptureVideoDataOutputSampleBufferDelegate! { get }
Objective C
@property(nonatomic, readonly) id< AVCaptureVideoDataOutputSampleBufferDelegate > sampleBufferDelegate
Обсуждение
Делегат получает демонстрационные буферы после того, как они будут получены.
Вы устанавливаете делегата, использующего
setSampleBufferDelegate:queue:
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.0 и позже.
-
sampleBufferCallbackQueue
СвойствоОчередь, на которую обратные вызовы делегата должны быть вызваны (только для чтения)
Объявление
Swift
var sampleBufferCallbackQueue: dispatch_queue_t! { get }
Objective C
@property(nonatomic, readonly) dispatch_queue_t sampleBufferCallbackQueue
Обсуждение
Вы устанавливаете использование очереди
setSampleBufferDelegate:queue:
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.0 и позже.