Автор: Владимир Климов, ведущий специалист по технологии стерео кино и стерео телевидения
Зачем нужен цифровой 3D кинопакет?
Кто из видеолюбителей не мечтал увидеть свой фильм на “большом” экране, в настоящем кинотеатре! Казалось бы, в наш век цифровых технологий, когда в кинотеатрах крутят фильмы с жёстких дисков через видеопроектор, никаких технических трудностей быть не должно – договорился со знакомым киномехаником, принёс своё видео на флешке, и смотри.
Но не всё так просто. Это у себя дома на проекторе вы можете смотреть всё, что угодно. “Большое” кино – это бизнес. Поэтому мощный профессиональный видеопроектор требует, чтобы видео было упаковано в соответствии с определённым техническим стандартом, который называется DCP – Digital Cinema Package, или, в переводе на русский “цифровой кино-пакет”. Фильмы в виде зашифрованных DCP-пакетов предоставляются кинотеатрам на специальных жёстких дисках (как правило, CRU DX115, разработанных изначально для армейских нужд и отформатированных под файловую систему сервера – Linux EXT2 или EXT3, хотя, иногда встречаются NTFS и FAT32), при этом без специального файла (“ключа”) с 128-битным шифрованием стандарта AES в режиме CBC, проиграть их невозможно. Так фильмопроизводящие студии защищают свои финансовые интересы.
Зато рекламные ролики не шифруются, а наоборот, предоставляются всем бесплатно. Цифровой ключ для них не нужен, а во всём остальном это такой же DCP-пакет. И мы свой любительский фильм тоже не будем шифровать, чтобы каждый, кто хочет, смог его просмотреть на “большом” экране.
Какая польза от того, что вы научитесь делать незашифрованный кинопакет? Если какая-то компания-дистрибьютор заинтересуется вашим любительским фильмом, технических проблем с подготовкой фильма к коммерческому прокату будет меньше. Правильно подготовленные исходные видеоматериалы для незашифрованного кинопакета в дальнейшем легко будет использовать для создания зашифрованного.
Кроме того, принимая участие в кинофестивале и своевременно предоставив свой фильм в профессиональном формате, вы сможете рассчитывать на уважительное отношение к своей работе.
Наконец, можно снять рекламный ролик для какой-нибудь фирмы, желающей рекламировать свой товар в кинотеатрах перед сеансами 3D фильмов. Такой ролик шифровать тоже нет смысла, наоборот, это фирма должна будет заплатить вам за съёмку и обработку, а кинотеатру – за прокрутку такого ролика.
Словом, смысл научиться делать цифровой кинопакет есть. Другое дело, что такая работа с использованием профессионального софта влетит в немалую денежку. Мы постараемся обойтись без расходов, но сначала нужно разобраться, с чем придётся иметь дело.
Что внутри кинопакета?
Кинопакет – это папка с файлами. Откроем её. Внутри четыре файла с расширением .xml и два файла с расширением .mxf . В одном файле с названием типа “name_.video.mxf” содержится изображение, а в другом файле с названием “name_.audio.mxf” содержится звук. Файлы .xml являются служебными.
Видеоконтент может хратиться в одной и более “бобинах киноплёнки”, то есть, в одном или нескольких файлах формата MXF. Каждая такая “бобина” хранит последовательность изображений в формате MPEG-2 или JPEG 2000, в зависимости от используемого кодека. На сегодняшний день стандарт MPEG-2 не поддерживает совместимость со спецификациями общепринятого в индустрии стандарта DCI (Digital Cinema Initiatives) v.1.2, хотя, по-прежнему поддерживается некоторыми системами. А JPEG 2000 остался единстенным стандартизированным форматом, используемым для сжатия видео для нужд цифрового кино.
Для формата SMPTE (JPEG 2000) приняты следующие стандартные скорости воспроизведения видео:
- 24, 25, 30, 48, 50 и 60 кадров в секунду (fps) для формата 2K
- 24, 25 и 30 кадров в секунду (fps) для формата 4K
- 24 и 48 кадров в минуту (fps) для стереоскопического 2K
Для цифрового кино максимально допустимыми являются форматы кадра до 2048х1080 для 2K и до 4096х2160 для 4K. Подмножество совместимых форматов для SMPTE (JPEG 2000) также включает:
- Широкий (Flat) – 1998х1080 или 3996х2160, соотношение сторон порядка 1.85:1
- Узкий (Scope) – 2048х858 или 4096х1716, соотношение сторон порядка 2.39:1
- HDTV – 1920х1080 или 3840х2160, с соотношением сторон 16:9
- Полный (Full) – 2048х1080 или 4096х2160 (официальное название в DCI – Full Container)
Кроме того, для видеоконтента в файлах MXF характерна 12-битная глубина цвета на пиксель (36 бит в сумме), цветовое пространство XYZ и максимальный битрейт до 250 Мбит/с (1,3 Мбайт на кадр для скорости 24 кадра в секунду).
Звуковые файлы MXF содержат “бобины”, соответствующие видео “бобинам” по количеству и продолжительности. В каждом файле в контейнере WAV хранится до 12 независимых звуковых дорожек в формате линейного PCM, с частотой сэмплирования 48 кГц или 96 кГц, с 24-битной точностью и линейным отображением.
В разметочном файле XML хранится листинг всех файлов DCP. Кроме того, в файловом формате XML также хранится композиционный плейлист, определяющий порядок воспроизведения, при этом каждый видео и звуковой файл определяются по их собственному идентификатору UUID.
Как видите, формат DCP также широко используется для хранения стереоскопического 3D-контента, при этом обычно используется скорость 48 кадров в секунду, с поочерёдной сменой кадров для левого и правого глаза. Поскольку максимальный битрейт формата составляет 250 Мбит/с, в стереоскопической версии 3D DCP он падает до 125 Мбит/с на канал.
Бесплатный софт для создания 3D DCP
Для создания незашифрованного кинопакета есть бесплатная программа DcpMaker, созданная энтузиастами бесплатного софта, участниками проекта Open Cinema Tools. Никаких “удобностей” у неё нет, все исходные материалы нужно подготавливать вручную. Но это к лучшему – научимся правильно подготавливать свой аудио-видео контент.
Программа DcpMaker.exe – это такой скромный квадратик, который сразу и не заметишь среди той свиты вспомогательных файлов, которые его окружают. Но прежде, чем запустить эту программу, нужно сделать определённую работу по предварительной подготовке исходных видео и аудио материалов. Для этого необходим набор других программ. Мы будем использовать бесплатные программы, а именно:
- VirtualDub – программа для захвата, обработки и конвертации видео из одного формата в другой
- Avisynth – фреймсервер цифрового видео с функцией линейного и нелинейного монтажа
- ImageMagick – консольный графический редактор
- GoldWave – редактирование аудио файлов
Последняя программа условно-бесплатная, но тем не менее, имеет полную функциональность в течение пробного периода. Чтобы не тратить зря время на поиск и комплектацию, здесь (26,5 Мбайт) вы можете скачать подготовленный мной в своё время комплект этих программ для операционной системы Windows XP (SP 2). Не могу сказать точно, будет ли это работать на ОС Vista и Windows 7, по идее – должно. В крайнем случае, всегда есть возможность посетить сайты проектов и скачать самые новые версии пакетов под вашу операционную систему. В любом случае, имейте в виду, что именно этот набор программ – не догма, как только разберётесь с алгоритмом и поймёте принцип и последовательность преобразований форматов, вы сможете самостоятельно вносить разнообразие и свой творческий вклад в этот процесс, экспериментируя с разными программами.
Перед тем, как устанавливать программы, советую сделать резервную копию системного жёсткого диска. Создатели бесплатного софта каждый раз отмечают, что они не несут ответственности за возможные технические неполадки или финансовый ущерб, который может быть нанесён и что вы действуете на свой страх и риск. Так же нужно учитывать, что работая с большими массивами несжатого видео, компьютер может немного “тормозить” и не выполнять команды мгновенно, это не надо считать неисправностью.
Для тех, кто не имеет понятия о программах VirtualDub и Avisynth будет полезно сначала немного ознакомиться с ними:
- Очень хорошая статья Евгения Сучева по VirtualDub на 3DNews
- Очень хорошая статья Александра Балахнина по AviSynth на iXBT.com
Среди прочих предварительных действий, было бы неплохо перед началом работы очистить побольше места на диске для промежуточных данных, чтобы свободное пространство не закончилось в самый неподходящий момент. Обработка несжатого видео требует максимальных объёмов на жёском диске, поэтому у меня четыре жёских диска, объединённых в один диск данных ёмкостью 1,2 Тбайт. А вот видеокарты,как ни странно, достаточно простейшей.
Итак, начнём.
Возможные форматы изображения
Сначала немного о соотношении сторон и размере кадра в пикселях. В соответствии с основным стандартом DCI 1.2 для цифрового кинопакета, содержащего стерео изображение, допускаются следующие форматы:
Формат 1.9 (Full Container) – 2048 x 1080 pix
Формат 2.39 (SCOPE) – 2048 x 858 pix
Формат 1.85 (FLAT) – 1998 x 1080 pix
Формат 1.77 (FLAT) – 1920 x 1080 pix
Как видим, формат, который выдают бытовые видеокамеры, присутствует. В принципе, можно обрезать сверху и снизу обычную картинку с последующим ресайзингом (изменением размеров) для соответствия широкоэкранному формату SCOPE, и будет у вас самое широкоэкранное кино. При этом произойдёт значительная потеря чёткости. Нужно ли это делать? Если исходный видео материал синтезирован с помощью компьютерной графики и изначально имеет такие размеры, тогда другое дело.
Если говорить о кадровой частоте, то единственно законной частотой проекции является частота 24 кадров в секунду. Возможно, что в скором времени утвердят также частоты 48, 50 и 60 кадров в секунду, а пока есть то, что есть.
Таким образом, если видеокамера у вас снимает с частотой 25 кадров в секунду, несложно с помощью VirtualDub отрендерить уменьшенную копию видео с новой частотой 24 кадр/сек. В меню Video выбираем строчку Frame Rate и назначаем новую частоту, после этого выбираем строчку Filters, нажимаем Add (добавить) и в появившемся списке выбираем фильтр с названием Resize – изменяем размеры (например с 1920х1080 пикселей на 640х360 пикселей) и рендерим как несжатый .avi файл.
Учитывая то, что для изготовления кинопакета нам потребуется преобразовать видео в секвенцию отдельных картинок, единственная цель рендеринга видео с новой частотой заключается в том, чтобы добиться синхронности звука, эта уменьшенная копия у нас только для подгонки звуковой дорожки и далее нигде использоваться не будет.
Основные технологические этапы
Процесс создания цифрового 3D кино-пакета можно разбить на несколько этапов:
- Изготовление стереоскопического фильма в виде двух (левого и правого) несжатых .avi файлов с синхронным изображением и звуком
- Сохранение левого и правого .avi файлов в виде секвенции .tif картинок в цветовом пространстве RGB24
- Конвертация секвенции TIFF RGB24 в секвенцию киносовместимого JPEG2000 с цветовым пространством XYZ
- Разделение звуковых каналов и конвертация каждого из них в формат obsolete .wav PCM 24bit 48kHz.
- Создание кинопакета (запуск программы DcpMaker.exe)
Рассмотрение технических и творческих аспектов создания стереофильма выходит за рамки данной статьи и здесь не рассматривается. Для начинающих любителей стерео видео я хотел бы акцентировать внимание на то, что все современные 3D-видеокамеры производят запись изображения со сжатием, а для изготовления кинопакета необходимо преобразовать видео в несжатые .avi файлы и убедиться в синхронности звука.
Видеоредактор VirtualDub не имеет штатных средств преобразования видео в секвенцию картинок TIFF, поэтому экспортируем в секвенцию BMP картинок. В установках экспорта выберем цветовое пространство RGB24 (16,7 млн цветов). Это самые обычные картинки ВМР. После этого с помощью программы ImageMagick преобразуем эти картинки в TIFF. Для этого напишем небольшой текст в программе “блокнот”:
@echo off echo Hello this is a batch file for converting BMP to TIFF FOR %%a in (*.bmp) DO convert %%a “%%~dpna.tif” CALL 7.bat |
Этот файл назовём “6_convert_BMP_to_TIFF.txt” и сохраним. Затем откроем этот текст, скопируем. Опять откроем “блокнот”, вставим. Этот файл назовём “6.bat” (назначим ему расширение .bat) и нажмём “сохранить”. Рядом с пакетными файлами я держу текстовые документы, чтобы всегда знать их содержание. Название текстового документа у меня длинное, а самого пакетного файла – короткое.
Для того, чтобы преобразовать секвенцию ВМР-картинок в файлы TIFF, нужно поместить этот пакетный файл в ту папку, где эти картинки ВМР находятся, и запустить его двойным щелчком мыши. Если программа ImageMagick на вашем компьютере уже установлена, то спустя некоторое время в папке возникнут картинки с такими же названиями, но только с расширением .tif. Тут надо сказать, что прежде, чем обрабатывать большие массивы картинок, имеет смысл сначала испытать всю технологию на небольшой секвенции, например, создать папку “Test”, скопировать туда штук десять .bmp картинок и пакетный файл.
Таким образом, мы имеем секвенцию обычных картинок TIFF. Обычных – это значит в стандарте RGB24, а нам нужно преобразовать эти картинки в формат JPEG2000, которые и должны содержатся в контейнере “name_.video.mxf”. Тут должен сказать, что киносовместимый JPEG2000 в обычных фото редакторах не открывается, имеет особое цветовое пространство XYZ и квантование 12 бит по каждому цветовому каналу (любителям в эту тему без предварительной подготовки вообще лучше не углубляться). Из широко известных программ только Stereoscopic Player Питера Виммера может проигрывать секвенцию таких картинок.
Вы, наверно, уже заметили, что в конце текста написано “CALL 7.bat”? Это означает передачу управления пакетному файлу с названием “7.bat”. Смысл этого файла изложен в документе “7_convert_TIFF_RGB24_to_TIFF_XYZ.txt”:
@echo off echo Hello this is a batch file for converting TIF RGB 24 to TIF XYZ FOR %%a in (*.tif) DO convert %%a -type TrueColor -alpha Off -gamma 0.454545 -depth 8 -recolor “0.4124564 0.3575761 0.1804375 0.2126729 0.7151522 0.0721750 0.0193339 0.1191920 0.9503041” -gamma 2.6 converted\cnv_%%a CD converted CALL 3_1.bat |
Этот пакетный файл преобразует цветовое пространство RGB в XYZ и меняет квантование (если вместо команды -depth 8 мы напишем -depth 16). У меня здесь длинная процедура не умещается на экране в одну строчку, но если вы будете пакетный файл создавать сами, то имейте в виду. что в “блокноте” нужно разместить эту процедуру одной строкой.
Тут имеется несколько непонятный момент для меня самого – если увеличить глубину квантования до 16 бит, то размер файлов увеличивается в два раза без каких-либо видимых изменений. Человек, который смотрел кинопакет на экране кинотеатра, говорит, что всё в порядке. При изготовлении своего образца кинопакета “Titles_DCP_SMPTE” я увеличил глубину квантования до 16 бит, и тоже всё в порядке. Надо бы тщательнее приглядеться к изображению на экране. Словом, устанавливайте глубину квантования 8 или 16 бит на Ваше усмотрение.
Пакетный файл “7.bat” складывает результаты своей работы в папку converted, добавляя приставку cnv_ к прежнему названию картинок. Закончив свою работу, он запускает пакетный файл “3_1.bat”, который уже находится в директории converted.
Итак, в папку с картинками ВМР нужно поместить не только пакетные файлы “6.bat” и “7.bat”, но и папку converted со всем её содержимым. После того, как пакетный файл 7.bat закончит свою работу, в папке converted возникнут картинки TIFF с изменённым цветовым пространством.
Рассмотрим технологическую цепочку дальше.
Управление передаётся пакетному файлу “3_1.bat”. Вот его содержание:
@echo off echo Hello this is a batch file for creating j2c from TIFF MD jpeg2k FOR %%a in (*.tif) DO image_to_j2k -cinema2K 48 -i %%a -o jpeg2k\%%~na.j2c -OutFor j2c |
Как видим, кроме пакетного файла 3_1.bat здесь находится программа image_to_j2k.exe (из комплекта Open Cinema Tools) и три вспомогательных файла, необходимых для её работы. Пакетный файл 3_1.bat сначала создаёт директорию с названием jpeg2k, а затем начинает обрабатывать каждую картинку с помощью программы image_to_j2k, поэтому последнюю строчку трудно прокомментировать – будем считать её “священными иероглифами”. Нам, простым людям, совсем необязательно знать, что там происходит. Главное то, что после окончания работы пакетного файла 3_1.bat возникает папка с картинками, имеющими расширение .j2c – как раз то, что нужно. Пока не забыли, какой ракурс мы рендерили, сразу переименуем папку jpeg2k в j2k_left или j2k_right.
Итак, половина дела уже сделана. Папки j2k_left и j2k_right несколько позже мы будем использовать для создания кинопакета. А пока займёмся звуком.
Подготовка звука
Подготовка звука – это вообще пустяки по сравнению с обработкой видео. Хотя, конечно, сделать хорошую фонограмму к фильму – это большое искусство, и здесь каждый применяет свои методы работы и, зачастую, очень сложные программы по обработке звука. Я использую простую бесплатную программу Audacity и мне пока её хватает. Но программа DcpMaker понимает только 24-битный формат звука obsolete .wav PCM с частотой сэмплирования 48 кГц, в него и надо преобразовать фонограмму. Для этого мы используем программу GoldWave.
Договоримся сразу: фонограмма уже синхронизирована с частотой кино 24 кадров в секунду (помните, рендерили уменьшенную копию видео с изменённой частотой и синхронизировали звук). Теперь надо разделить фонограмму на отдельные дорожки. Будете Вы для этого использовать Audacity или сразу запустите GoldWave – кому как удобней. Можно даже специальный скрипт для программы AviSynth для этого написать.
Некоторые бытовые видеокамеры могут записывать многоканальный звук и эта их способность здесь вполне может пригодиться. Кинотеатральный стандарт SMPTE предусматривает наличие 6-канального звука и открывает для творчества неограниченные горизонты. Если у вас обычный стереозвук, это тоже неплохо (возможно, вы просто не знаете всех возможностей обычной стереофонограммы).
Важно, чтобы дорожки были разделены, соответствовали формату obsolete .wav PCM 24bit 48kHz и имели простое правильное название в соответствии со стандартом: left.wav и right.wav (а также: center.wav, lfe.wav, leftsur.wav, rightsur.wav, если есть многоканальный звук).
Запуск программы DcpMaker.exe
Рассмотрим картинку “Creating_DCP_SMPTE.png” из моего комплекта. Не долго думая, я поместил все 14 файлов, найденных в Open Cinema Tools, в одну общую папку “название_SMPTE”с готовыми аудиофайлами left.wav и right.wav и вложенными папками j2k_left и j2k_right (см. картинку для пояснения). Эту общую папку рекомендую сделать на том же диске данных, на котором находятся секвенции JPEG2000, чтобы одним движением переместить папки “j2k_left” и “j2k_right” в эту папку. После этого я открыл программу DcpMaker.exe (окно слева).
Примечание: Последние шесть файлов появятся только в конце процесса!
Обратите внимание, что первые две строки остаются незаполненными, потому что мы уже конвертировали изображение в секвенции картинок .j2c и нам остаётся только заполнить строчки в разделе “MXF Wrapping”.
Наименование аудио и видео контейнеров нужно дать в формате: name_of_project_.video.mxf и name_of_project_.audio.mxf
- Вид контента, по-моему, можно выбрать любой.
- Название фильма тоже любое (по английски, разумеется).
- Аннотацию тоже можно написать любую.
- В издатели можно записать кого угодно.
- Рейтинговое агенство тоже можно указать “от фонаря” и обозначить себя круглым отличником.
- Аннотацию и издателя везде можно указать одинаково.
И, наконец, нажать кнопку “Make DCP”!
После того, как программа завершит свою работу, в этой общей папке вы обнаружите шесть новых файлов, которые в совокупности и составляют цифровой 3D кинопакет. Затем удаляете из этой папки всё, кроме этих шести файлов, переписываете папку на внешний жёсткий диск и идёте в кинотеатр.
Советую также скачайть мой образец кинопакета “Titles_DCP_SMPTE” (363,4 Мбайт), чтобы в случае каких-либо трудностей была возможность сравнить и понять в чём дело.
На сайте проекта Open Cinema Tools написано, что использование этой технологии требует основательных знаний и навыков программирования. Конечно, основательные знания в любом деле не помешают, но как вы сейчас убедились, это не совсем так. Просто никто не потрудился написать простую и понятную инструкцию.
Успехов в вашем творчестве, коллеги!