《EPUB 3.0规范》之5/5:《 媒体叠加》

Contents

[ hide ]

  1. 1 Purpose and Scope 目的与范围
  2. 2 Relationship to Other Specifications 与其它规范的关系
  3. 3 Terminology 术语
  4. 4 Conformance Statements 合规声明
  5. 5 Introduction 简介
  6. 6 Content Conformance 内容合规
  7. 7 Reading System Conformance 阅读系统合规条件
  8. 8 Media Overlay Document Definition 媒体叠加文件定义
  9. 8.1 The smil Element
  10. 8.2 The head Element
  11. 8.3 The metadata Element
  12. 8.4 The body Element
  13. 8.5 The seq Element
  14. 8.6 The par Element
  15. 8.7 The text Element
  16. 8.8 The audio Element
  17. 9 Overview 概述
  18. 10 Relationship to the EPUB Content Document 和EPUB内容文件的关系
  19. 10.1 Structure 结构
  20. 10.2 Granularity 精细度
  21. 10.3 Embedded Audio and Video 嵌入的音频、视频
  22. 10.4 Text-to-Speech 语音合成
  23. 11 Semantic Inflection 语义变化
  24. 12 Associating Style Information 关联样式信息
  25. 13 Packaging 包裹
  26. 13.1 Including Media Overlays 添加媒体叠加
  27. 13.2 Media Overlays Metadata Vocabulary 媒体叠加元数据词汇
  28. 14 Loading the Media Overlay 加载媒体叠加
  29. 15 Basic Playback 基本播放
  30. 15.1 Timing and Synchronization 定时与同步
  31. 15.2 Rendering Audio 渲染音频
  32. 15.3 Rendering EPUB Content Document Elements 渲染EPUB内容文件元素
  33. 16 Interacting with the EPUB Content Document 与EPUB内容文件交互
  34. 16.1 Navigation 导航
  35. 16.2 Embedded Audio and Video 嵌入的音频和视频
  36. 16.3 Text-to-Speech 语音合成
  37. 17 Skippability and Escapability 跳过和退出
  38. 17.1 Skippability 跳过
  39. 17.2 Escapability 退出
  40. 18 A.1. Using the Media Overlays Schema 使用媒体叠加构架

Overview 综述

Purpose and Scope 目的与范围

本节是说明。

本EPUB媒体叠加规范3.0为了同步表达EPUB内容文件和声频,对 SMIL (Synchronized Multimedia Integration Language,多媒体同步集成语言)、包文件、EPUB®样式表和EPUB内容文件加以规范。

本EPUB Open Container Format (OCF) 3.0规范定义文件格式和处理模式,以封装一组相关资源到单一文件容器。这组资源由一到多个EPUB®出版物组成。

本规范是构成EPUB3的一组相关规范中的一个,是用于以XML和Web标准为基础的数字出版物进行交换和传递格式的第三次重大修订。它的阅读、理解不能离开构成EPUB3的其它规格:

  •      3.0 概述 EPUB3Overview),提供关于EPUB的信息概述和到其它三个EPUB文件的路线图。应首先阅读EPUB3概述。
  •      3.0 开放容器格式(OCF)( OCF3),为封装一组相关的资源到一个单一文件(ZIP)的EPUB容器对格式和处理模型进行定义。

Relationship to Other Specifications 与其它规范的关系

本节是说明。

本规范依赖于 SMIL的一个子集,自其派生出EPUB媒体叠加的元素和属性,定义见 Media Overlay Document Definition

Terminology 术语

EPUB Publication, EPUB出版物

含有一组相关 资源且打包在 EPUB容器的逻辑文件实体,由本规范及其 EPUB3 成套规范sibling specifications定义 。

Publication Resource,出版物资源

包含内容或指导的资源,用于EPUB出版物的逻辑和渲染。缺了这些资源,出版物有可能不按照作者所打算的渲染。出版物资源的例子有包文件(Package Document)、EPUB内容文件(Content Documents)、 EPUB 样式表(Style Sheets)、声频视频、图像、嵌入字体和脚本 。

除了包文件本身,出版物资源都应该列在manifest,且必须——除非在 Publication Resource Locations另有规定——捆绑在EPUB容器文件。

不是出版物资源的资源例子包括: Package Document link元素所指定的,以及在向外打开的超链接里指定、在EPUB容器外面落实的资源
(例如,由 HTML5 a元素的href属性引用的)。

EPUB Content Document,EPUB内容文件

符合EPUB内容文件定义之一( XHTML SVG)的出版物资源。
EPUB内容文件是核心媒体类型资源,因此可以不加 fallbacks就放入EPUB出版(Publication)。

XHTML Content Document,XHTML内容文件

符合 HTML5描述,定义在 XHTML Content Documents的EPUB内容文件。

XHTML内容文件使用 HTML5 XHTML syntax语法.

SVG Content Document,SVG内容文件
符合 SVGContent Document里所列明之限制的EPUB内容文件。

EPUB Navigation Document,EPUB导航文件
专门的XHTML内容文件,内含人、机可读的全球导航信息,符合 EPUB Navigation Documents里面所写的限制。

Core Media Type,核心媒体类型
一组不需要fallback的 Publication Resource类型。更多信息请参 Publication Resources

Package Document,包文件
Package Documents所定义,带有关于EPUB出版物的书目、结构元数据的出版(Publication)资源。

Manifest,布置清单
构成EPUB出版物的所有出版(Publication)资源列表。
更多信息请参 Manifest

Spine
出版物资源的有序列表,代表出版物的默认阅读顺序,EPUB内容文件就是典型。

