Create Shape On Placeholder Item (w/o Physical File Access) [ENT 21.4 IG]
Motivation
In some scenarios it may be required to create shapes on VidiCore items without VidiCore accessing the physical file behind the shape.
A possible scenario are files located on an archive storage which is not not accessible by VidiCore.
Another scenario would be to import files to VidiCore but avoiding load on VidiCore due to PLACEHOLDER_IMPORT jobs.
Workflow
This workflow should be used with extreme caution.
VidiCore’s structure of technical metadata is very detailled and is created in a consistent way by VidiCoder. Circumventing VidiCoder for filling in the technical metadata an lead to unwanted side-effects when such shapes are being processed at a later stage.
Create a placeholder item as described in Import A File Into A New Item [ENT 21.4 IG].
Create a
ShapeDocumentcontaining all the relevant metadata. The simplestShapeDocumentwould be an empty one. To populate thestartTimeCodeanddurationTimeCodemetadata fields you need at least these values in theShapeDocument:
{
"tag": ["original"],
"containerComponent": {
"duration": {
"samples": 100000,
"timeBase": {
"numerator": 1,
"denominator": 1000
}
},
"startTimecode": 90,
"roundedTimeBase" : 30,
"metadata": [{
"key": "componentOriginalFilename",
"value": "mysource.mxf"
}, {
"key": "creation_time",
"value": "2019-02-01 09:00:00"
}
]
}
}
You can directly specify the VidiCore file IDs in the document:
{
"created": "0001-01-01T00:00:00",
"essenceVersion": 0,
"tag": ["original"],
"containerComponent": {
"duration": {
"samples": 3299797,
"timeBase": {
"numerator": 1,
"denominator": 1000
}
},
"startTimecode": 1069935,
"startTimestamp": {
"samples": 0,
"timeBase": {
"numerator": 1,
"denominator": 1000
}
},
"roundedTimeBase": 30,
"dropFrame": true,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": [{
"key": "componentOriginalFilename",
"value": "MAAAAA3FV4.mxf"
}, {
"key": "creation_time",
"value": "2019-01-04 18:18:41"
}
]
},
"videoComponent": [{
"resolution": {
"width": 1920,
"height": 1080
},
"dropFrame": true,
"timeBase": {
"numerator": 1001,
"denominator": 30000
},
"essenceStreamId": 1,
"bitrate": 50000000,
"duration": {
"samples": 3299797,
"timeBase": {
"numerator": 1,
"denominator": 1000
}
},
"startTimestamp": {
"samples": 0,
"timeBase": {
"numerator": 1,
"denominator": 1000
}
},
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": [{
"key": "componentOriginalFilename",
"value": "MAAAAA3FV4.mxf"
}, {
"key": "creation_time",
"value": "2019-01-04 18:18:41"
}
]
}
],
"audioComponent": [{
"channelCount": 1,
"timeBase": {
"numerator": 1,
"denominator": 48000
},
"itemTrack": "A1",
"essenceStreamId": 2,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": null
}, {
"channelCount": 1,
"timeBase": {
"numerator": 1,
"denominator": 48000
},
"itemTrack": "A2",
"essenceStreamId": 3,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": null
}, {
"channelCount": 1,
"timeBase": {
"numerator": 1,
"denominator": 48000
},
"itemTrack": "A3",
"essenceStreamId": 4,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": null
}, {
"channelCount": 1,
"timeBase": {
"numerator": 1,
"denominator": 48000
},
"itemTrack": "A4",
"essenceStreamId": 5,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": null
}, {
"channelCount": 1,
"timeBase": {
"numerator": 1,
"denominator": 48000
},
"itemTrack": "A5",
"essenceStreamId": 6,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": null
}, {
"channelCount": 1,
"timeBase": {
"numerator": 1,
"denominator": 48000
},
"itemTrack": "A6",
"essenceStreamId": 7,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": null
}, {
"channelCount": 1,
"timeBase": {
"numerator": 1,
"denominator": 48000
},
"itemTrack": "A7",
"essenceStreamId": 8,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": null
}, {
"channelCount": 1,
"timeBase": {
"numerator": 1,
"denominator": 48000
},
"itemTrack": "A8",
"essenceStreamId": 9,
"file": [{
"id": "FILE-VX-5429",
"timestamp": "0001-01-01T00:00:00"
}
],
"id": null,
"metadata": null
}
]
}
VidiCore will use the file IDs and populate the rest of the structure (file URI) etc. appropriately.
Please note that these JSON documents only serve as an orientation. They do not provide a fully functional solution.
Create the shape on the placeholder item via
POST /API/item/<itemId>/shape/create?updateItemMetadata=trueand supply the
ShapeDocumentas body.If you are posting a shape with shape tag original the query parameter
updateItemMetadata=trueensures that system-defined item metadata fields likemediaType,startTimeCode,durationTimeCodeetc. are updated according to the contents of theShapeDocument.