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 и позже.
