July 15, 2022

Что такое DCP?

DCP (или Digital Cinema Packages) — довольно специализированная форма распространения фильмов и видео для цифрового кино. Акцент этого формата делается на высокое разрешение и высокое качество — поддержка фильмов до 4k, закодированных с помощью кодека JPEG2000.

В подавляющем большинстве случаев вы захотите взять готовый фильм и преобразовать его в DCP для распространения в кинотеатрах, на кинофестивалях и т.д. Однако в нескольких случаях у меня была необходимость не делать перекодирование.

Я должен пояснить, что описанный здесь процесс предназначен только для незашифрованных/незащищенных DCP. Очевидно, что этот процесс не предназначен для преобразования полнометражных блокбастеров в формат H.264 для вашей домашней коллекции фильмов. Это чрезвычайно полезно при подготовке контента для различных кинофестивалей, особенно когда нам нужно создать нашу церемонию награждения или демонстрационные ролики, рекламирующие расписание фильмов, и когда нет другой HD-копии фильма.

Преобразование DCP в более распространенный видеоформат, такой как Quicktime ProRes, — это очень простой одношаговый процесс, но он включает в себя некоторую навигацию по папкам DCP и сумасшедшим именам файлов. Типичная папка DCP обычно содержит файлы, которые выглядят примерно так:

Файлы ASSETMAP, VOLINDEX и .xml используются для описания контента и помогают системам цифрового кинотеатра правильно импортировать, индексировать и воспроизводить фильмы. Но что нас действительно интересует, так это два файла .mxf.

Вы заметите два файла, оканчивающихся на «_vid.mxf» и «_aud.mxf». Это видео- и аудиопотоки, которые мы будем использовать для преобразования в Quicktime. В приведенном выше примере вы заметите, что эти два файла начинаются с «jp2k_» и «wav_» соответственно. Это говорит нам о том, что видео находится в формате JPEG2000, а аудио — в стандартном несжатом формате WAV.

Прелесть ffmpeg заключается в том, что теперь нам больше не нужно беспокоиться о том, что это за форматы, или даже о том, в каком цветовом пространстве находится исходный материал. ffmpeg обнаружит и автоматически преобразует для нас.

(Да, это правильно: последняя версия ffmpeg автоматически преобразует цветовое пространство XYZ в RGB!)

Теперь к делу:

  • Откройте Терминал или командную строку на вашем компьютере.
  • Перейдите к папке DCP, которую вы хотите преобразовать.
  • Теперь запустите ffmpeg со следующими настройками:

ffmpeg -i "имя_файла_vid.mxf" -i "имя_файла_aud.mxf" -c:v prores -c:a копия "имя_выходного_файла.mov"

  • …а теперь наберитесь терпения. Декодирование JPEG2000 и преобразование цветов XYZ->RGB — медленный процесс!

Приведенная выше команда преобразует DCP с помощью кодека «prores» и просто копирует аудиоданные. Причина, по которой нам не нужно передавать какие-либо другие настройки, заключается в том, что ffmpeg всегда пытается делать правильные вещи. В этом случае ffmpeg определил цветовое пространство DCP как XYZ:

… и что формат, в который мы пытаемся преобразовать, поддерживает только цветовое пространство RGB (или, в данном случае, YUV 4:2:2):

Таким образом, ffmpeg заполняет пробелы и применяет преобразование цвета. Умно, да?

Однако эта команда многого не делает. Он не выполняет никакого масштабирования или преобразования частоты кадров. Основная цель состоит в том, чтобы преобразовать DCP в формат, понятный большинству систем редактирования.

Другим важным предостережением этого метода является то, что процесс преобразования, особенно часть цветового пространства, довольно грубый. Этого достаточно, чтобы вытащить вас из ямы в 11 часов во время кинофестиваля, но это не то, что вы хотели бы использовать в своем повседневном рабочем процессе.

Но, надеюсь, этого поста достаточно, чтобы вы начали.

Примечания по кодированию ProRes

Эта статья была задумана только как доказательство концепции, а не как пошаговое руководство, но стоит указать на несколько дополнительных вещей:

Кодек Apple ProRes 422, используемый в приведенном выше примере, не обязательно является лучшим форматом для обеспечения максимальной точности в цветовом пространстве RGB. Лучшим выбором будет ProRes 4444, способный хранить 10-битные значения цвета RGB при полном разрешении. Хотя размеры файлов будут больше, чем в формате ProRes 422, вы все равно выиграете от гибкости и производительности редактирования, которые дает кодек ProRes.

Кодировщик ProRes от ffmpeg не поддерживает ProRes 4444 (пока)… но его вариант поддерживает. Вам нужно будет использовать эту команду, если вы хотите сгенерировать файлы ProRes 4444:

ffmpeg -i [filenamefor_vid.mxf] -i [filenamefor_aud.mxf] -c:v libx264 -pix_fmt yuv420p -profile slow -crf 21 -ac 2 outputFilename.mp4

Вы даже можете масштабировать DCP до более удобного размера для ПК / iPad, добавив фильтр масштабирования:

ffmpeg -i [filenamefor_vid.mxf] -i [filenamefor_aud.mxf] -c:v libx264 -pix_fmt yuv420p -vf "scale=-1:720" -profile slow -crf 21 -ac 2 outputFilename.mp4

Этот фильтр будет уменьшать разрешение до 720p.

В обоих вышеприведенных примерах предполагается, что стереозвук достаточно хорош для просмотра на ПК, но существует множество примеров, которые помогут вам в сложных манипуляциях со звуком.

Сопоставление аудиоканалов

Можно изменить проблему при простом копировании аудиопотока из INTEROP DCP, заключающуюся в том, что сопоставление каналов не соответствует стандартному отображению Dolby 5.1. Включая команду ffmpeg, которая автоматически переназначает звук во время процесса кодирования.

Перекодировать в формат DCP можно в студии TVPRO