Видео управление цветом в основе AV и QTKit
Этот technote обсуждает видео управление цветом, предоставленное Основой AV и QTKit на OS X Lion и Mac OS X v10.6 и как использовать в своих интересах его в Вашем приложении.
Введение
QuickTime X предоставляет мощные услуги для управления основанными на времени носителями, разрешения Вам добавить воспроизведение аудио и воспроизведение видео, получение и кодирование возможностей к Вашему приложению. Это предлагает оптимизированную поддержку современных кодеков, поставляет более эффективное воспроизведение носителей и включает ускоренный GPU, цвет управлял видео конвейером, все доступные от Основы AV и QTKit.
GPU ускоренный, цветной управляемый видео конвейер
И Основа AV и QTKit автоматически применяют управление цветом к видео во время воспроизведения. Используя значения, сохраненные в профиле дисплея Вашего Mac, ColorSync создает преобразование цвета, обеспечивающее перцепционное соответствие между известным цветовым пространством широковещательного видео и определенной цветностью и гамма характеристиками Вашего дисплея. Это преобразование цвета применяется к каждому кадру GPU, поскольку это воспроизводится на экране.
Кроме того, платформа Основы AV автоматически применяет управление цветом к видео на обоих вводах и выводах. На вводе это гарантирует, что носители декодируются к пиксельному буферу, правильно тегирующемуся с цветовым пространством, описывающим его. На выводе это выполнит любое необходимое преобразование цветов от цветового пространства исходного содержания к, который требуют от вывода.
'nclc': структурированный способ тегировать видео цвет
По историческим причинам существует много перестановок цветовых пространств широковещательного видео. Следовательно, необходимо для автора гарантировать, что файлы QuickTime тегируются с надлежащей информацией о цвете, описывающей, как было создано содержание.
Фильмы в формате QuickTime поддерживают‘nclc’механизм тегирования цвета, определяющий три ключевых видео параметра:
Основные устройства
Функция передачи
Матрица преобразования
Эти параметры используются ColorSync для генерации одного из следующих видео цветовых пространств:
HD (Rec. 709)
SD (SMPTE-C)
SD (PAL)
Вот наиболее распространенные примеры'nclc'теги и эквивалент AVVideoColorPropertiesKey ключевые константы (см. Перечисление 1):
параметры 'nclc' | Формат видеосигнала | Константы ключа AVVideoColorPropertiesKey для AVVideoColorPrimariesKey, AVVideoTransferFunctionKey, AVVideoYCbCrMatrixKey |
|---|---|---|
1-1-1 | HD (Rec. 709) | AVVideoColorPrimaries_ITU_R_709_2, AVVideoTransferFunction_ITU_R_709_2, AVVideoYCbCrMatrix_ITU_R_709_2 |
6-1-6 | SD (SMPTE-C) | AVVideoColorPrimaries_SMPTE_C, AVVideoTransferFunction_ITU_R_709_2, AVVideoYCbCrMatrix_ITU_R_601_4 |
5-1-6 | SD (PAL) | AVVideoColorPrimaries_EBU_3213, AVVideoTransferFunction_ITU_R_709_2, AVVideoYCbCrMatrix_ITU_R_601_4 |
'nclc'тег является частью 'colr' расширение описания изображения. Для получения дальнейшей информации о'nclc'тег и 'colr' расширение описания изображения, посмотрите QuickTime - Буквы к Ледяной Отгрузке Плавучей льдины 19, Несжатое Видео Y'CbCr в Файлах QuickTime.
Работа с тегом 'nclc'
Средство поиска 'Добирается, Информация' Команда показывает Цветовые профили
Возможно показать цветовой профиль для медиа-файла с помощью Команды для получения информации Средства поиска. Просто выберите файл в Средстве поиска, затем выберите File-> Get Info. В «Большем количестве Информации»: раздел Вы будете видеть информацию о цветовом профиле.

Добавьте Цветовой профиль, Действие Automator Упрощает Тегировать Видеоконтент
Существует Добавить Цветовой профиль Действие Automator, которое может добавить‘nclc’окрасьте тег к существующим фильмам в формате QuickTime.


