AVVideoCompositing
AVVideoCompositing
протокол определяет свойства и методы, которые должны реализовать пользовательские видео наборщики.
Для каждого объекта Основы AV класса AVPlayerItem
, AVAssetExportSession
, AVAssetImageGenerator
, или AVAssetReaderVideoCompositionOutput
это имеет не -nil
значение для videoComposition
свойство и значение customVideoCompositorClass
свойство AVVideoComposition
не nil
, Основа AV создает и использует экземпляр того пользовательского видео класса наборщика для обработки инструкций, содержавшихся в AVVideoComposition
.
Когда Вы присвоитесь, пользовательский видео экземпляр наборщика будет создаваться videoComposition
экземпляр AVVideoComposition
это связано с различным пользовательским видео классом наборщика, чем объект ранее использовал.
При создании экземпляров пользовательских видео наборщиков Основа AV инициализирует их путем вызова init
и затем делает их доступными как значение customVideoCompositor
свойство объекта, которому это было присвоено. Тогда можно сделать любую дополнительную установку или конфигурацию пользовательскому наборщику.
Пользовательские видео экземпляры наборщика будут тогда сохранены AV Foundation
возразите столько, сколько значение videoComposition
свойство указывает, что экземпляр того же пользовательского видео класса наборщика должен использоваться, даже если значение изменяется от одного экземпляра AVVideoComposition
к другому экземпляру это связано с тем же пользовательским видео классом наборщика.
Наследование
Не применимый
Оператор импорта
Swift
import AVFoundation
Objective C
@import AVFoundation;
Доступность
Доступный в OS X v10.9 и позже.
-
Инициализирует экземпляр класса, реализующего протокол составления композита видео. (требуемый)
Объявление
Swift
init()
Objective C
- (instancetype)init
Возвращаемое значение
Инициализированный экземпляр класса, реализовывая протокол.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в OS X v10.0 и позже.
-
Направляет пользовательский видео объект наборщика создать новый пиксельный буфер, составленный асинхронно из набора источников. (требуемый)
Объявление
Swift
func startVideoCompositionRequest(_
asyncVideoCompositionRequest
: AVAsynchronousVideoCompositionRequest!)Objective C
- (void)startVideoCompositionRequest:(AVAsynchronousVideoCompositionRequest *)
asyncVideoCompositionRequest
Параметры
asyncVideoCompositionRequest
Экземпляр
AVAsynchronousVideoCompositionRequest
это обеспечивает контекст для требуемого состава.Обсуждение
Пользовательский наборщик, как ожидают, вызовет, или впоследствии или сразу,
asyncVideoCompositionRequest
объектfinishWithComposedVideoFrame:
илиfinishWithError:
методы.Если Вы намереваетесь закончить представлять кадр после обработки этого сообщения возвраты, необходимо сохранить
asyncVideoCompositionRequest
пока состав не закончен.Обратите внимание на то, что, если реализация пользовательским наборщиком этого метода возвращается, не закончив состав сразу, это может быть вызвано снова с другим запросом состава, прежде чем будет закончен предшествующий запрос; в таких случаях пользовательский наборщик должен быть подготовлен управлять многократными запросами состава.
Если представленный кадр является точно тем же как одним из исходных кадров, без добавления черных полос сверху и снизу, pillboxing или необходимой обрезки, то пиксельный буфер соответствующего источника может быть возвращен, после
CFRetain
был вызван на нем).Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.
-
Направляет пользовательский видео объект наборщика отменить или закончить все незаконченные видео запросы состава.
Объявление
Swift
optional func cancelAllPendingVideoCompositionRequests()
Objective C
- (void)cancelAllPendingVideoCompositionRequests
Обсуждение
После получения этого сообщения пользовательский видео наборщик должен блокировать, пока это или не отменило все незаконченные запросы кадра и вызвало
finishCancelledRequest
метод для каждого из них. Если отмена не возможна, метод должен блокировать, пока это не закончило обрабатывать всех кадров и вызвалоfinishWithComposedVideoFrame:
метод для каждого из них.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.
-
Вызванный, чтобы уведомить пользовательского наборщика, что состав переключится на различный контекст рендеринга. (требуемый)
Объявление
Swift
func renderContextChanged(_
newRenderContext
: AVVideoCompositionRenderContext!)Objective C
- (void)renderContextChanged:(AVVideoCompositionRenderContext *)
newRenderContext
Параметры
newRenderContext
Новый контекст рендеринга, который будет обрабатывать видео состав.
Обсуждение
Экземпляры классов, реализовывая
AVVideoComposting
протокол должен реализовать этот метод, который будет уведомлен когдаAVVideoCompositionRenderContext
экземпляр, вручающий видео состав, изменяется.AVVideoCompositionRenderContext
экземпляры, являющиеся неизменным, такое изменение произойдет каждый раз, когда существует изменение в видео параметрах состава.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.
-
requiredPixelBufferAttributesForRenderContext requiredPixelBufferAttributesForRenderContext
СвойствоВозвращает пиксельные буферные атрибуты, требуемые видео наборщиком для новых буферов, создаваемых для обработки. (требуемый) (только для чтения)
Объявление
Swift
var requiredPixelBufferAttributesForRenderContext: [NSObject : AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSDictionary *requiredPixelBufferAttributesForRenderContext
Обсуждение
Свойство требуется, чтобы обеспечивать a
kCVPixelBufferPixelFormatTypeKey
введите словарь, вместе с атрибутами, на которые наборщику нужны определенные значения для работы должным образом. Опущенные атрибуты будут предоставлены механизмом состава для обеспечения лучшей производительности. Если атрибутkCVPixelBufferPixelFormatTypeKey
ключ не находится в словаре, исключение будет повышено. ЗначениеkCVPixelBufferPixelFormatTypeKey
массивkCVPixelFormatType_*
константы, как определено вPixel_Format_Types
.Значение
requiredPixelBufferAttributesForRenderContext
получен до создания нового контекста рендеринга; комбинация атрибутов в возвращенном значении и дополнительных атрибутов, предоставленных механизмом состава, будет использоваться в создании последующего pixelBuffers контекста рендеринга.Это свойство запрашивается однажды, любой запрос состава отправлен наборщику. Изменение требуемых буферных атрибутов впоследствии не поддерживается.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает виды пиксельных буферных атрибутов исходного кадра, которые видео наборщик может принять как ввод. (требуемый) (только для чтения)
Объявление
Swift
var sourcePixelBufferAttributes: [NSObject : AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSDictionary *sourcePixelBufferAttributes
Обсуждение
Свойство требуется, чтобы обеспечивать a
kCVPixelBufferPixelFormatTypeKey
введите словарь, вместе с атрибутами, на которые наборщику нужны определенные значения для работы должным образом. Опущенные атрибуты будут предоставлены механизмом состава для обеспечения лучшей производительности. Если атрибутkCVPixelBufferPixelFormatTypeKey
ключ не находится в словаре, исключение будет повышено. ЗначениеkCVPixelBufferPixelFormatTypeKey
массивkCVPixelFormatType_*
константы, как определено вPixel_Format_Types
.Если пользовательский наборщик предназначается, чтобы использоваться с
AVVideoCompositionCoreAnimationTool
создаваемое использованиеvideoCompositionCoreAnimationToolWithAdditionalLayer:asTrackID:
метод,kCVPixelFormatType_32BGRA
должен быть включен как один из поддерживаемых типов формата пикселя.Без вести пропавшие атрибутов будут установлены механизмом состава в значения, позволяющие лучшую производительность.
Это свойство запрашивается однажды, любой запрос состава отправлен наборщику. Изменение исходных буферных атрибутов впоследствии не поддерживается.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.