Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ Documentation and workshop materials for IIIF training

## Bespoke Training

* [National Library of Wales](nlw-workshop/index.html) - a bespoke 2 day workshop written for the NLW and delivered in 2025.
* [Getty Research Institute](gri_getty/index.html) - a bespoke 2 hour workshop written for the Getty GRI and delivered in 2023.
* [British Library online Training](iiif-bl-workshop/index.html) - a bespoke 5 day workshop written for the British Library and delivered in 2021/22.
* [Humboldt University of Berlin](humboldt_university/index.html) - a bespoke 2.5 hour workshop looking at the basics of using IIIF and aggregation.
Expand Down
32 changes: 32 additions & 0 deletions nlw-workshop/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# National Library of Wales Training

## Brief
The National Library of Wales is looking for a two day on-site training with day one to cover the basics of the Image API, Presentation API and annotations. Day two should include a half day on Audio Visual support for IIIF and half a day looking at tools and implementations and then an open discussion on future directions for the NLW IIIF support.

## Hands on IIIF Workshop
The staff of the IIIF Consortium are working with the NLW to provide a custom 2 day training introducing the benefits and opportunities of using IIIF. Where possible examples will be provided using NLW content and participants are encouraged to identify NLW content they can use through the workshop.

The workshop is intended to give a hands-on experience of working with IIIF images, Manifests and AV resources. No prior technical or IIIF knowledge is required and all the tools will be made available using a Web Browser like Chrome or Firefox. You will be asked to register for a free Github account, instructions will be provided.

## Tuesday 18th February

| Session | Content |
|----------|----------|
| 10:00 - 11:00 | Using IIIF - A user perspective 1 hour <br> - Introduction to IIIF tools <br> - Comparing content <br> - Finding a NLW manifest and opening it in a different viewer. |
| 11:00 - 11:45 | **Break** |
| 11:15 - 12:30 | IIIF Images <br> - Inspecting a IIIF Image <br> - IIIF Image setup <br> - Finding NLW images <br> - NLW Image servers |
| 12:30 - 13:30 | **Lunch** |
| 13:30 - 14:30 | IIIF Manifests - Books / Manuscripts / Newspapers etc. <br> - Basics of a Manifest <br> - Creating a manifest using the Bodleian Manifest editor <br> - Looking at manifests and collections <br> - Newspapers and Journals <br> - Book of Remembrance |
| 14:30 - 14:45 | **Break** |
| 14:45 - 16:00 | Annotations <br> - Book of remembrance project <br> - IIIF Search API <br> - Annotating NLW manifests |

## Wednesday 19th February

| Session | Content |
|----------|----------|
| 10:00 - 11:00 | Working with AV collections <br> - AV in IIIF basics <br> - Creating an AV Manifest <br> - AV tools |
| 11:00 - 11:15 | **Break** |
| 11:15 - 12:30 | Tools and implementations <br> - Allmaps <br> - Exhibit <br> - Others that come up in the course |
| 12:30 - 13:30 | **Lunch** |
| 13:30 - 16:00 | Open discussion and questions |

70 changes: 70 additions & 0 deletions nlw-workshop/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Summary

- [Overview](README.md)

## Introduction to IIIF
- [What is IIIF](basics/whatisiiif.md)
- [Finding NLW Manifests](nlw-manifests.md)
- [Exercise](basics/guides.md)

## IIIF Image API
- [Image API](day-two/image-api.md)
- [Identifier](day-two/image-api/identifier.md)
- [Region](day-two/image-api/region.md)
- [Size](day-two/image-api/size.md)
- [Rotation](day-two/image-api/rotation.md)
- [Quality](day-two/image-api/quality.md)
- [Format](day-two/image-api/format.md)
- [Group Question](day-two/question.md)
- [File formats](day-two/fileformats.md)
- [Uses](day-two/uses.md)
- [NLW Image servers](nlw-image-servers.md)
- [Getting started](day-two/image-servers/README.md)
- [NLW Images](nlw_images.md)
- [Hosted - Internet Archive](day-two/image-servers/iiif-hosting-ia.md)
- [Static Images - Workbench](day-two/image-servers/level0-workbench.md)
- [Cantaloupe (Advanced)](day-two/image-servers/setting-up-cantaloupe.md)

