Projects and sequences

Item sequences

An item can hold a number of sequences, and is then called a sequence item. All sequences will be considered equivalent by Vidispine, that is, that they represent the same logical sequence.

Sequences can also be imported and exported to and from common NLE formats.

The non-timed metadata of a sequence item will contain the following fields:

Field Name Value
__sequence_size The number of sequences that exist for an item.
__sequence The format of a sequence that exist for an item.

Projects and project versions

A project is a special type of collection that contains a number of project versions. A project version is a collection that contains the items and sequences that together represent a specific version. As both project and project versions are ordinary collections it means that all existing collection operations can be used, for example editing project metadata.

Projects can also be imported and exported to and from common NLE formats.

Note

Projects and project versions are read-only and cannot be altered by manually adding or removing child items or collections.

For a project version it is possible to store the original document representing the project, the Final Cut Pro XML for example, as well as any additional representations, here called Project Version Definitions. Each representation is stored as binary data, and is identified by a format identifier (e.g. finalcut.)

Any string can be used as the format identifier, except the following which are reserved by Vidispine, but may be used as long as the content matches.

Identifier Content Description
finalcut application/final-cut-pro Final Cut Pro 7 XML
finalcut-x application/final-cut-pro-x Final Cut Pro X XML
aaf application/aaf AAF
fabric application/fabric Fabric CEMS
vidispine application/x-vidispine SequenceType

Example

For a project named “Unnamed project”:

<timespan start="-INF" end="+INF">
  <field>
    <name>__type</name>
    <value>project</value>
  </field>
  <field>
    <name>__project_name</name>
    <value>Unnamed Projekt</value>
  </field>
  ...
</timespan>

For a project version with a single Final Cut Pro representation:

<timespan start="-INF" end="+INF">
  <field>
    <name>__type</name>
    <value>projectVersion</value>
  </field>
  <field>
    <name>__project_version</name>
    <value>finalcut</value>
  </field>
  ...
</timespan>

Metadata

Projects and project version collections contains additional (non-timed) metadata that may be useful when searching for collection.

Field Name Value
__type

project for project collections.

projectVersion for project version collections.

__project_name The name of the project.
__project_version The format of the definitions that have been stored for a project version.

Project and sequence import and export

This page describes how to import and export projects and sequences from NLEs such as Final Cut Pro and Avid Media Composer.

Inspecting a project file

Before a project or sequence can be imported, the project file has to be inspected in order to find out which clips already exist in Vidispine as items, and which must first be imported.

The input should be an essence mappings document, which is also used for project and sequence import. It is required so that Vidispine can identify the items and files referenced by the input project file. The document can specify:

  • The SHA-1 hash of a file. The response will then contain all items and shapes that reference that specific file.
  • The item corresponding to a specific asset. Can be used after a previously unknown asset has been imported and the correct item is known. If the item has multiple shapes then the shape id must be specified as well.
  • If a storage has been locally mounted on the client, then a storage mapping containing the id of the storage and the local path can be given. This will only be used if the input file references files by path.

Example

POST /collection/project/inspect?uri=file:///home/maria/sequence.xml&amp;type=finalcut
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EssenceMappingDocument xmlns="http://xml.vidispine.com/schema/vidispine">
</EssenceMappingDocument>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProjectFileDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <location>file:///home/maria/sequence.xml</location>
  <asset>
    <id>urn:uuid:8CED8AFE-1A67-4632-AB57-D5F5B1E0BC49</id>
    <name>Sequence 1</name>
    <type>sequence</type>
    <status>unknown</status>
  </asset>
  <asset>
    <id>urn:uuid:FCAD0878-7129-43DA-A8A0-696590EFE4DA</id>
    <name>Sample Clip B</name>
    <type>clip</type>
    <status>unknown</status>
    <file>
      <path>file://localhost/Users/maria/Sample%20Clip%20B.mov</path>
    </file>
  </asset>
  <asset>
    <id>urn:uuid:76BE320F-48E0-47A5-A076-227158C50024</id>
    <name>Clip A</name>
    <type>clip</type>
    <status>unknown</status>
    <file>
      <path>file://localhost/Users/maria/Movies/Vidispine/VX-1.mov</path>
    </file>
  </asset>
</ProjectFileDocument>

With the SHA-1 hash provided for all of the files:

POST /collection/project/inspect?uri=file:///home/maria/sequence.xml&amp;type=finalcut
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EssenceMappingDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <file path="file://localhost/Users/maria/Movies/Vidispine/VX-1.mov" hash="7b8d6ffe1ea468800578d6b7d4a09b012c461569"/>
  <file path="file://localhost/Users/maria/Sample%20Clip%20B.mov" hash="c7cfc97a9cf6634ad94766c0c4b0789cd86bcc33"/>
