|
| 1 | +--- |
| 2 | +title: Adding Thumbnail Navigation and no-nav to a Video Resource |
| 3 | +id: 229 |
| 4 | +layout: recipe |
| 5 | +tags: structure |
| 6 | +summary: "How to tell a viewer to create a thumbnail-based visual navigation of a video as well as to exclude a segment of that video from any such navigation." |
| 7 | +viewers: |
| 8 | +topic: |
| 9 | + - structure |
| 10 | +--- |
| 11 | + |
| 12 | +## Use Case |
| 13 | + |
| 14 | +You would like to provide visitors with the ability to navigate a video visually using thumbnails, excluding portions of the video with no meaningful video or audio. |
| 15 | + |
| 16 | +## Implementation Notes |
| 17 | + |
| 18 | +This recipe shows two ways that `behavior` can serve in a Range to tell clients how navigation should work. (For a fuller discussion of Ranges, see [the Presentation API Range section][prezi3-range].) |
| 19 | + |
| 20 | +One of the present ways to influence navigation behavior is to use the `no-nav` value, telling a client explicitly to not include a portion of the resource in navigation. When this value appears, whatever Canvases or portions of Canvases are used in the `items` part of the Range should not appear in the interface's navigation. The `id` of a Canvas in the `items` section indicates a Canvas from the Manifest's own `items` section or can be such an `id` with a bounding fragment for AV resources. |
| 21 | + |
| 22 | +The other value used in this recipe is the `thumbnail-nav` value, which directs the consuming client to present an alternate, visual navigation structure using the thumbnail(s) with this `behavior` value. The API is quite clear that a traditional table of contents is not the place to put this visual navigation. Something more akin to thumbnail scrubbing is the metaphor to aim for. This can work with AV resources, where thumbnails might be put along a timeline to represent key moments a viewer might want to use in navigation. It can also be used with still images, where thumbnails might be employed usefully to navigate very large images (long, tall, or both dimensions). For those large still images, thumbnail based navigation — independent of the manifest's Canvases' thumbnails — may be arranged in any way that presents a helpful experience. |
| 23 | + |
| 24 | +Note that `behavior` values are inherited. In order to determine the behaviors governing a particular resource, [there are four inheritance rules to observe](https://iiif.io/api/presentation/3.0/#behavior), two of which apply to Ranges: |
| 25 | +> + Canvases inherit behaviors from their referencing Manifest, but **DO NOT** inherit behaviors from any referencing Ranges, as there might be several with different behaviors. |
| 26 | +> + Ranges inherit behaviors from any referencing Range and referencing Manifest. |
| 27 | +
|
| 28 | +The cookbook discusses elsewhere several other uses of the `behavior` property, collected in the Related Recipes section below. |
| 29 | + |
| 30 | +## Restrictions |
| 31 | + |
| 32 | +None known. |
| 33 | + |
| 34 | +## Example |
| 35 | + |
| 36 | +This example uses a video (roughly 55 minutes long) of a live opera performance. The first nine seconds of the video are marked, in the first subsidiary Range, with `no-nav` because they contain no meaningful video and audio. Subsequent peer Ranges divide the video into ten segments, each assigned a `thumbnail` property and a thumbnail image. While in an authentic environment these might be created from moments that are structurally, semantically, pedagogically, or otherwise significant, here they are merely an equal amount of running time except for the final one. |
| 37 | + |
| 38 | +{% include manifest_links.html manifest="manifest.json" %} |
| 39 | + |
| 40 | +{% include jsonviewer.html src="manifest.json" config='data-line="52,57"'%} |
| 41 | + |
| 42 | +## Related Recipes |
| 43 | + |
| 44 | +* [Simple book][0009] gives an example of a basic paging interface |
| 45 | +* [Book paging variations][0011] shows selected `behavior` options for a book |
| 46 | +* [Viewing direction and its effect on navigation][0010] uses `behavior` for objects with other than left-to-right, top-to-bottom viewing directions |
| 47 | +* [Simple Annotation — Tagging][0021] notes, but does not show, how `behavior` in a tagging annotation can be used to hide the annotation |
| 48 | +* [Table of contents: Book chapters][0024] |
| 49 | +* [Table of contents: One video resource on one canvas][0064] |
| 50 | +* [Table of contents: One video resource on multiple canvases][0065] |
| 51 | +* [Multi-volume work with individually-bound volumes][0030] uses `behavior` to distinguish a multi-volume Collection from other Collection types |
| 52 | +* [Foldouts, flaps, and maps][0035] uses `behavior` to mark a Manifest as paged and a Canvas within the Manifest as not participating in the paging |
| 53 | + |
| 54 | +{% include acronyms.md %} |
| 55 | +{% include links.md %} |
0 commit comments