Media Overlay Document,媒体叠加文件

属于XML文件,它把XHTML内容文件与事先录制的旁白声频相关联,以便同步播放,定义在 MediaOverlays30

Text-to-Speech (TTS),语音合成
使用合成声音对EPUB出版物的文本内容进行处理。

EPUB Style Sheet (or Style Sheet),EPUB样式表

是符合 EPUB Style Sheets所定义的CSS样式表。

Viewport,视口

EPUB阅读系统的一个区域,通过它EPUB出版物可视化地呈现给用户。

CSSViewport,CSS视口
能够显示CSS样式内容的视口。

EPUB Container (or Container),EPUB容器

用于EPUB出版物、基于ZIP的打包与发行格式,定义在 OCF3.

Author,作者

负责生成EPUB出版物的人或组织,不一定是所含内容或资源的创作者。

User,用户

使用EPUB阅读系统消费EPUB出版(Publication)的个体。

EPUB Reading System (or Reading System),EPUB阅读系统

按照与EPUB3本规范及其相关规范相符的方式将EPUB出版物呈现给用户的系统。

Conformance Statements 合规声明

本文件的关键字”MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL”(“必须”,“不可”,“要求”,“应该”,“不要”,“应该”,“不应该”,“推荐”,“可能”,和“可选”)应该按照 RFC2119的描述进行解读。。

本规范的所有章节,除非标有“本节为说明性内容”的,都是规范性的。加给章节的说明状态适用于所有它们包含的内容和小节。

本规范的所有例子都是说明性的。

Media Overlay Document Definition 媒体叠加文件定义

Introduction 简介

本节只是说明

带有同步声频叙述特色的书见于为阅读阻碍人士(制作)的主流电子书、教育工具和电子书格式。在EPUB3,这些类型的书使用媒体叠加文件来制作,对预录制的声频叙述描述定位、以及如何与EPUB内容文件标记相关联。媒体叠加的文件格式被定义为 SMIL的子集,这是W3C推荐用于在XML里同步多媒体信息的。

媒体叠加特性的设计,对不支持该特性的EPUB阅读系统是透明的。在EPUB出版物里添加媒体叠加,并不影响那些不识别媒体叠加的阅读系统把该出版物作为“正常的”EPUB出版物进行渲染的能力。

虽然本规范的将来版本有可能合并对视频媒体的支持(如,同步化的文本/手语书),本版本只支持EPUB内容文件和声频媒体的同步。

Content Conformance 内容合规

一个媒体覆盖文件 Media Overlays document必须满足以下所有指标:

文件属性(Document Properties)

› 必须满足XML合规 XML Conformance里面为XML文件定义的约束
› 对于附录 Appendix A, Media Overlays Schema里面定义的媒体叠加schema必须是有效的,并且符合 媒体叠加文件 Definition里面的所有内容合规约束。
› 它的成书必须体现,如 Structure所说的,与其关联的EPUB内容文件的结构。
› 作者必须避免使用脚本来控制嵌入在EPUB内容文件里面的视频、声频,见 Embedded Audio and Video所述的。
› 它应该按照 Semantic Inflection所描述的在合适的地方使用语义标记。
› 它必须按照 Packaging所示意的和EPUB出版物打包在一起。

文件属性(File Properties)

› 媒体叠加文件的文件扩展名应该使用.smil。

Reading System Conformance 阅读系统合规条件

EPUB阅读系统对媒体叠加的支持是可选性质的。支持媒体叠加的阅读系统模型满足下面所有的条件:

› 它处理媒体叠加文件,必须符合Media Overlay Document Definition里面所表达的全部阅读系统合规约束。
› 它必须支持XHTML内容文件,可以支持SVG 内容文件。
› 必须按照Basic Playback所描述的渲染媒体叠加元素。
› 如 Navigation里讨论的,它必须允许用户在媒体叠加被播放的时候可以导航。
› 它必须,如 Embedded Audio and Video所述的,遵守嵌入在EPUB内容文件里引用的视频、声频的相关规则(It must adhere to rules
regarding referenced audio and video embedded in the EPUB Content Document, as stated in Embedded Audio and Video)。
› 带TTS功能的阅读系统必须符合 Reading System Text-to-Speech Conformance Requirements, Publications30
› 它必须提供 Skippability and Escapability所描述的可跳过、退出特性。

不支持媒体叠加的阅读系统模型满足下面所有的条件:

› manifest里面item元素的media-overlay属性,以及manifest里面media-type属性值等于application/smil+xml的item元素,它都必须忽略。

Media Overlay Document Definition 媒体叠加文件定义

除非另有说明,在本节中定义的所有元素 XML都在http://www.w3.org/ns/SMIL 命名空间 XMLNS

The smil Element

smil元素必须是所有媒体叠加文件的根元素。

Element Name 元素名称
smil

Usage 用法
smil元素是媒体叠加文件的根元素。

Attributes 属性
version 要求
指定媒体叠加所依附的 SMIL规范的版本号。
本属性必须取3.0的值,以表明符合本版本的规范。

id 可选
本元素的ID,在文件范围内必须唯一。

epub:prefix 可选
声明额外的元数据词汇前缀。
更多信息请参看: Semantic Inflection

内容模式
按此顺序: head 可选, body 要求

The head Element

head元素是元数据在媒体叠加文件里面的容器,由0或1个子metadata元素构成。

Element Name 元素名称
head

Usage 用法
head元素是smil元素的一级可选子元素。

Attributes 属性

内容模式
metadata 0或1个

由于本规范没有要求在媒体叠加文件里面必须出现metadata属性,head元素是可选的。

