Приложения формата обмена

В этой главе описываются три инструмента на основе Final Cut Pro Формат обмена XML, который разработчики могли бы создать, чтобы помочь оптимизировать определенные завершающие задачи. Это включает эти разделы:

Улучшение пакетного списка

Режиссер может генерировать десятки или сотни часов видеозаписи во время производства. Часто, эта видеозапись регистрируется в текстовой процессор, электронную таблицу или программу базы данных. Режиссер может тогда использовать эту информацию для создания пакетного списка для импорта в Final Cut Pro.

Используя Final Cut Pro Формат обмена XML, разработчик может создать простой инструмент, значительно улучшающий возможности традиционного пакетного списка, интегрирующегося в него многие решения редактирования, обычно выражаемые в бумажном редактировании. Например, инструмент может перевести информацию из файла электронной таблицы в документ формата обмена, представляющий разделенные стеллажи клипов, предопределенные последовательности, содержащие выбранные категории клипов, и даже отсекающий с эффектами, уже примененными.

Перечисление 5-1 показывает краткий пример улучшенного пакетного списка в формате обмена. В этом примере существует единственный стеллаж с пятью оффлайновыми клипами. Информация о журналировании ввела для каждого клипа в электронной таблице, также позволил инструменту (в запросе пользователя) устанавливать последовательность всех клипов пары танца.

Перечисление 5-1  улучшенный пакетный список

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xmeml>
<xmeml version="5">
<project>
    <name>EnhancedBatchList</name>
    <children>
        <bin>
            <name>Dance shots</name>
            <children>
                <clip id="Bloomies">
                    <name>Bloomies</name>
                    <duration>248</duration>
                    <rate>
                        <ntsc>TRUE</ntsc>
                        <timebase>30</timebase>
                    </rate>
                    <logginginfo>
                        <lognote>couple</lognote>
                    </logginginfo>
                    <timecode>
                        <string>02:12:02;17</string>
                        <source>source</source>
                        <reel>
                            <name>002</name>
                        </reel>
                    </timecode>
                </clip>
                <clip id="Jeremy Solo">
                    <name>Jeremy Solo</name>
                    <duration>188</duration>
                    <rate>
                        <ntsc>TRUE</ntsc>
                        <timebase>30</timebase>
                    </rate>
                    <logginginfo>
                        <lognote>solo male</lognote>
                        <good>FALSE</good>
                    </logginginfo>
                    <timecode>
                        <string>02:42:35;14</string>
                        <source>source</source>
                        <reel>
                            <name>002</name>
                        </reel>
                    </timecode>
                </clip>
                <clip id="Johnny n Cari">
                    <name>Johnny n Cari</name>
                    <duration>148</duration>
                    <rate>
                        <ntsc>TRUE</ntsc>
                        <timebase>30</timebase>
                    </rate>
                    <logginginfo>
                        <lognote>couple</lognote>
                        <good>FALSE</good>
                    </logginginfo>
                    <timecode>
                        <string>02:41:42;10</string>
                        <source>source</source>
                        <reel>
                            <name>002</name>
                        </reel>
                    </timecode>
                </clip>
                <clip id="Overhead">
                    <name>Overhead</name>
                    <duration>321</duration>
                    <rate>
                        <ntsc>TRUE</ntsc>
                        <timebase>30</timebase>
                    </rate>
                    <logginginfo>
                        <lognote>group</lognote>
                        <good>FALSE</good>
                    </logginginfo>
                    <timecode>
                        <string>02:39:26;28</string>
                        <source>source</source>
                        <reel>
                            <name>002</name>
                        </reel>
                    </timecode>
                </clip>
                <clip id="Round n Round">
                    <name>Round n Round</name>
                    <duration>308</duration>
                    <rate>
                        <ntsc>TRUE</ntsc>
                        <timebase>30</timebase>
                    </rate>
                    <logginginfo>
                        <lognote>couple</lognote>
                        <good>FALSE</good>
                    </logginginfo>
                    <timecode>
                        <string>02:12:18;07</string>
                        <source>source</source>
                        <reel>
                            <name>002</name>
                        </reel>
                    </timecode>
                </clip>
            </children>
        </bin>
        <sequence id="Couples">
            <name>Couples</name>
            <duration>704</duration>
            <rate>
                <ntsc>TRUE</ntsc>
                <timebase>30</timebase>
            </rate>
            <timecode>
                <rate>
                    <ntsc>TRUE</ntsc>
                    <timebase>30</timebase>
                </rate>
                <string>01:00:00;00</string>
                <frame>107892</frame>
                <source>source</source>
                <displayformat>DF</displayformat>
            </timecode>
            <media>
                <video>
                    <track>
                        <clipitem>
                            <name>Bloomies</name>
                            <start>0</start>
                            <end>248</end>
                            <file id="Bloomies1"/>
                        </clipitem>
                        <clipitem>
                            <name>Johnny n Cari</name>
                            <start>248</start>
                            <end>396</end>
                            <file id="Johnny n Cari"/>
                        </clipitem>
                        <clipitem>
                            <name>Round n Round</name>
                            <start>396</start>
                            <end>704</end>
                            <file id="Round n Round"/>
                        </clipitem>
                    </track>
                </video>
            </media>
        </sequence>
    </children>