## Presentation API
- [Presentation API](day-three/README.md)
- [Create a Manifest](day-three/bodleian-editor/README.md)
- [Setup your environment](day-three/visual_studio_setup/README.md)
- [Edit a Manifest](day-three/edit-a-manifest/README.md)
- [Add Structure](day-three/ranges/README.md)
- [Publishing your manifest](day-three/workbench/README.md)
- [NLW Manifest examples](nlw-interesting-manifests.md)

## Annotations
- [Introduction](day-four/README.md)
- [Annotations](day-four/annotations-and-annotation-lists.md)
- [Annotating with Mirador](day-four/annotations-exercises.md)
- [Annotating Stores](day-four/annotations-stores.md)
- [Annotating Stores - Results](day-four/annotations-stores-results.md)
- [Annotating your own content](day-four/annotations-sas.md)
- [Linking and Viewing your Annotations](day-four/annotation-linking.md)
- [IIIF Search API](day-four/iiif-search-api.md)
- [Publishing your annotated Manifest](day-four/workbench.md)
- [Annotating Store - Do it yourself](day-four/annotations-stores-install.md)
- [Advanced annotation presentation](day-four/advanced-annotations.md)
- [NLW Annotations](nlw-annotations.md)

## IIIF & AV
- [An introduction to AV](av-intro.md)
- [Looking at a BL audio file](day-three/BL-Audio/README.md)
- [Looking at the Internet Archive Videos](ia-examples.md) **todo**
- [Examples](av-examples.md)
- [Create video Manifest](day-three/digirati-editor/Add_video_manifest.md)

## Tools and implementations
- [Tools](tools.md) **todo**
- [Exhibit](exhibit/exhibit.md)
- [All Maps](use_cases/allmaps.md)
- [FromThePage](use_cases/FromThePage.md)

## Open discussion
- [topics](topics.md)

