翻译:羊牧东岭
原文地址:https://iiif.io/api/cookbook/recipe/0026-toc-opera/

用例

与书籍一样,音视频内容也可以划分成一个个代表着感兴趣单元的部分。为用户提供对这些单个单元的便捷访问是非常重要的。因此,考虑到仅使用播放器滑块很难跳转到指定位置,如果将音视频项目的结构以目录形式来体现,会更加便于导航。

歌剧是一种以音乐为主导的戏剧形式。歌剧的录像就是结构化音视频的一个很好的例子:一部歌剧由若干组成;每一幕由若干组成;一场之中可能包含多个咏叹调。Range(范围)非常适合于模拟歌剧的层次结构。

实施说明

我们的具体实现类似于书籍的章节,只是嵌套关系可能更深。

我们结构中的 Range 使用时间维度的媒体片段(例如“t=0,100”)来指向同一画布(Canvas)的不同部分。这与 Book Chapters 方案形成了对比,在 Book Chapters 方案中,每个 Range 是使用空间维度的媒体片段,分别指向不同的画布(Canvas)。

当结束时间与画布本身的结束时间重合时,时间维度的媒体片段不再需要明确指定结束时间,就如本例中 Atto Secondo 部分的示例。

限制因素

结构中的 Leaf Range 节点是线性播放的,因此它们应该是连续的,否则其间隙会造成短暂的静音,导致用户体验不佳。

例子

如下所示,这部歌剧涵盖了画布(Canvas)的整个长度,并为两幕而分为两个范围(Range)。Atto Primo部分继续划分,首先创建了一个范围(Range)对应前奏曲和第一首歌曲,然后为该幕的其余部分创建了另一个范围(Range)。简单起见,本例未对 Atto Secondo 部分予以划分。

JSON-LD | 在Universal Viewer中查看

  1. {
  2. "@context": "http://iiif.io/api/presentation/3/context.json",
  3. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/manifest.json",
  4. "type": "Manifest",
  5. "label": {
  6. "it": [
  7. "L'Elisir D'Amore"
  8. ],
  9. "en": [
  10. "The Elixir of Love"
  11. ]
  12. },
  13. "items": [
  14. {
  15. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1",
  16. "type": "Canvas",
  17. "width": 1920,
  18. "height": 1080,
  19. "duration": 7278.422,
  20. "items": [
  21. {
  22. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1/annotation_page/1",
  23. "type": "AnnotationPage",
  24. "items": [
  25. {
  26. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1/annotation_page/1/annotation/1",
  27. "type": "Annotation",
  28. "motivation": "painting",
  29. "target": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1",
  30. "body": {
  31. "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low.mp4",
  32. "type": "Video",
  33. "format": "video/mp4",
  34. "height": 1080,
  35. "width": 1920,
  36. "duration": 7278.422
  37. }
  38. }
  39. ]
  40. }
  41. ]
  42. }
  43. ],
  44. "structures": [
  45. {
  46. "type": "Range",
  47. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/1",
  48. "label": {
  49. "it": [
  50. "Gaetano Donizetti, L'Elisir D'Amore"
  51. ]
  52. },
  53. "items": [
  54. {
  55. "type": "Range",
  56. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/2",
  57. "label": {
  58. "it": [
  59. "Atto Primo"
  60. ]
  61. },
  62. "items": [
  63. {
  64. "type": "Range",
  65. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/3",
  66. "label": {
  67. "it": [
  68. "Preludio e Coro d'introduzione – Bel conforto al mietitore"
  69. ]
  70. },
  71. "items": [
  72. {
  73. "type": "Canvas",
  74. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=0,302.05"
  75. }
  76. ]
  77. },
  78. {
  79. "type": "Range",
  80. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/4",
  81. "label": {
  82. "en": [
  83. "Remainder of Atto Primo"
  84. ]
  85. },
  86. "items": [
  87. {
  88. "type": "Canvas",
  89. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=302.05,3971.24"
  90. }
  91. ]
  92. }
  93. ]
  94. },
  95. {
  96. "type": "Range",
  97. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/5",
  98. "label": {
  99. "it": [
  100. "Atto Secondo"
  101. ]
  102. },
  103. "items": [
  104. {
  105. "type": "Canvas",
  106. "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=3971.24"
  107. }
  108. ]
  109. }
  110. ]
  111. }
  112. ]
  113. }

相关专题