</project>
</xmeml>

Упрощение введения субтитров

Используя возможности Final Cut Pro Формат обмена XML и текстовые генераторы, разработчик может создать инструмент или комплект инструментов, чтобы помочь упростить и оптимизировать процесс введения субтитров.

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

Редактор тогда экспортирует последовательность в формате обмена. Дорожка слизняка в итоговом документе содержит запуск и требуемую информацию конца для корректного указания запуска и конца текстового генератора для каждого подзаголовка.

Кроме того, редактор помещает текст для подзаголовков в базе данных или электронной таблице.

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

Редактор тогда импортирует этот новый файл формата обмена, и сделайте любые необходимые улучшения или корректировки.

Перечисление 5-2 показывает сокращенный пример проекта с двумя подзаголовками.

В строке, пронумерованной 1, первый эффект генератора подзаголовка использует id атрибут. Первый эффект генератора в дорожке может установить все параметры, такой как fontname, fontsize, и origin, и т.д.

В строке, пронумерованной 2, следующий эффект генератора в дорожке может сослаться на это id и используйте те же настройки, переопределяя только str параметр для изменения текста подзаголовка. Это означает, что можно изменить параметры, такие как стиль шрифта или стиль текста, в первом эффекте генератора и иметь изменения, применяются ко всем подзаголовкам в последовательности. (В строке, пронумерованной 3, опущены подробные данные кодирования для аудиотреков.)

  Введение субтитров перечисления 5-2

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xmeml>
<xmeml version="5">
<sequence id="SampleSubtitles">
    <name>SampleSubtitles</name>
    <duration>219</duration>
    <rate>
        <ntsc>TRUE</ntsc>
        <timebase>30</timebase>
    </rate>
    <timecode>
        <rate>
            <ntsc>TRUE</ntsc>
            <timebase>30</timebase>
        </rate>
        <string>01:00:00;00</string>
        <frame>107892</frame>
        <source>source</source>
        <displayformat>DF</displayformat>
    </timecode>
    <media>
        <video>
            <track>
                <clipitem>
                <name>Rob Dialog</name>
                <duration>751</duration>
                <rate>
                <ntsc>TRUE</ntsc>
                <timebase>30</timebase>
                </rate>
                <in>0</in>
                <out>219</out>
                <start>0</start>
                <end>219</end>
                <file id="Rob Dialog1">
                <name>Rob Dialog</name>
                <pathurl>file://localhost/NTSC%20TutorialDance%20Shots/Rob%20Dialog</pathurl>
                    <media>
                        <video/>
                    </media>
                </file>
                </clipitem>
            </track>
            <track>
                <generatoritem>
                    <name>Text</name>
                    <duration>3600</duration>
                    <rate>
                        <ntsc>TRUE</ntsc>
                        <timebase>30</timebase>
                    </rate>
                    <in>1650</in>
                    <out>1784</out>
                    <start>0</start>
                    <end>134</end>
                    <enabled>TRUE</enabled>
                    <anamorphic>FALSE</anamorphic>
                    <alphatype>black</alphatype>
                    <effect id = "subtitle">// 1
                        <name>Text</name>
                        <effectid>Text</effectid>
                        <effectcategory>Text</effectcategory>
                        <effecttype>generator</effecttype>
                        <mediatype>video</mediatype>
                        <parameter>
                            <parameterid>str</parameterid>
                            <name>Text</name>
                            <value>If you look at the Lindy Hop&#13;you'll see a couple just moving</value>
                        </parameter>
                        <parameter>
                            <parameterid>fontname</parameterid>
                            <name>Font</name>
                            <value>Futura</value>
                        </parameter>
                        <parameter>
                            <parameterid>fontsize</parameterid>
                            <name>Size</name>
                            <valuemin>0</valuemin>
                            <valuemax>1000</valuemax>
                            <value>36</value></parameter>
                        <parameter>
                        <parameterid>fontstyle</parameterid>
                            <name>Style</name>
                            <valuemin>1</valuemin>
                            <valuemax>4</valuemax>
                            <valuelist>
                                <valueentry>
                                    <name>Plain</name>
                                    <value>1</value>
                                </valueentry>
                                <valueentry>
                                    <name>Bold</name>
                                    <value>2</value>
                                </valueentry>
                                <valueentry>
                                    <name>Italic</name>
                                    <value>3</value>
                                </valueentry>
                                <valueentry>
                                    <name>Bold/Italic</name>
                                    <value>4</value>
                                </valueentry>
                            </valuelist>
                            <value>3</value>
                        </parameter>
                        <parameter>
                        <parameterid>fontalign</parameterid>
                        <name>Alignment</name>
                        <valuemin>1</valuemin>
                        <valuemax>3</valuemax>
                        <valuelist>
                            <valueentry>
                                <name>Left</name>
                                <value>1</value>
                            </valueentry>
                            <valueentry>
                                <name>Center</name>
                                <value>2</value>
                            </valueentry>
                                <valueentry><name>Right</name>
                                <value>3</value>
                            </valueentry>
                        </valuelist>
                        <value>2</value>
                        </parameter>
                        <parameter>
                            <parameterid>fontcolor</parameterid>
                            <name>Font Color</name>
                            <value>
                                <alpha>255</alpha>
                                <red>255</red>
                                <green>255</green>
                                <blue>255</blue>
                            </value>
                        </parameter>
                        <parameter>
                        <parameterid>origin</parameterid>
                            <name>Origin</name>
                            <value>
                                <horiz>0</horiz>
                                <vert>0.34375</vert>
                            </value>
                        </parameter>
                    </effect>
                    <sourcetrack>
                        <mediatype>video</mediatype>
                    </sourcetrack>
                </generatoritem>
                <generatoritem>
                    <start>135</start>
                    <end>219</end>
                    <effect id ="subtitle2">// 2
                        <name>Text</name>
                        <effectid>Text</effectid>
                        <effectcategory>Text</effectcategory>
                        <effecttype>generator</effecttype>
                        <mediatype>video</mediatype>
                        <parameter>
                            <parameterid>str</parameterid>
                            <name>Text</name><value>They're constantly moving&#13;they're always on the go</value>
                        </parameter>
                    </effect>
                </generatoritem>
                <enabled>TRUE</enabled>
                <locked>FALSE</locked>
            </track>
        </video>
        <audio>     // 3
            . . .
        </audio>
    </media>