</EssenceMappingDocument>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProjectFileDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <location>file:///home/maria/sequence.xml</location>
  <asset>
    <id>urn:uuid:8CED8AFE-1A67-4632-AB57-D5F5B1E0BC49</id>
    <name>Sequence 1</name>
    <type>sequence</type>
    <status>unknown</status>
  </asset>
  <asset>
    <id>urn:uuid:FCAD0878-7129-43DA-A8A0-696590EFE4DA</id>
    <name>Sample Clip B</name>
    <type>clip</type>
    <status>unknown</status>
    <file>
      <path>file://localhost/Users/maria/Sample%20Clip%20B.mov</path>
    </file>
  </asset>
  <asset>
    <id>urn:uuid:76BE320F-48E0-47A5-A076-227158C50024</id>
    <name>Clip A</name>
    <type>clip</type>
    <item id="VX-1" match="file" permission="OWNER"/>
    <file>
      <path>file://localhost/Users/maria/Movies/Vidispine/VX-1.mov</path>
      <hash>7b8d6ffe1ea468800578d6b7d4a09b012c461569</hash>
      <file>
        <id>VX-1</id>
        <path>VX-1.mov</path>
        <uri>file:///mnt/storage/Vidispine/VX-1.mov</uri>
        <state>CLOSED</state>
        <size>30346173</size>
        <timestamp>2011-10-13T07:41:48.053+02:00</timestamp>
        <refreshFlag>727</refreshFlag>
        <storage>VX-1</storage>
        <item>
          <id>VX-1</id>
          <shape>
            <id>VX-1</id>
            <component>
              <id>VX-1</id>
            </component>
            <component>
              <id>VX-1</id>
            </component>
            <component>
              <id>VX-1</id>
            </component>
            <component>
              <id>VX-1</id>
            </component>
            <component>
              <id>VX-1</id>
            </component>
          </shape>
        </item>
      </file>
    </file>
  </asset>
</ProjectFileDocument>

After the new asset has been imported into Vidispine:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProjectFileDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <location>file:///home/maria/sequence.xml</location>
  <asset>
    <id>urn:uuid:8CED8AFE-1A67-4632-AB57-D5F5B1E0BC49</id>
    <name>Sequence 1</name>
    <type>sequence</type>
    <status>unknown</status>
  </asset>
  <asset>
    <id>urn:uuid:FCAD0878-7129-43DA-A8A0-696590EFE4DA</id>
    <name>Sample Clip B</name>
    <type>clip</type>
    <item id="VX-2" match="file" permission="OWNER"/>
    <file>
      <path>file://localhost/Users/maria/Sample%20Clip%20B.mov</path>
      <hash>c7cfc97a9cf6634ad94766c0c4b0789cd86bcc33</hash>
      <file>
        <id>VX-2</id>
        <path>VX-2.mov</path>
        <uri>file:///mnt/storage/Vidispine/VX-2.mov</uri>
        <state>CLOSED</state>
        <size>30346173</size>
        <timestamp>2011-10-13T07:42:48.178+02:00</timestamp>
        <refreshFlag>727</refreshFlag>
        <storage>VX-1</storage>
        <item>
          <id>VX-2</id>
          <shape>
            <id>VX-2</id>
            <component>
              <id>VX-2</id>
            </component>
            <component>
              <id>VX-2</id>
            </component>
            <component>
              <id>VX-2</id>
            </component>
          </shape>
        </item>
      </file>
    </file>
  </asset>
  <asset>
    <id>urn:uuid:76BE320F-48E0-47A5-A076-227158C50024</id>
    <name>Clip A</name>
    <type>clip</type>
    <item id="VX-1" match="file" permission="OWNER"/>
    <file>
      <path>file://localhost/Users/maria/Movies/Vidispine/VX-1.mov</path>
      <hash>7b8d6ffe1ea468800578d6b7d4a09b012c461569</hash>
      <file>
        <id>VX-1</id>
        <path>VX-1.mov</path>
        <uri>file:///mnt/storage/Vidispine/VX-1.mov</uri>
        <state>CLOSED</state>
        <size>30346173</size>
        <timestamp>2011-10-13T07:41:48.053+02:00</timestamp>
        <refreshFlag>727</refreshFlag>
        <storage>VX-1</storage>
        <item>
          <id>VX-1</id>
          <shape>
            <id>VX-1</id>
            <component>
              <id>VX-1</id>
            </component>
            <component>
              <id>VX-1</id>
            </component>
            <component>
              <id>VX-1</id>
            </component>
            <component>
              <id>VX-1</id>
            </component>
            <component>
              <id>VX-1</id>
            </component>
          </shape>
        </item>
      </file>
    </file>
  </asset>
</ProjectFileDocument>