Можно использовать Добавить Цветовой профиль Действие Automator для создания Потока операций Automator для добавления‘nclc’окрасьте тег к существующим фильмам в формате QuickTime.
Очень просто установить использование Потока операций Automator Automator. Это особенно важно для старого содержания, которое не маркировано, довольно, что это прибывает из внешнего источника или чего-либо еще, что неправильно тегируется.
Для получения информации об использовании приложения Automator для создания Потока операций Automator выберите Help in Automator или Help> Mac Help в Средстве поиска и ищите «Automator». Для получения информации о создании действий Automator см. Руководство по программированию Automator и Ссылку Платформы Automator.
Как программно тегировать носители с тегом 'nclc'
Создание носителей и Редактирование
При работе с Основой AV, AVAssetWriter объект используется, чтобы записать или транскодировать данные носителей к новому файлу указанного аудиовизуального контейнерного типа. Необходимо всегда явно указывать желаемое выходное цветовое пространство с помощью AVVideoColorPropertiesKey словарь. Основа AV автоматически обеспечит цветное соответствие, преобразовывающее каждый пиксель от пространства исходного цвета до целевого цветового пространства.
Вот код для указания видео цветового пространства при записи носителей с AVAssetWriter:
Перечисление 1 , Указывающее видео цветовое пространство при записи носителей с AVAssetWriter.
#import <Foundation/Foundation.h> |
#import <AVFoundation/AVFoundation.h> |
NSMutableDictionary *compressionSettings = NULL; |
compressionSettings = [NSMutableDictionary dictionary]; |
/* |
Specify the HD output color space for the video color properties |
key (AVVideoColorPropertiesKey). During export, AV Foundation |
will perform a color match from the input color space to the HD |
output color space. |
(If you require SD colorimetry, use AVVideoColorPrimaries_SMPTE_C, |
AVVideoTransferFunction_ITU_R_709_2, and AVVideoYCbCrMatrix_ITU_R_601_4.) |
*/ |
[compressionSettings setObject:AVVideoColorPrimaries_ITU_R_709_2 |
forKey:AVVideoColorPrimariesKey]; |
[compressionSettings setObject:AVVideoTransferFunction_ITU_R_709_2 |
forKey:AVVideoTransferFunctionKey]; |
[compressionSettings setObject:AVVideoYCbCrMatrix_ITU_R_709_2 |
forKey:AVVideoYCbCrMatrixKey]; |
/* Create settings for encoding the media. */ |
NSDictionary* videoOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys:AVVideoCodecH264, AVVideoCodecKey, |
AVVideoScalingModeResize, AVVideoScalingModeKey, |
[NSNumber numberWithInt:1280], AVVideoWidthKey, |
[NSNumber numberWithInt:720], AVVideoHeightKey, |
compressionSettings, AVVideoColorPropertiesKey, |
nil]; |
/* Create new input to receive sample buffers for writing to the output file. */ |
AVAssetWriterInput* videoInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoOutputSettings]; |
AVAssetWriter *assetWriter = <#Your AVAssetWriter object#>; |
[assetWriter addInput:videoInput]; |
/* ...begin writing your media */ |
BOOL success = [assetWriter startWriting]; |
... |
AVAssetExportSession объект может также использоваться, чтобы записать или транскодировать данные носителей для создания нового файла типа, описанного одной из предварительных установок средства экспорта. Например, можно создать фильм для использования на iPod, iPhone или Apple TV. Для создания фильма для использования на одном из этих устройств укажите желаемое средство экспорта устройства с помощью доступных предварительных установок экспорта (AVAssetExportPresetAppleM4VAppleTV, AVAssetExportPresetAppleM4ViPod, и т.д.). Посмотрите AVAssetExportSession класс.
Эти средства экспорта все выполняют колориметрическим образом корректный экспорт при преобразовании между различными цветовыми пространствами. Это означает, существует ли преобразование цветового пространства, видео должным образом тегируется с'nclc'тег.
При работе с QTKit можно использовать QTKit writeToFile: withAttributes: метод для экспорта QTMovie возражает для использования на iPod, iPhone или Apple TV. Средства экспорта QTKit для iPod, iPhone или Apple TV все выполняют колориметрическим образом корректный экспорт при преобразовании между HD и SD (в любом направлении). Это означает, существует ли преобразование цветового пространства не, только надлежащая используемая трансформация, но и видео должным образом тегируется также.
Например, если у Вас есть Rec. 709 исходного содержания HD, которое требуется экспортировать в Apple TV, управление цветом средства экспорта Apple TV, сохранит источник правильно - никакое преобразование не необходимо. Точно так же при экспорте того же самого исходного содержания в iPod или iPhone преобразование от HD до SD выполняется, и значения цвета корректируются соответственно.
Посмотрите, что Техническое примечание TN2188 Экспортирует Фильмы для iPod, Apple TV и Перечисления 4 iPhone для фрагмента кода, показывающего, как использовать QTKit для экспорта в iPhone.
Работа с базовым изображением
При использовании Базового Изображения вместе с QuickTime и Визуальными Контекстами можно также установить пространство цвета вывода для
Получение от камеры
В настоящее время, когда Вы получаете с экрана с Основой AV существует автоматическое преобразование цветов к цветовому пространству HD. Если Вы получаете от камеры, драйвер камеры присваивает цветной тег полученным кадрам, описывающий цветовое пространство камеры.
Если Вы используете AVCaptureMovieFileOutput метод для сохранения кадров получил от экрана до файла, они будут автоматически тегированы с цветовым профилем HD, и кадры, полученные от камеры, будут тегированы драйвером камеры с цветовым профилем, описывающим цветовое пространство камеры.
Архитектура Получения QTKit запросит камеру для определения, какое цветовое пространство это использует, и удостоверьтесь что'nclc'информация используется полностью через конвейер получения. Это гарантирует, что предварительные просмотры к дисплею корректны, а также любое сжатие и экспортируют операции с помощью средств экспорта устройства с получающимся фильмом, тегированным соответственно.
Заключение
Основа AV и платформы QTKit автоматически применяют управление цветом к видео во время воспроизведения. Чтобы гарантировать, что надлежащее управление цветом применяется, необходимо тегировать содержание. Новое действие Automator упрощает тегировать существующие фильмы в формате QuickTime. Можно также использовать Основу AV, чтобы программно тегировать содержание при записи или транскодировании носителей к файлу или QTKit при использовании средств экспорта устройства. Кроме того, можно указать цветной тег при использовании Базового Изображения с QuickTime и визуальными контекстами.
История версии документа
| Дата | Примечания |
|---|---|
| 02.11.2011 | Новый документ, описывающий Видео управление цветом в Основе AV и QTKit. |