## Extras
- [Guides](extras/README.md)
- [Using non IIIF images in a manifest](https://glenrobson.github.io/iiif_stuff/simple_images/)
- [A basic Video manifest](extras/AVExample.md)
78 changes: 78 additions & 0 deletions nlw-workshop/av-examples.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# NLW AV Examples

IIIF works with AV content that is made available in the following ways:

* It must be made available over https
* IIIF needs direct access to the video file (i.e. no youtube)
* For speed of access support for [HTTP range requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests) is recommended
* IIIF does support adaptive bitrate streaming via HLS protocol
* Provides [CORS headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)

The examples below are stored on Amazon s3 which supports HTTP range requests, https and the appropriate CORS headers. The width, height and duration in seconds can be worked out by using the following command:

```
ffprobe -v error -select_streams v:0 -show_entries stream=width,height,duration -of json "your-video-file.mp4"
{
"programs": [

],
"stream_groups": [

],
"streams": [
{
"width": 1920,
"height": 1080,
"duration": "449.120000"
}
]
}
```

## Interview with Mike England and Ian Rush

* [video](https://iiif.gdmrdigital.com/nlw/2025/training/aohaa00000132.mp4)
* [Clip Link](https://clip.library.wales/detail/318292?published=published_public&terms=rush&sorting=DESC&results=12&viewmode=grid)
* **Duration:** 449.12
* **Width:** 1920
* **Height:** 1080

## Interview with John Neal (Wrexham) and John Charles (Merthyr Tydfil)

* [video](https://iiif.gdmrdigital.com/nlw/2025/training/aohaa00000133.mp4)
* [Clip Link](https://clip.library.wales/detail/318293?published=published_public&terms=wrexham&sorting=DESC&results=12&viewmode=grid)
* **Duration:** 187.00
* **Width:** 1920
* **Height:** 1080

## Swansea City – Interview with manager John Toshack

* [video](https://iiif.gdmrdigital.com/nlw/2025/training/aohaa00000134.mp4)
* [Clip Link](https://clip.library.wales/detail/318294?published=published_public&terms=football&page=1&sorting=DESC&results=12&viewmode=grid)
* **Duration:** 130.28
* **Width:** 1920
* **Height:** 1080

## Wrecsam yn sicrhau dyrchafiad i'r Ail Adran

* [video](https://iiif.gdmrdigital.com/nlw/2025/training/aohaa00000135.mp4)
* [Clip Link](https://clip.library.wales/detail/318295?published=published_public&terms=wrexham&page=1&sorting=DESC&results=12&viewmode=grid)
* **Duration:** 174.44
* **Width:** 1920
* **Height:** 1080

## Wrexham training on the Racecourse ground

* [video](https://iiif.gdmrdigital.com/nlw/2025/training/aohaa00000136.mp4)
* [Clip Link](https://clip.library.wales/detail/318296?published=published_public&terms=wrexham&sorting=DESC&results=12&viewmode=grid)
* **Duration:** 124.76
* **Width:** 1920
* **Height:** 1080

## Swansea City promoted to the Third Division

* [video](https://iiif.gdmrdigital.com/nlw/2025/training/aohaa00000137.mp4)
* [Clip Link](https://clip.library.wales/detail/318297?published=published_public&terms=swansea&sorting=DESC&results=12&viewmode=grid)
* **Duration:** 255.32
* **Width:** 1920
* **Height:** 1080
70 changes: 70 additions & 0 deletions nlw-workshop/av-intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Introduction to AV

## Canvas deep dive

The canvas is a core feature of IIIF. For images the canvas is usually equivalent to a page in a book. For AV material the distinction can be more complicated. It is sometimes thought of as a empty powerpoint slide where images or audio are `painted` on to the slide at particular positions.

In the image below you can see the canvas has a height and a width. The example image is `painted` on to the full canvas so that the canvas width and height match the image width and height. This is the most common use case for IIIF images.

![Diagram showing painting of an image on to a canvas.](day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup1.png)

In the following example you can see two images are painted onto one canvas. One image is the background manuscript and the second image is the illustration. The background manuscript image is `painted` on to the canvas and matches the canvas height and width. The Illustration is `painted` on to a particular region of the canvas so that it appear in the correct place.

![Alt text](day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup2.png)

The support for AV in IIIF entailed the addition of duration to the canvas. Now a canvas can have a height, width and duration. Different dimensions are needed for different content types i.e:

* Images required width and height
* Audio only files require duration
* Video files required width, height and duration

![Alt text](day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup3.png)

With the canvas example below we have an canvas duration of 10 seconds. We can now `paint` an image on to the canvas and set it for a duration of 10 seconds so it will show for the full duration of the canvas.

![Alt text](day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup4.png)

We can also `paint` a video on to the canvas and in the example below it is painted on a particular region of the canvas and set to play starting at second 4 and finishing at second 7.

![Alt text](day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup5.png)

You can keep on adding images, videos and text to create a complicated canvas. The examples above where developed during the discussions on adding AV and a prototype presentation of this canvas can be seen at the following URL:

https://tomcrane.github.io/fire/

The method for `painting` an image, audio or video resource on to a IIIF canvas is done through an annotation. If we look at the following example where we can assume the body of the annotation is an audio recording. We can see the `target` points to the canvas ID and adds `#t=00.00,182.88` to the end of the canvas id. This means the body (audio resource) is painted on to the canvas from the start (second 00.00) to the end (second 182.88). In this case the `target` points to the full duration of the canvas so the addition of the `#t=00.00,182.88` isn't necessary as if the target points to the canvas id then it is assumed to cover the full duration of the canvas.

```
{
"id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004/anno1/1",
"type": "Annotation",
"motivation": "painting",
"target": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004#t=00.00,182.88",
"body": [ ... ]
}
```

Note if the audio resource in the body is longer than the time specified in the canvas it should be played faster and if the audio resource is shorter than the target region then it should be played slower to fit the desired duration.

## Working example

Using one of the example NLW video files I created a manifest using the Digirati Manifest editor and then added a few fields that weren't supported by the editor. You can see the manifest below:

[Example AV Manifest](av-manifest.json)

Important features:
* Bilingual metadata
* Navdate: `"navDate": "1982-11-21T00:00:00Z",`
* requiredStatement and rights
* homepage pointing to Clip website
* provider linking to NLW
* VTT files

To view this in a number of viewers you can click on the following links:

* [Universal Viewer](https://uv-v4.netlify.app/#?c=&m=&s=&cv=&manifest=https://training.iiif.io/nlw-workshop/av-manifest.json)
* [Mirador](https://projectmirador.org/embed/?iiif-content=https://training.iiif.io/nlw-workshop/av-manifest.json)
* [Clover](https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://training.iiif.io/nlw-workshop/av-manifest.json)
* [Ramp](https://ramp.avalonmediasystem.org/?iiif-content=https://training.iiif.io/nlw-workshop/av-manifest.json)
* [Avery](https://iiif.aviaryplatform.com/player?manifest=https://training.iiif.io/nlw-workshop/av-manifest.json)
* [Theseus](https://theseusviewer.org/?iiif-content=https://training.iiif.io/nlw-workshop/av-manifest.json)
Loading
Loading