</sequence>
</xmeml>

Выбор параметров эффекта

Много эффектов имеют многократные параметры, предлагающие широкий диапазон выбора. Нахождение правильной комбинации настроек для желаемого эффекта может быть длительной задачей. Чтобы помочь редактору более быстро идентифицировать надлежащие установки параметров, разработчик может создать «инструмент» исследования параметра, быстро выводящий на экран диапазон альтернативных методов лечения для клипа в Холсте.

Инструмент просит, чтобы редактор выбрал клип и эффект, и затем указал параметры, которые будут варьироваться и инкременты для изменений. Инструмент тогда генерирует документ формата обмена для импорта в Final Cut Pro.

Рисунок 5-1 показывает то, что мог бы произвести инструмент. В этом случае клип является тихим кадром, и прикладной эффект является Цветным Корректором, с 3 путями. Исходный клип (в центре) и шесть изменений выведен на экран в Холсте.

Рисунок 5-1  Многократные изменения параметра в Холсте
Multiple parameter variations in the Canvas

Перечисление 5-3 выводит на экран часть документа формата обмена, создаваемого инструментом. Это показывает две из семи дорожек. В частности отметьте эти точки:

В строке пронумеровал 1, stillframe элемент указывает, что клип является тихим кадром.

В строке пронумеровал 2, duration установлен в 2. (Обратите внимание на то, что для все еще структурирует, значение для duration указывает время в минутах, а не число кадров.)