The metadata Element

metadata元素为媒体叠加文件表达元数据。metadata元素是一个扩展点,它允许加入来自任意元信息结构语言(any metainformation structuring language)的元数据

Element Name 元素名称
metadata

Usage 用法
作为head元素的子元素。

Attributes 属性

内容模式
来自任意命名空间的 0或多个元素。

本规范没有要求在媒体叠加文件里面必须出现metadata属性;为用户的元数据需要提供了metadata元素。

The body Element

body元素是媒体叠加文件中演示的开始点。它含有par和seq元素的主顺序。

Element Name 元素名称
body

Usage 用法
body元素是smil元素要求的二级子元素。

Attributes 属性
epub:type 可选
EPUB内容文件中对应元素的结构化语义的表达式。
值是由空格分隔的属性类型 property清单。更多信息请参阅 Semantic Inflection

id 可选
本元素的ID,在文件范围内必须唯一。

epub:textref 可选
对应EPUB内容文件的相对IRI引用 RFC3987,包括一个碎片标识符,此标识符根据 XPTRSH引用具体的元素。

内容模式
按任意顺序:seq 0或多个或 par 0或多个
要求至少一个par或seq。

The seq Element

seq元素含有待顺序渲染的媒体对象。

Element Name 元素名称
seq

Usage 用法
可以作为body元素和seq元素的子元素出现一到多个seq元素。

Attributes 属性

epub:type 可选
EPUB内容文件中对应元素的结构化语义的表达式。
值是由空格分隔的属性类型 property清单。更多信息请参阅 Semantic Inflection

id 可选
本元素的ID,在文件范围内必须唯一。

epub:textref 可选
对应EPUB内容文件的相对IRI引用 RFC3987,包括一个碎片标识符,此标识符根据 XPTRSH引用具体的元素。

内容模式
按任意顺序:seq 0或多个或 par 0或多个
要求至少一个par或seq。

The par Element

par元素含有待并行渲染的媒体对象。

Element Name 元素名称
par

Usage 用法
可以作为body元素和seq元素的子元素出现一到多个par元素。

Attributes 属性
epub:type 可选
EPUB内容文件中对应元素的结构化语义的表达式。
值是由空格分隔的属性类型 property清单。更多信息请参阅 Semantic Inflection
id 可选
本元素的ID,在文件范围内必须唯一。
epub:textref 可选
对应EPUB内容文件的相对IRI引用 RFC3987,包括一个碎片标识符,此标识符根据 XPTRSH引用具体的元素。

内容模式
按任意顺序:text 要求和audio 可选
audio元素只有在下面的情况下才是可选的:text姊妹元素指定了audio或video媒体(见 Embedded Audio and Video),或指定了用于通过TTS渲染的文本内容。

The text Element

text元素引用EPUB内容文件里面的元素。text元素通常文本内容的元素,但也可以指其它EPUB内容文件媒体元素(见 Embedded Audio and Video)。

Element Name 元素名称
text

Usage 用法
作为par元素要求的子元素。

Attributes 属性
src 要求
对应EPUB内容文件的相对IRI引用 RFC3987,包括一个片段标识符,此标识符根据 XPTRSH引用具体的元素。
id 可选
本元素的ID,在文件范围内必须唯一。

内容模式

The audio Element

audio元素代表声频的剪辑。

Element Name 元素名称
audio

Usage 用法
par元素要求的子元素,除非姊妹text元素指定了audio或video媒体,在此情况下,audio是可选的(见 Embedded Audio and Video)。

Attributes 属性
id 可选
本元素的ID,在文件范围内必须唯一。

scr 要求
对audio文件的相对或绝对IRI引用 RFC3987。audio文件必须是 Core Media Types表里面列出的声频格式之一。

clipBegin 可选
时钟值,对应于声频剪辑开始位置,它指定跳过物理媒体偏移量。
时钟值是 SMIL clock values的子集,定义在 SMIL。见附录 B, Examples of Clock Values

clipEnd 可选
时钟值,对应于声频剪辑结束位置,它指定跳过物理媒体的偏移量。
时钟值是 SMIL clock values的子集,定义在 SMIL。见附录 B, Examples of Clock Values
结束位置的偏移量时序必须在clipBegin属性指定的开始偏移量之后。

内容模式

Creating Media Overlays 生成媒体叠加

Overview 概述

本节是说明信息

预先录制的出版物旁白可以表达为一个音频剪辑系列,每一个对应EPUB内容文件的一部分。例如,一个单一的音频剪辑,通常表示一个单一的短语或段落,但不提示相对于其它剪辑或文本文件的次序。借助 SMIL标记,将结构化的音频解说联系到EPUB内容文件里的对应文本(或其它媒体),媒体叠加解决了这一同步问题。媒体叠加其实是SMIL3.0的简化子集,允许对这些片段的播放顺序加以定义。

主要用于媒体叠加结构的SMIL元素有 body(用于主序列), seq(序列)和 par(平行)(关于这些元素和其它元素的详细信息,请参阅 Media Overlay Document Definition)。

par元素是叠加的基础构件,并且和EPUB内容文件中的一个短语相对应。元素为内容同步提供了两个关键信息:1)含有对短语进行叙述的音频剪辑;以及2)指向EPUB内容文件关联片段的指针。par元素使用两个媒体子元素来代表这样的信息: audio元素和 text元素的子元素。由于各个par元素对其子元素平行渲染,音频剪辑和EPUB内容文件片段同时播放,产生同步演示。

