Videos

About

In University of Tennessee Digital Collections, digital objects that are moving images are considered to be Videos. Videos usually consist of a preservation file stored in Matroska format with a MP4 access copy. The MP4 may be curated and have front matter and other content that is not present in the preservation copy. Its duration may also be different. Like other content models, a Video may be a part of a Compound Object.

Fedora Model

Videos always have structural properties that state their content model the collections in which they are members. Their files mayb also have a bibframe:duration that state how long they are.

@prefix fedora: <info:fedora/fedora-system:def/relations-external#> .
@prefix fedora-model: <info:fedora/fedora-system:def/model#> .
@prefix islandora: <http://islandora.ca/ontology/relsext#> .
@prefix bibframe: <http://id.loc.gov/ontologies/bibframe/#> .

<info:fedora/rfta:8> fedora-model:hasModel <info:fedora/islandora:sp_videoCModel> ;
    fedora:isMemberOfCollection <info:fedora/collections:rfta>, <info:fedora/collections:rftatest> .

<info:fedora/rfta:8/MP4> bibframe:duration "00:57:15" .

If they are parts of compound objects or have restrictions, they may also have additional properties.

IIIF Manifest

The IIIF manifest for a Video inherits the basic format for other manifests. For more information, see Base Manifest.

The items property of the manifest for a Video has one canvas that points at the access proxy of the video. The Canvas should have id, type, label, thumbnail, width, height, duration, items, and annotations properties following the IIIF Presentation v3 specification.

The thumbnail property for a Canvas is a little different than in other work types. Instead of one value, videos have two JSON like objects that are published to the thumbnail property. Like other work types, one relates to the TN datastream of a work and is an image. All of the properties in this thumbnail should be provided by Cantaloupe. The other is a 15 second clip of the video. Currently, that 15 minutes relates to the time between 60 and 75 seconds. Ideally, this would be able to be curated through a property or generated more scientifically.

 1      "thumbnail": [
 2        {
 3          "id": "https:\/\/digital.lib.utk.edu\/iiif\/2\/collections~islandora~object~rfta%3A165~datastream~TN\/full\/max\/0\/default.jpg",
 4          "width": 400,
 5          "height": 400,
 6          "service": [
 7            {
 8              "@id": "https:\/\/digital.lib.utk.edu\/iiif\/2\/collections~islandora~object~rfta%3A165~datastream~TN",
 9              "@type": "http:\/\/iiif.io\/api\/image\/2\/context.json",
10              "@profile": "http:\/\/iiif.io\/api\/image\/2\/level2.json"
11            }
12          ],
13          "duration": 2851,
14          "type": "Image",
15          "format": "image\/jpeg"
16        },
17        {
18          "id": "https:\/\/digital.lib.utk.edu\/collections\/islandora\/object\/rfta%3A165\/datastream\/MP4\/#t=60,75",
19          "type": "Video",
20          "format": "video\/mp4",
21          "width": 200,
22          "height": 200,
23          "duration": 15
24        }
25      ],

The duration value is derived from the bibframe:duration property that describes the work’s MP4 datastream.

Currently, the height and width properties are hard coded. This should ideally be rethought a be based on the actual height and width of the access proxy.

Video works may have one or more subtitle or closed captioning file. When they do, they are added as AnnotationPages in the annotations property. Right now, a closed captioning file can only be Spanish or English and based on the name of the datastream the correct Annotation is added with the motivation of supplementing. The TRANSCRIPT datastream is reserved for English and the TRANSCRIPT-ES datastream is reserved for Spanish:

 1      "annotations": [
 2        {
 3          "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/canvas\/0\/page\/annotation\/rfta%3A165",
 4          "type": "AnnotationPage",
 5          "items": [
 6            {
 7              "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/canvas\/0\/page\/annotation\/rfta%3A165\/627e885c498e2",
 8              "type": "Annotation",
 9              "motivation": "supplementing",
10              "body": {
11                "id": "https:\/\/digital.lib.utk.edu\/collections\/islandora\/object\/rfta%3A165\/datastream\/TRANSCRIPT",
12                "type": "Text",
13                "format": "text\/vtt",
14                "label": {
15                  "en": [
16                    "Captions in English"
17                  ]
18                },
19                "language": "en"
20              },
21              "target": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/canvas\/0"
22            },
23            {
24              "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/canvas\/0\/page\/annotation\/rfta%3A165\/627e885c498eb",
25              "type": "Annotation",
26              "motivation": "supplementing",
27              "body": {
28                "id": "https:\/\/digital.lib.utk.edu\/collections\/islandora\/object\/rfta%3A165\/datastream\/TRANSCRIPT-ES",
29                "type": "Text",
30                "format": "text\/vtt",
31                "label": {
32                  "es": [
33                    "Subt\u00edtulos en espa\u00f1ol"
34                  ]
35                },
36                "language": "es"
37              },
38              "target": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/canvas\/0"
39            }
40          ]
41        }
42      ]

When completed, the items property should look like this:

 1  "items": [
 2    {
 3      "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/canvas\/0",
 4      "type": "Canvas",
 5      "label": {
 6        "none": [
 7          "Interview with Julia Rodriguez, 2021-03-03"
 8        ]
 9      },
10      "thumbnail": [
11      "height": 640,
12      "width": 360,
13      "duration": 2851,
14      "items": [
15      ],
16      "annotations": [
17      ]
18    }
19  ],

Videos are also special in that the manifest may have a structures property with ranges. This property provides a table of contents of sorts that may be functional in some viewers according to IIIF presentation v3 specification.

The structures property has 1-n ranges declared in it. In our sample we have 4:

 1  "structures": [
 2    {
 3      "type": "Range",
 4      "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/range\/preguntas_de_entrevista",
 5      "label": {
 6        "en": [
 7          "Preguntas de entrevista"
 8        ]
 9      },
10      "items": [
11      ]
12    },
13    {
14      "type": "Range",
15      "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/range\/interview_questions",
16      "label": {
17        "en": [
18          "Interview Questions"
19        ]
20      },
21      "items": [
22      ]
23    },
24    {
25      "type": "Range",
26      "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/range\/places_mentioned",
27      "label": {
28        "en": [
29          "Places Mentioned"
30        ]
31      },
32      "items": [
33      ]
34    }
35  ]

Each of these ranges provide independent navigation. These values are derived from the MODS datastream of the work in its pbcore extension section. This section is segmented into many parts. Each part has a partType attribute that determines which section it should belong to:

<pbcore:pbcorePart
    partType="Preguntas de entrevista"
    startTime="00:01:07"
    endTime="00:01:15">
    <pbcore:pbcoreIdentifier source="local">2021_03_03_Rodriguez_Julia_esQ1</pbcore:pbcoreIdentifier>
    <pbcore:pbcoreTitle>Me puede decir por favor su nombre?</pbcore:pbcoreTitle>
    <pbcore:pbcoreDescription>Pregunta 1</pbcore:pbcoreDescription>
</pbcore:pbcorePart>

In the items property of each Range, are many ranges based on each pbcore:pbcorePart. In these ranges, there is a label derived from the pbcore:pbcoreTitle and a items property with a Canvas that references the associated video with a timestamp derived from the startTime and endTime information.

 1        {
 2          "type": "Range",
 3          "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/range\/preguntas_de_entrevista\/0",
 4          "label": {
 5            "en": [
 6              "Me puede decir por favor su nombre?"
 7            ]
 8          },
 9          "items": [
10            {
11              "type": "Canvas",
12              "id": "https:\/\/digital.lib.utk.edu\/assemble\/manifest\/rfta\/165\/canvas#t=00:01:07,00:01:15"
13            }
14          ]
15        },

Viewing Experience

Our videos work well in IIIF viewers that are designed for Video and to a lesser extent in other viewers.

For RFTA, we deliver videos in the Canopy “built-in” viewer. This viewer makes use of captions, transcripts, and structures and ranges.

RFTA in Canopy

The Clover viewer offers a similar experience but with no structures or ranges.

RFTA in Clover

Structures and ranges are displayed in Mirador, but do not currently function. Similarly, there are no closed captioning options.

RFTA in Mirador

A limited viewing experience is available in Universal Viewer.

RFTA in Universal Viewer