Строки пронумеровали 3 - 8, параметры в эффекте, варьирующиеся от клипа до клипа. Во второй дорожке они изменяются в строках, пронумерованных 11 - 16.

В строке, пронумерованной 9, клип масштабируется для адаптации другим клипам в окне Canvas.

В строке, пронумерованной 10, горизонтальные и вертикальные настройки для Центрального параметра управляют позицией клипа в Холсте. Эти значения изменяются для второго клипа в строке, пронумерованной 17.

  Установки параметров Эффекта перечисления 5-3

<track>  <!-- the first track -->
    <clipitem>
        <name>Faux Fur.jpg</name>
        <duration>3901</duration>
        <rate>
            <ntsc>TRUE</ntsc>
            <timebase>30</timebase>
        </rate>
        <in>1800</in>
        <out>2100</out>
        <start>0</start>
        <end>300</end>
        <stillframe>TRUE</stillframe>// 1
        . . .
        <file id="Faux Fur.jpg1">
            <name>Faux Fur.jpg</name>
            <pathurl>file://localhost/Faux%20Fur.jpg</pathurl>
            <duration>2</duration>
            <media>
                <video>
                    <duration>2</duration>// 2
                    <stillframe>TRUE</stillframe>
                    <samplecharacteristics>
                        <width>720</width>
                        <height>480</height>
                    </samplecharacteristics>
                </video>
            </media>
        </file>
        <filter>
            <enabled>TRUE</enabled>
            <start>-1</start>
            <end>-1</end>
            <effect id = "colorcorrector3way">
                <name>Color Corrector 3-way</name>
                <effectid>Color Corrector 3-way</effectid>
                <effectcategory>Color Correction</effectcategory>
                <effecttype>filter</effecttype>
                <mediatype>video</mediatype>
                <parameter>
                    <parameterid>dispmode</parameterid>
                    <name>Display Mode</name>
                    . . .
                    <value>1</value>
                </parameter>
                <parameter>
                    <parameterid>label1</parameterid>
                    <name>Blacks Controls</name>
                </parameter>
                <parameter>
                    <parameterid>blacklevel</parameterid>
                    <name>Level</name>
                    <valuemin>-196</valuemin>
                    <valuemax>254</valuemax>
                    <value>0</value>
                </parameter>
                <parameter>
                    <parameterid>b_hue</parameterid>
                    <name>Angle</name>
                    <valuemin>-180</valuemin>
                    <valuemax>180</valuemax>
                    <value>-33</value> // 3
                </parameter>
                <parameter>
                    <parameterid>b_mag</parameterid>
                    <name>Magnitude</name>
                    <valuemin>0</valuemin>
                    <valuemax>200</valuemax>
                    <value>0</value> // 4
                </parameter>
                <parameter>
                    <parameterid>label2</parameterid>
                    <name>Midrange Controls</name>
                </parameter>
                <parameter>
                    <parameterid>mids</parameterid>
                    <name>Level</name>
                    <valuemin>0</valuemin>
                    <valuemax>200</valuemax>
                    <value>100</value>
                </parameter>
                <parameter>
                    <parameterid>m_hue</parameterid>
                    <name>Angle</name>
                    <valuemin>-180</valuemin>
                    <valuemax>180</valuemax>
                    <value>-33</value> // 5
                </parameter>
                <parameter>
                    <parameterid>m_mag</parameterid>
                    <name>Magnitude</name>
                    <valuemin>0</valuemin>
                    <valuemax>200</valuemax>
                    <value>0</value> // 6
                </parameter>
                <parameter>
                    <parameterid>label3</parameterid>
                    <name>Highlight Controls</name>
                </parameter>
                <parameter>
                    <parameterid>highlights</parameterid>
                    <name>Level</name>
                    <valuemin>64</valuemin>
                    <valuemax>509</valuemax>
                    <value>255</value>
                </parameter>
                <parameter>
                    <parameterid>h_hue</parameterid>
                    <name>Angle</name>
                    <valuemin>-180</valuemin>
                    <valuemax>180</valuemax>
                    <value>-33</value> // 7
                </parameter>
                <parameter>
                    <parameterid>h_mag</parameterid>
                    <name>Magnitude</name>
                    <valuemin>0</valuemin>
                    <valuemax>200</valuemax>
                    <value>0</value> // 8
                </parameter>
                . . .  <!-- other parameter settings are defaults -->
            </effect>
        </filter>
        <filter>
            <effect id = "basicmotion">
                <name>Basic Motion</name>
                <effectid>basic</effectid>
                <effectcategory>motion</effectcategory>
                <effecttype>motion</effecttype>
                <mediatype>video</mediatype>
                <parameter>
                    <parameterid>scale</parameterid>
                    <name>Scale</name>
                    <valuemin>0</valuemin>
                    <valuemax>1000</valuemax>
                    <value>25</value> // 9
                </parameter>
                <parameter>
                    <parameterid>center</parameterid>
                    <name>Center</name>
                    <value>// 10
                        <horiz>-2.98023e-08</horiz>
                        <vert>-0.00524935</vert>
                    </value>
                </parameter>
            </effect>
        </filter>
        . . .
    </clipitem>
    <enabled>TRUE</enabled>
    <locked>FALSE</locked>