text元素的src属性引用关联的短语、句子,或EPUB内容文件的其它IRI引用片段。类似的,audio元素的src属性引用对应音频剪辑的位置,并增加了可选的 clipBegin clipEnd属性在剪辑里指定具体的位置。

以下例子显示对一个短语或句子的媒体叠加标记。
<xml>
<par>
<text src=”chapter1.xhtml#sentence1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”23s” clipEnd=”30s”/>
</par>
</xml>

各个par元素按照顺序放在一起,形成短语或句子的一个系列。并不是EPUB内容文件的每个元素在媒体叠加里都有对应的par元素,只是那些和音频旁白相关的元素才有。

下面的例子显示含有短语系列的一个基本媒体叠加文件。body元素起整个文件主次序的作用。
<xml>
<smil xmlns=”http://www.w3.org/ns/SMIL”
version=”3.0″>
<body>
<par id=”par1″>
<text src=”chapter1.xhtml#sentence1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0s” clipEnd=”10s”/>
</par>
<par id=”par2″>
<text src=”chapter1.xhtml#sentence2″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”10s” clipEnd=”20s”/>
</par>
<par id=”par3″>
<text src=”chapter1.xhtml#sentence3″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”20s” clipEnd=”30s”/>
</par>
</body>
</smil>
</xml>
par元素也可以添加到seq元素,用于定义章节这样的复杂结构(见 Structure)。

Relationship to the EPUB Content Document 和EPUB内容文件的关系


本节假设 EPUB内容文件 XHTML内容文件。虽然媒体叠加可以和 SVG内容文件一起使用,但是播放行为有可能不连续,因此不能够保证相互操作性。

Structure 结构

媒体叠加元素的排序必须和EPUB内容文件的默认阅读顺序相一致。par元素表达短语,seq元素(序列)表达嵌套的EPUB内容文件容器,如小节、旁白、标题和脚注。seq的子元素必须是其它的seq或par元素。每个seq元素必须包含一个 epub:textref属性,它通过IRI引用EPUB内容文件的对应元素。

下面的例子说明嵌套seq元素的媒体叠加文件,表达既有标题也有侧栏的一章。侧栏本身有嵌套图。
<xml>
<smil xmlns=”http://www.w3.org/ns/SMIL”
xmlns:epub=”http://www.idpf.org/2007/ops”
version=”3.0″>
<body>

<!– a chapter –>
<seq id=”id1″ epub:textref=”chapter1.xhtml#sectionstart” epub:type=”chapter”>

<!– the section title –>
<par id=”id2″>
<text src=”chapter1.xhtml#section1_title”/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:23:23.84″ clipEnd=”0:23:34.221″/>
</par>

<!– some sentences in the chapter –>
<par id=”id3″>
<text src=”chapter1.xhtml#text1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:23:34.221″ clipEnd=”0:23:59.003″/>
</par>
<par id=”id4″>
<text src=”chapter1.xhtml#text2″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:23:59.003″ clipEnd=”0:24:15.000″/>
</par>

<!– an informational sidebar –>
<seq id=”id5″ epub:textref=”chapter1.xhtml#sidebar” epub:type=”sidebar”>
<par id=”id6″>
<text src=”chapter1.xhtml#sidebartitle”/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:15.000″ clipEnd=”0:24:18.123″/>
</par>

<!– a figure within the sidebar –>
<seq id=”id7″ epub:textref=”chapter1.xhtml#figure”>
<par id=”id8″>
<text src=”chapter1.xhtml#photo”/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:18.123″ clipEnd=”0:24:28.764″/>
</par>
<par id=”id9″>
<text src=”chapter1.xhtml#caption”/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:28.764″ clipEnd=”0:24:50.010″/>
</par>
</seq>

<!– some sentences in the sidebar –>
<par id=”id10″>
<text src=”chapter1.xhtml#sidebartext1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:50.010″ clipEnd=”0:25:28.530″/>
</par>
<par id=”id11″>
<text src=”chapter1.xhtml#sidebartext2″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:25:28.530″ clipEnd=”0:25:45.515″/>
</par>
</seq>

<!– more sentences in the chapter (outside the sidebar) –>
<par id=”id12″>
<text src=”chapter1.xhtml#text3″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:25:45.515″ clipEnd=”0:26:30.203″/>
</par>
<par id=”id13″>
<text src=”chapter1.xhtml#text4″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:26:30.203″ clipEnd=”0:27:15.000″/>
</par>

</seq>
</body>
</smil>
</xml>

把侧栏、小节标题、图、表和脚注这样的结构归类在seq元素里面的理由,是为了使它们的起止位置能够在播放过程中得以识别。然后阅读系统可以为出版物剪裁出播放选项,比如跳过一个长侧栏,关闭对分页声明的渲染(见 Skippability and Escapability),或为适应表格这样的结构定制阅读模式。

下面的例子显示对应于前面媒体叠加例子的EPUB出版物文件。
<xml>
<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:epub=”http://www.idpf.org/2007/ops”
xml:lang=”en”
lang=”en”>
<head>
<title>Media Overlays Example of EPUB Content Document</title>
</head>
<body id=”sec1″>
<section id=”sectionstart” epub:type=”chapter”>
<h1 id=”section1_title”>The Section Title</h1>
<p id=”text1″>The first phrase of the main text body.</p>
<p id=”text2″>The second phrase of the main text body.</p>
<aside id=”sidebar” epub:type=”sidebar”>
<h2 id=”sidebartitle”>The Sidebar Title</h2>
<figure id=”figure”>
<img id=”photo”
src=”photo.png”
alt=”a photograph for which there is a caption” />
<figcaption id=”caption”>The photo caption</figcaption>
</figure>
<p id=”sidebartext1″>A phrase in the sidebar.</p>
<p id=”sidebartext2″>Another phrase in the sidebar</p>
</aside>
<p id=”text3″>The third phrase of the main text body.</p>
<p id=”text4″>The fourth phrase of the main text body.</p>
</section>
</body>
</html>
</xml>

Granularity 精细度

本节只是说明

媒体叠加的 text元素的src属性通过它们的ID指向EPUB内容文件的元素。因此媒体叠加的精细程度取决于EPUB是怎么样标记的。如果标记的最小级别是段落,那么,这就是媒体叠加同步能够作成的最细级别。同样的,如果有分段标记,如 HTML5里表达短语或句子的 span元素,则在媒体叠加里可以实现更小的精细度。当用户按照字、词进行导航,以及搜索文本的时候,教小的精细度给用户更精确的结果用于同步播放。当然,这也增加了媒体叠加文件的大小。

Embedded Audio and Video 嵌入的音频、视频

任何媒体叠加相关联的EPUB内容文件都可以包含嵌入的媒体,如视频、音频和图像。媒体叠加的text元素,通过其ID值,可在这种情况下用于对嵌入媒体的引用。

当text元素引用包含音频的嵌入媒体的时候,不需要audio姊妹元素。

对于引用的嵌入式EPUB内容文件媒体,作者应避免使用脚本来控制其播放,因为这样做有可能与媒体叠加的播放行为相冲突。

Text-to-Speech 语音合成

除了预录制的音频剪辑,本规范还允许使用语音合成(TTS)。当不带audio姊妹元素的text媒体叠加元素在目标EPUB内容文件里引用某个元素的时候,被引用的元素的内容必须适合于TTS渲染。例如,它可以是文本的EPUB内容文件元素,或含有文本备选。

Semantic Inflection 语义变化

为了表达语义的变化,可以把 epub:type属性加到媒体叠加的par、seq和body元素。

对媒体叠加epub:type属性值的限制,与EPUB内容文件的epub:type属性完全一样。有关详细信息请参看 Semantic Inflection,ContentDocs30

epub:type属性为阅读系统提供了行为,适用于指定的语义类型。这些行为的例子是”跳过”、“退出” Skippability and Escapability和表格阅读模式 Table Reading Mode

下面的例子显示用于含有侧栏的媒体叠加的语义标记
<xml>
<smil xmlns=”http://www.w3.org/ns/SMIL”
xmlns:epub=”http://www.idpf.org/2007/ops”
version=”3.0″>
<body>
<seq id=”id1″ epub:textref=”chapter1.xhtml#sidebar” epub:type=”sidebar”>
<par id=”id2″>
<text src=”chapter1.xhtml#sidebartitle”/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:15.000″ clipEnd=”0:24:18.123″/>
</par>
<par id=”id3″>
<text src=”chapter1.xhtml#sidebartext1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:18.123″ clipEnd=”0:24:38.530″/>
</par>
<par id=”id4″>
<text src=”chapter1.xhtml#sidebartext2″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:38.530″ clipEnd=”0:25:00.515″/>
</par>
</seq>
</body>
</smil>
</xml>

本规范不加修改地采纳 Vocabulary Association里面定义的词汇关联机制。 默认词汇里面的术语在媒体叠加里使用,不得加前缀。

Associating Style Information 关联样式信息

当前播放的EPUB内容文档元素的视觉渲染信息,可以使用作者定义的类在 EPUB样式表里加以表达。作者定义的这个类的名称应在包文件的元数据里,使用元数据的 active-class属性进行声明。这样,类名就能够被阅读系统发现。

本例演示作者可以可把样式信息与当前播放的EPUB内容文档元素相关联。

注意
虽然这个例子中使用-epub-media-overlay-active类名,任何类名都是可以的。

作者定义的CSS类名,使用元数据属性active-class声明在包文件里

<meta property=”media:active-class”>-epub-media-overlay-active</meta>

EPUB样式表,含有作者定义的类名:
<xml>
.-epub-media-overlay-active
{
background-color: yellow;
}
</xml>

相关EPUB内容文件节选:
<xml>
<span id=”txt1″>This is the first phrase.</span>
<span id=”txt2″>This is the second phrase.</span>
<span id=”txt3″>This is the third phrase.</span>
</xml>

在本例,阅读系统把作者定义的类-epub-media-overlay-active,当其在播放过程中变成活动状态的时候,应用到EPUB内容文件的每个文本元素。反过来,当它不再是活动状态的时候,类名称就会被移去。用户会看到每个EPUB内容文件元素在其整个播放过程中成黄色背景样式。

Packaging 包裹

Including Media Overlays 添加媒体叠加

包文件里Manifest的 item元素 Publications30)可以通过 media-overlay属性指定媒体叠加。媒体叠加本身就是manifest的项目,必须通过它们的ID对它们进行引用。

下面的例子说明如何在包文件的manifest里包含媒体叠加。
<xml>
<manifest>
<item id=”ch1″
href=”chapter1.xhtml”
media-type=”application/xhtml+xml”
media-overlay=”ch1_audio”/>
<item id=”ch1_audio”
href=”chapter1_audio.smil”
media-type=”application/smil+xml”/>
</manifest>
</xml>

引用媒体叠加的Manifest项目必须如 Core Media Types Publications30)规定的具有application/smil+xml媒体类型。

media-overlay属性必须附加到只引用 EPUB内容文件的manifest项目。

单个媒体叠加文件可以引用不止一个EPUB内容文件,但是一个EPUB内容文件不得被多个媒体叠加文件所引用。

并非每个EPUB内容文件manifest的item都需要一个媒体叠加与之相关联。如果一个EUB内容文件全部或部分地被媒体叠加所引用,那么其manifest的item条目必须通过media-overlay属性来加以指明。

本特性向前兼容:2.0版本的阅读系统可以安全地忽略media-overlay属性,并且按照自己的正常方式处理文件。

Media Overlays Metadata Vocabulary 媒体叠加元数据词汇

以下两个表都定义一组属性,用于包文件元数据,并且构成可引用的词汇。

引用这个词汇的基础IRI是:http://www.idpf.org/epub/vocab/overlays/#

注意
media:”前缀被 Publications30保留,用于在包元数据中包含这些属性。

active-class
说明:    作者定义的CSS类名称,用于当前播放的EPUB内容文件元素。
许可值:    xsd:string
基数:    0或1个
例子:    <meta property=”media:active-class”>-epub-media-overlay-active</meta>

duration
说明:    整个演示或特定媒体叠加的时长。指定的时长针对著作时已知的声频剪辑,因此不包括来自外部资源和语音合成的实况流。
许可值:    时钟值是 SMIL clock values的子集,定义在 SMIL。见附录 B, Examples of Clock Values
基数:    对出版物和每个媒体叠加,正好1个(Exactly one for the Publication and for each Media Overlay)。
例子:    <meta property=”media:duration”>1:36:20</meta>

narrator
说明:    旁白人。
许可值:    xsd:string
基数:    0或1个
例子:    <meta property=”media:narrator”>Joe Speaker</meta>

包文件必须包含每个媒体叠加以及整个出版物的时长。包文件也可以包含旁白人的信息,尤其是当每个媒体叠加都有各自的旁白人或为整个出版物指定了一个旁白人的时候。包文件也可以包含作者自定义的CSS类名称,它用于当前播放的EPUB内容文件元素。

包文件必须包括各媒体叠加以及整个出版物的期限。包文件可能包括叙述者在特定的信息,以及时,每个媒体叠加有其自己的旁白,或有一个叙述者为整个出版物指定。包文件可能还包括一个作家定义的CSS类名被应用到当前播放的EPUB内容文档元素。

当一个meta元素专属单一媒体叠加文件的时候,about属性被用来引用具体哪一个。没有about属性的meta元素被视为整个出版物的。active-class属性不得与about属性一起使用,因为它总是被认为用于整个出版物。

下面的例子说明带有关于媒体叠加元数据的包文件

<xml>
<package>
<metadata>

<meta property=”media:duration” refines=”#ch1_audio”>0:32:29</meta>
<meta property=”media:duration” refines=”#ch2_audio”>0:34:02</meta>
<meta property=”media:duration” refines=”#ch3_audio”>0:29:49</meta>
<meta property=”media:duration”>1:36:20</meta>
<meta property=”media:narrator”>Joe Speaker</meta>
<meta property=”media:active-class”>-epub-media-overlay-active</meta>

</metadata>

</package>
</xml>

Playback Behaviors 播放行为

Loading the Media Overlay 加载媒体叠加

EPUB阅读系统加载包文件时,它必须参考manifest里面各个 item元素的media-overlay属性来发现用于EPUB内容文件的相应媒体叠加。媒体叠加元素开始播放(的位置),必须对应于期待播放的EPUB内容文档的起始点。请注意,EPUB内容文档的开始点,可以对应于媒体叠加的开始或中间。当媒体叠加文件播放完毕,阅读系统应该载入下一个EPUB内容文件(由包文件 spine指定的),并载入其相应的媒体叠加文件,假如提供有的话。

Basic Playback 基本播放

Timing and Synchronization 定时与同步

阅读系统必须按顺序渲染body元素的直接子元素。seq元素的子元素必须按顺序渲染,在最后一个子元素播放完毕的时候,播放结束。par元素的子元素必须并列渲染(大家同一时间开始),在所有的子元素播放完毕的时候,播放结束。当body元素的最后一个子元素播放完毕时,媒体覆盖文件的播放结束。

Rendering Audio 渲染音频

遇到媒体叠加audio元素时,阅读系统必须播放src属性所引用的音频资源,由clipBegin属性给出的剪辑偏移时间开始、并在由clipEnd属性给出的剪辑偏移时间结束。必须遵守以下规则:

  •     如果clipBegin未指定,其值为0。
  •     如果clipEnd未指定,它的值是物理介质的总长时间。
  •     如果clipEnd超过物理介质的总长时间,那么它的值被认为是物理介质的总长时间。

用户可控的音频播放选项应包括时间比例修改,其中改变播放速率不得扭曲音调。建议的范围是半速到倍速。

Rendering EPUB Content Document Elements 渲染EPUB内容文件元素

当遇到媒体叠加text元素,阅读系统应确保src属性所引用的EPUB内容文档元素在视口中可见。带有 CSS Viewport的阅读系统应该把 active-class元数据属性给出的类名添加到正在播放的EPUB内容文档。反过来,元素不再处于活动状态时,类的名字应该被删除。

active-class元数据属性是可选的,如果省略,阅读系统的行为则取决于实施。

Interacting with the EPUB Content Document 与EPUB内容文件交互

Navigation 导航

由于媒体叠加和EPUB内容文件密切相关,根据媒体叠加播放当前的所在位置,阅读系统很容易在EPUB内容文件里定位。如果用户暂停同步播放,导航到出版物的另一个部分,同步播放必须在这一点上恢复。例如,如果EPUB内容文件的具体某页是所需的位置,那么在媒体叠加里找到这个相同点,并且从这里开始播放。

这个同样的方法允许把用户在EPUB导航文件里选择的导航点和媒体叠加播放同步起来。阅读系统为那个文件加载媒体叠加,并基于导航点目标的ID XML找到开始播放的正确点。

媒体叠加文件也可以直接与导航文件关联,以提供其内容的同步播放,甚至不需要在spine里包含它所处的XHTML内容文件。阅读系统应保持导航文件的媒体叠加与用户在EPUB内容文件里面的当前位置同步。


媒体叠加文件元素可以和EPUB内容文件的表格等结构相关联。阅读系统应保持媒体叠加播放与用户导航里面的表格行和单元格同步。阅读系统也可播放单元格内容之前的对应表头。

Embedded Audio and Video 嵌入的音频和视频

关联有媒体叠加的EPUB内容文件本身可能包含嵌入式视频和音频媒体,可以用媒体叠加元素指向它们。与文本和图像不同,视频和音频媒体有内在的时长。因此,当阅读系统渲染由媒体叠加所描述的同步时,必须作废嵌在EPUB内容文件里的音频和视频媒体的默认播放行为。

注意:下面的规则只适用于关联在EPUB内容文件里 HTML5的video或audio元素引用。也就是说,规则只适用于在媒体叠加里由text元素指向的那些元素(即,通过src属性)。不是由媒体叠加元素引用的嵌入媒体不受这些规则的限制。

  •   所有的嵌入在EPUB内容文件内的音频和视频媒体引用,都必须有共同的停播界面(通常为:播放/暂停控制,时间滑块,音量等)。要求这种行为是为了避免在媒体叠加里定义的播放顺序,和由于用户互动或执行脚本而产生的任意播放行为发生冲突。因此,当阅读系统在播放模式下,它应该:
  •     从页面隐藏单个视频/声频的UI控制,它重写 controls属性定义的默认行为。
  •     禁止嵌入在EPUB内容文件里的脚本调用播放视频/声频的JavaScript API(如,被制作成出版物行为的一部分)。建议内容制作者应该避免出版旨在

对嵌入的视频/声频媒体进行控制的脚本。这样,出版的媒体叠加能够完全掌控同步演示,而不必冒来自脚本使动的用户行为风险。

  •   所有的嵌入在EPUB内容文件内的音频和视频媒体引用,都必须初始化到“停播”状态,并且能够从内容流零位置开始播放(有可能显示用 HTML5 poster属性指定的图像)。本要求重写 HTML5 autoplay属性定义的默认行为。
  •   当一个EPUB内容文件元素变成活动的,不论那个元素的src属性指向的是何种内容类型,EPUB样式表的可视化高亮规则都起作用(例如,由 active-class元数据属性定义的CSS类名,应该应用到主EPUB内容文件里的可见音视频播放控制)。
  •   除了为文本片段和图像设置的媒体叠加激活的默认行为,音视频播放还必须根据媒体叠加同步制作者所意味的时长开始和停止(根据标准的 SMIL定时模式)。有两种可能的情形:
  •     当媒体叠加text元素在其父容器par里没有姊妹元素的时候,引用的EPUB内容文件音频或视频媒体必须播放到结束,在此位置text元素的寿命终止。在这种情况下,

text元素的时长(以及通过推论得到父容器par的)是引用的音频或视频剪辑的时长。

  •     当媒体叠加text元素在其父容器par里有audio姊妹元素的时候,引用的EPUB内容文件音频或视频媒体的播放时长必须受audio姊妹元素的约束。在这种情况下,父容器par的时长

是子audio剪辑的时长,而与text元素指向的音频或视频媒体的长度无关。这样的行为有可能导致嵌入的音频或视频媒体提前停止播放(在达到全部时长之前),或在并行媒体
叠加audio播放完成之前停止(在此情况下,最后播放的媒体画面要保持可见,直到父容器par最后结束)。本行为等价于携带 SMIL endsync属性的媒体叠加audio元素。

  •     此外,阅读系统应该为用户暴露每个独立音轨的音量控制(即,从媒体叠加的audio元素,从EPUB内容文件里面的嵌入音频或视频媒体),以便于声频输出可以调节到

听众的需要。注意,拥有重叠的音轨(overlapping audio tracks)通常是制作时候的考虑:内容制作者为了说明的目的通常为视频音轨添加一层声频信息。
建议仔细检查叠加声频的情形,并且在制作阶段予以解决,因为不要求阅读系统以何种特殊方式同时处理多个音量级别。

  •   元素在媒体叠加里变成不活动,并且指向嵌入的视频或声频时,被引用的媒体必须设置到初始“停播”状态,并且能够从内容流零位置开始播放(有可能显示用 HTML5 poster属性指定的图像)。

Text-to-Speech 语音合成

当不带audio姊妹元素的媒体叠加text元素在目标EPUB内容文件里引用文本的时候,具有语音合成(TTS)功能的阅读系统应该使用TTS来渲染被引用的文本。
按照阅读系统合规要求,在目标EPUB内容文件里提供的和语音有关的信息,应该作为媒体叠加渲染的一部分用来播放音频流。见 Reading System Text-to-Speech Conformance Requirements

媒体叠加text元素的寿命对应于相关语音合成的渲染时间。text元素的时长(以及籍推断得到的par父元素时长)取决于TTS引擎的执行,并且在创作时间是未知的(语速、暂停和其它韵律参数等因素影响音频输出)。

Skippability and Escapability 跳过和退出

Skippability 跳过

阅读时,用户可能需要打开或关闭出版物的某些功能,如侧栏、脚注、页码、或其他类型的次要内容。此功能称为跳过。阅读系统应使用的媒体叠加元素的 epub:type属性所提供的语义信息来确定何时给用户提供跳过的功能选项。在下面的例子中,阅读系统应给用户提供打开和关闭分页/页号的选项。通常听这些东西很烦人。

下面的例子显示了有分页的媒体叠加文件
<xml>
<smil xmlns=”http://www.w3.org/ns/SMIL”
xmlns:epub=”http://www.idpf.org/2007/ops”
version=”3.0″>
<body>
<!– a paragraph –>
<par id=”id1″>
<text src=”chapter1.xhtml#para1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:23:22.000″ clipEnd=”0:24:15.000″/>
</par>

<!– a page number –>
<par id=”id2″ epub:type=”pagebreak”>
<text src=”chapter1.xhtml#pgbreak1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:15.000″ clipEnd=”0:24:18.123″/>
</par>

<!– another paragraph –>
<par id=”id3″>
<text src=”chapter1.xhtml#para2″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:18.123″ clipEnd=”0:25:28.530″/>
</par>
</body>
</smil>
</xml>

下面的例子显示了有分页的EPUB内容文件
<xml>
<html … >

<body>
<p id=”para1″>This is the paragraph before the pagebreak … </p>

<br id=”pgbreak1″ epub:type=”pagebreak” title=”234″/>

<p id=”para2″>This is the paragraph after the pagebreak …</p>
</body>
</html>
</xml>

下面从 StructureVocab选出一组术语供参考,阅读系统应该为用户通过它们的跳过选项:

sidebar
practice
marginalia
annotation
help
note
footnote
rearnote
pagebreak

媒体叠加可以使用另外的词汇,方法是把它们定义在smil根元素的 epub:prefix里。基于epub:type值的阅读系统,并不都支持跳过功能。

Escapability 退出

退出的项目是诸如表格、列表、侧栏之类的嵌套结构,听众有可能希望跳过,从嵌套结构后继续阅读。退出功能与跳过功能的不同之处在于,它不启用或禁用整个项目的类型,而是提供一个出口(例如,用户可以收听部分内容,然后选择退出)。阅读系统必须通过 epub:type属性的值(如:glossary)确定嵌套结构的开始。并应给用户提供选项,以跳过该结构的播放,并继续其后的任何内容。

下面的例子显示用于EPUB文件的媒体叠加文件。前者含有一个paragraph、一个glossary和另一paragraph。支持可退出的阅读系统会给用户中断播放glossary的选择,并继续发挥文档中的段落。
<xml>
<smil xmlns=”http://www.w3.org/ns/SMIL”
xmlns:epub=”http://www.idpf.org/2007/ops”
version=”3.0″>
<body>
<!– a paragraph, part of the regular document text –>
<par id=”id1″>
<text src=”chapter1.xhtml#para1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:23:22.000″ clipEnd=”0:24:15.000″/>
</par>

<!– a glossary, which is a nested structure –>
<seq id=”id2″ epub:textref=”chapter1.xhtml#g0″ epub:type=”glossary”>
<par id=”id3″ epub:type=”glossterm”>
<text src=”chapter1.xhtml#g1″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:15.000″ clipEnd=”0:24:18.123″/>
</par>
<par id=”id4″ epub:type=”glossdef”>
<text src=”chapter1.xhtml#g2″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:24:18.123″ clipEnd=”0:25:28.530″/>
</par>
<par id=”id5″ epub:type=”glossterm”>
<text src=”chapter1.xhtml#g3″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:25:28.530″ clipEnd=”0:25:45.515″/>
</par>
<par id=”id6″ epub:type=”glossdef”>
<text src=”chapter1.xhtml#g4″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:25:45.515″ clipEnd=”0:27:04.123″/>
</par>
</seq>

<!– another paragraph, part of the document text that comes after the glossary –>
<par id=”id7″>
<text src=”chapter1.xhtml#para2″/>
<audio src=”chapter1_audio.mp3″ clipBegin=”0:27:04.123″ clipEnd=”0:27:59.000″/>
</par>
</body>
</smil>
</xml>

A. Media Overlays Schema 媒体叠加构架

媒体叠加的schema见: ../schema/media-overlay-30.nvdl

本构架是规范性的。

A.1. Using the Media Overlays Schema 使用媒体叠加构架

本节是说明性的

使用这个schema来验证媒体叠加,将要求处理器支持 NVDL RelaxNG ISO Schematron

不过请注意,NVDL schema可以用两通道验证来代替,即使用嵌入的RELAX NG和独立ISO Schematron schemas。

B. Examples of Clock Values 时钟值例子

本附录只是说明

下面的例子是允许的时钟值:

5:34:31.396 = 5 hours, 34 minutes, 31 seconds and 396 milliseconds
124:59:36 = 124 hours, 59 minutes and 36 seconds
0:05:01.2 = 5 minutes, 1 second and 200 milliseconds
0:00:04 = 4 minutes
09:58 = 9 minutes and 58 seconds
00:56.78 = 56 seconds and 780 milliseconds
76.2s = 76.2 seconds = 76 seconds and 200 milliseconds
7.75h = 7.75 hours = 7 hours and 45 minutes
13min = 13 minutes
2345ms = 2345 milliseconds
12.345 = 12 seconds and 345 milliseconds

C. Acknowledgements and Contributors   附录C. 致谢与贡献人

本附录不是规范内容(翻译省略, 原文点此

Leave a Reply

Your email address will not be published. Required fields are marked *