Установка ориентации видео с Основой AV
Q: Как я устанавливаю ориентацию видео с Основой AV?
A: Получение основы AV Можно установить желаемую ориентацию на a Используйте Перечисление 1 , Устанавливающее ориентацию для a В настоящее время, выводы получения Клиенты могут получить физически повернутый Точно так же Перечисление 2 , Устанавливающее ориентацию для a AVCaptureConnection
AVCaptureConnection указать, как Вы хотите изображения, ориентированные в AVCaptureOutput (AVCaptureMovieFileOutput, AVCaptureStillImageOutput и AVCaptureVideoDataOutput) для соединения.AVCaptureConnection supportsVideoOrientation свойство (getter= isVideoOrientationSupported) определить ли поддержка объектов, изменяющая ориентацию видео, и videoOrientation свойство, чтобы указать, как Вы хотите изображения, ориентированные в выходном порту. Вот фрагмент кода, показывающий, как установить ориентацию для a AVCaptureConnection к AVCaptureVideoOrientationLandscapeLeft:AVCaptureConnection.#import <AVFoundation/AVFoundation.h>
AVCaptureConnection *captureConnection = <#A capture connection#>;
if ([captureConnection isVideoOrientationSupported])
{ AVCaptureVideoOrientation orientation = AVCaptureVideoOrientationLandscapeLeft;
[captureConnection setVideoOrientation:orientation];
}
AVCaptureMovieFileOutput, AVCaptureStillImageOutput и AVCaptureVideoDataOutput
AVCaptureMovieFileOutput, AVCaptureStillImageOutput, и AVCaptureVideoDataOutput поддерживайте набор ориентации на AVCaptureConnection как показано в Перечислении 1. CVPixelBuffers в их AVCaptureVideoDataOutput -captureOutput:didOutputSampleBuffer:fromConnection: обратный вызов делегата. Все 4 AVCaptureVideoOrientation режимы поддерживаются, и вращение аппаратно ускорено. Для запроса буферного вращения клиент вызывает -setVideoOrientation: на AVCaptureVideoDataOutputвидео AVCaptureConnection как показано в Перечислении 1. AVCaptureVideoPreviewLayer
AVCaptureVideoPreviewLayer (CALayer подкласс), поддерживает a orientationSupported (getter=isOrientationSupported) свойство для определения, ли поддержки дисплея уровня, изменяющие ориентацию и a orientation свойство для установки ориентации уровня для видео, выведенного на экран, поскольку это получается устройством ввода данных. Вот фрагмент кода, показывающий, как установить ориентацию для a AVCaptureVideoPreviewLayer к AVCaptureVideoOrientationPortrait:AVCaptureVideoPreviewLayer.#import <AVFoundation/AVFoundation.h>
AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = <#A capture video preview layer#>;
if ([captureVideoPreviewLayer isOrientationSupported])
{ AVCaptureVideoOrientation orientation = AVCaptureVideoOrientationPortrait;
[captureVideoPreviewLayer setOrientation:orientation];
}
AVAssetWriter
Если Вы используете AVAssetWriter возразите для записи файла ролика, можно использовать transform свойство связанного AVAssetWriterInput указать ориентацию выходного файла. Это запишет, что дисплей преобразовывает свойство в выходной файл как предпочтительная трансформация визуальных данных носителей в целях дисплея. Посмотрите AVAssetWriterInput.h интерфейсный файл для подробных данных.
AVMutableComposition, AVMutableVideoComposition и AVAssetExportSession
AVMutableComposition
Если Вы используете AVMutableComposition для редактирования визуальных активов можно установить preferredTransform свойство на любом из видеотреков (AVMutableCompositionTrack).
AVMutableVideoComposition
Если Вы используете AVMutableVideoComposition для редактирования видеотреков в видео составе используйте AVMutableVideoCompositionLayerInstruction объект изменить преобразование для применения к данной дорожке в видео составе. Используйте setTransform:atTime: метод, чтобы установить значение преобразования за один раз в диапазоне времени инструкции или использовать setTransformRampFromStartTransform:toEndTransform:timeRange: метод для установки ската преобразования для применения во время данного диапазона времени.
Иначе, если Вы указываете AVAssetExportPresetPassthrough опция экспорта позволить всем дорожкам пройти, но Вы все еще хотите установить преобразование на составе, установить preferredTransform свойство на составе отслеживает, как описано выше.
История версии документа
| Дата | Примечания |
|---|---|
| 29.04.2013 | Обновленный для включения информации о AVMutableComposition, AVMutableVideoComposition и AVAssetExportSession. |
| 24.01.2013 | Добавленная информация о физическом вращении CVPixelBuffers в AVCaptureVideoDataOutput-captureOutput:didOutputSampleBuffer:fromConnection: обратный вызов делегата. |
| 29.06.2011 | Новый документ, описывающий, как установить ориентацию видео с Основой AV. |