</track>
<track>  <!-- start of the second track -->
    <clipitem>
        . . .
        <filter>
            <enabled>TRUE</enabled>
            <start>-1</start>
            <end>-1</end>
            <effect id = "colorcorrector3way">
                . . .
                <parameter>
                    <parameterid>b_hue</parameterid>
                    <name>Angle</name>
                    <valuemin>-180</valuemin>
                    <valuemax>180</valuemax>
                    <value>-12</value> // 11
                </parameter>
                <parameter>
                    <parameterid>b_mag</parameterid>
                    <name>Magnitude</name>
                    <valuemin>0</valuemin>
                    <valuemax>200</valuemax>
                    <value>20</value>// 12
                </parameter>
                <parameter>
                    <parameterid>m_hue</parameterid>
                    <name>Angle</name>
                    <valuemin>-180</valuemin>
                    <valuemax>180</valuemax>
                    <value>-12</value> // 13
                </parameter>
                <parameter>
                    <parameterid>m_mag</parameterid>
                    <name>Magnitude</name>
                    <valuemin>0</valuemin>
                    <valuemax>200</valuemax>
                    <value>20</value>// 14
                </parameter>
 
                <parameter>
                    <parameterid>h_hue</parameterid>
                    <name>Angle</name>
                    <valuemin>-180</valuemin>
                    <valuemax>180</valuemax>
                    <value>-12</value> // 15
                </parameter>
                <parameter>
                    <parameterid>h_mag</parameterid>
                    <name>Magnitude</name>
                    <valuemin>0</valuemin>
                    <valuemax>200</valuemax>
                    <value>20</value> // 16
                </parameter>
            </effect>
        </filter>
        <filter>
            <effect id = "basicmotion">
                . . .
                <parameter>
                    <parameterid>center</parameterid>
                    <name>Center</name>
                    <value>// 17
                        <horiz>--0.275591</horiz>
                        <vert>-0.167979</vert>
                    </value>
                </parameter>
            </effect>
        </filter>
        . . .
    </clipitem>
    <enabled>TRUE</enabled>
    <locked>FALSE</locked>
</track>

Другие возможности

Вот являются некоторые другие возможные проекты и инструменты на основе Final Cut Pro Форматом обмена XML: