多媒体文件的组合 -- SMIL(转)

本文深入探讨了SMIL(Synchronized Multimedia Integration Language)在组合多媒体文件中的应用,包括如何通过SMIL将音频、视频、图像和文本等元素进行同步和布局,以实现丰富的Web服务体验。通过学习SMIL,开发者可以更好地控制多媒体内容的播放、跳转和交互,提升用户体验。
摘要由CSDN通过智能技术生成
 世界3W协会(World Wide Web Consortium)于1998年6月开始推广的一种和HTML具有基本相同结构的标记语言:同步多媒体集成语言(Synchronized Multimedia Integration Language),简称SMIL。
    实际上这是一种简单而有效的关联语言,它可以将在Internet上不同位置的媒体文件关联到一起,媒体播放器通过载入SMIL文件,会根据文件中设置的播放顺序和位置等属性,将这些文件集成到同一窗口播放。SMIL已经渐渐成为网络多媒体的国际通用标准语言。随着媒体播放器的不同,它所支持的媒体格式也不同,但它几乎支持所有的媒体格式。目前支持SMIL文件的播放器有RealPlayer 8.0、QuickTime 4.1以及Internet Explorer 5.5 Beta等。当然,其它版本的网络浏览器只要安装了相应的插件,如RealPlayer和QuickTime的Plug-in,也同样可以播放SMIL文件。在不久的将来,SMIL也将成为数字高清晰电视技术的一个组成部分。
    本章将详细介绍SMIL语言的基本语法结构、各种标记以及具体的应用。通过本章的学习,读者可以完全掌握这种网络多媒体集成语言。本章同样提供了很多范例供读者实际练习。为了保持前后一致和本书的可读性,所涉及到的流媒体全部采用RealNetwork的格式标准。

7.1  理解SMIL
    SMIL中文通常称作同步多媒体集成语言。它属于扩展型标记语言的范畴(Extension Mark-up Language,简称XML),是Internet上用于集成多媒体节目尤其是流媒体的主要语言工具。
    SMIL是纯文本类型的语言,使用SMIL编写的多媒体文件也是标准的纯文本文件,你可以用任何文本编辑器,例如Windows的“记事本”程序打开它,查看其中的SMIL源代码,以及进行相应的编辑。
    如果只是想在网上发布单一格式的流媒体,并不需要创建SMIL文件。但如果要组合多种格式的流媒体同时发布,运用SMIL这种简单却功能强大的标记语言,可以设置组合后的播放布局、播放哪些文件、何时以及如何播放等等。和HTML文件一样,SMIL文件也是解释型的,播放器载入SMIL文件后,读取其中的源代码,分析其语法结构,然后根据解释的结果播放各媒体文件。所以为了保证播放效果,精简和高效的SMIL源代码是非常重要的。
   总的说来,SMIL语言和其它多媒体集成工具相比,突出的优势包含以下方面:
1. 由于流媒体服务器可以发布多种流媒体格式,如音频、视频、文字及图片等,SMIL文件只是将各种媒体文件关联起来,而并没有将它们融为一体。当想要重新组合生成新的多媒体节目时,只需重新编辑SMIL文件而无需对各媒体文件做任何改变。
2. 由于SMIL为每一个关联的媒体文件都列出了一个独立的URL地址,在编制多媒体节目时,可以使用存放在网络中任何一台服务器上的媒体文件。这有利于网络服务器的分类和有效使用。比如,可以将一段存放在Real服务器上的视频文件和一个存放在Web服务器上的RealText文件组合在一起。
3. SMIL语言可以很方便地建立和控制多媒体节目以及各关联文件的时间线。对于具有内部时间线的媒体文件,比如音频和视频文件,可以运用SMIL选择播放其中的一个或几个片断。比如,对于一个30分钟的视频文件,可以播放其从10分钟到15分钟的片断;在节目的其它地方甚至在其它节目中再播放它的其它片断,而不需要对该视频文件本身做任何变动。
4. 当多媒体节目中含有多个同时播放的可视媒体对象时,比如,播放一段视频,需要同时显示RealText制作的相关文字说明以及RealPix制作的相关图片,运用SMIL可以精确安排整个窗口的播放布局,使得各媒体相得益彰,用户一目了然,充分体现网络多媒体的丰富效果。
5. 运用SMIL可以使用户端的播放器选择播放不同语言的同一媒体内容。比如,制作一段有不同语言声音的视频文件。先制作没有声音的视频文件,再分别制作不同语言的声音文件,在SMIL文件中设置视频和声音文件的播放匹配以及声音文件的播放条件,在网页中只需建立单一的和SMIL文件的链接。当用户点击链接,用户端的媒体播放器如RealPlayer,会根据用户端的系统语言选择播放相应的声音文件。
6. 运用SMIL可以为不同的传输带宽列出不同的媒体文件。用户端的媒体播放器会根据其各自的传输带宽选择载入相应的文件来播放。这样通过一个链接就实现了支持多带宽连接,而不必再为不同的网络用户,如Modem用户、ISDN用户和LAN 用户分别设置链接。
7. 由于SMIL文件是纯文本文件,使用文本编辑器可以很方便地对其进行修改。因此可以根据用户浏览器中的风格设置,创作不同风格的SMIL文件,为不同的用户提供不同风格的多媒体节目。

7.2 SMIL的基本语法规则
    顾名思义,标记语言的语言构成主要是通过各种标记 (Tag) 来表示和排列各种对象的,通常标记由符号“<”、“>”以及其中所包含的标记元素组成。SMIL的语法非常简单,它采用了简捷明了的语法命令,通过对各种标记、元素、属性等的设置建立与文本、图片、声音、视频等多媒体信息的关联以及播放的各种设置。
    以下是一个最简单的SMIL文件的源代码,它设置了Real服务器上的3个声音文件的循序播放。

<smil>
  <body>
    <audio src="rtsp://realserver.example.com/example1.rm"/>
    <audio src="rtsp://realserver.example.com/example2.rm"/>
    <audio src="rtsp://realserver.example.com/example3.rm"/>
  </body>
 </smil>

    作为同是标记语言,SMIL和HTML有许多相似的地方,但也有很多重要的不同之处。与RealText以及RealPix相比,SMIL又要复杂了许多。一般说来,SMIL具有以下一些常用的语法规则:
1. 整个文件以<smil>开始,以</smil>结束。如下所示:

       <smil>
           … SMIL的其它标记 …
      </smil>

2. 和HTML文件一样,SMIL文件由<head>和</head>标记定义的头部以及由<body>和</body>标记定义的正文两个部分组成。正文部分是必需的,头部则是可选的。SMIL文件的头部除了和HTML文件一样,包含了文件的标题、作者、版权等通用信息外,还包含了对播放布局的设置。本书将在7.7节中作详细介绍。以下是SMIL文件的基本结构:

        <smil>
           <head>
                   … SMIL的头部标记 …
           </head>
           <body>
                   … SMIL的正文标记 … 
           </body>
         </smil>

3. SMIL所有的标记、元素和属性,除了表示关联媒体文件的路径和名称以外,都必须以小写字母来表示,这一点与HTML有很大的不同。
4. 所有的标记都是封闭类型的,但并不是所有的标记都是成对出现的。有的标记通过“/”来表示结束。例如:
       <audio src="rtsp://realserver.example.com/one.rm"/>
5. 所有的属性值都必须封闭在双引号“”内。表示文件路径和名称的属性值可以用大写、小写或者大小写混合来表示,必须和文件的实际情况完全一致。
6. SMIL文件是纯文本文件,你可以使用任何文本编辑软件建立一个SMIL文件,完成编辑后,将输出文件设为纯文本格式,文件的后缀名为“.smil”或“.smi”。一般使用“ .smil”以避免和其它文件类型冲突。文件名中不可含有空格。
7. 用头部标记描述文件信息时,需要用代码来表示诸如引号、&、括号、撇号等特殊符号,以保证这些符号在媒体播放器中能正确显示。表7-1中包含了这些特殊符号的表示代码。

符号名称 表示代码 播放器中的显示
双引号 &quot; "
& &amp; &
单引号  撇号 &apos; '
左向括号  小于号 &lt; <
右向括号  大于号 &gt; >

表7-1    特殊符号的表示代码

8. 和HTML文件一样,SMIL文件源代码中也可以含有注释行,注释行在媒体播放器中是不显示的。注释行以<!开始不必含有结束符号“/”。
      例如:                  <!-- 注释内容 -->
9. 和HTML源代码一样,建议在编辑SMIL文件时,对源代码的段落格式采用按层次缩进排列的格式,这样有助于创作者本人以及其它人员方便、准确地了解SMIL文件的结构,加强文件源代码的可读性。

7.3 关联媒体文件
    在SMIL文件中,关联要播放的媒体文件,是通过文件正文部分中的媒体标记来实现的。媒体标记的作用就是将媒体文件引入SMIL文件中,通过对该类标记各个属性的设置,来描述媒体文件的文件格式和所处的位置,以及媒体文件在SMIL文件中的其它行为,本书将在相关章节中陆续介绍。例如,以下的SMIL代码关联了一个在Real服务器上的流式声音文件first.rm:
      <audio src="rtsp://realserver.example.com:554/audio/first.rm"/>
7.3.1 媒体标记的属性
    表7-2汇总了SMIL语言所提供的媒体标记及其各自适用的媒体格式。

标记名称 关联的媒体种类
<animation…/> 动画文件,如GIF动画、Flash动画等
<text…/> 文本文件   (.txt文件)
<textstream…/> RealText的流式文本文件 (.rt文件)
<img…/> 图片文件,可以是Internet上使用的所有图片格式,如JPEG、GIF、PNG等
<audio…/> 声音文件,如.rp文件、mp3文件、wav文件等
<video…/> 视频文件,如.rp文件、.mov文件、mpeg文件等
<ref…/> 适用于所有格式,尤其是其它媒体标记无法描述的格式,如RealPix文件(.rp)

表7-2    媒体标记汇总

    媒体对象可以分为两种,一种是本身内部具有一定的播放持续时间,如声音、视频、动画、RealPic、RealText等,被称为连续性媒体;另一种是本身不具有播放持续时间,如文字、图片等,被称为离散性媒体。另外还可以有可视媒体(如视频、图片等)和非可视媒体(如声音)之分。下面就简单介绍媒体标记的各个属性。
1. src,该属性的值就是关联媒体的url值,指定了媒体文件的位置。该属性是必须设置的。
2. region,该属性设置了媒体文件的播放位置,它的值就是在SMIL文件头部中相对应的<region…/>标记的id值,本书将在7.7节中详细介绍。该属性对于可视媒体是必须设置的。
3. begin,该属性设置了媒体文件播放的确切开始时间。其默认值为“0”。
4. dur,该属性设置了媒体文件播放的持续时间。其默认值对于连续性媒体,则为其内部的持续时间;对于离散性媒体,则为“0”。
5. end,该属性设置了媒体文件播放的确切结束时间。在已经设置了dur属性时,该属性可忽略。
6. clip-begin,该属性用于播放连续性媒体某一片断时,设置了该片断相对于整个媒体文件的开始时间。
7. clip-end,该属性用于播放连续性媒体某一片断时,设置了该片断相对于整个媒体文件的结束时间。关于媒体标记时间属性的设置,本书将在7.5节中作详细介绍。
8. repeat,该属性设置了对应的媒体文件的重复播放次数。其默认值为“1”。
9. id,该属性设置了媒体元素在SMIL文件中唯一的名称。当在文件其它地方要引用此媒体文件时,该属性值是唯一可以使用的线索。
10. system-bitrate,该属性设置了媒体文件所适合的传输带宽。当在SMIL文件中进行选择播放时,该属性的值即为对应媒体文件播放的带宽条件。
11. system-language,该属性设置了媒体文件所适合的系统语言。当在SMIL文件中进行选择播放时,该属性的值即为对应媒体文件播放的语言条件。
12. 除了上面介绍的属性外,媒体标记还具有一些标记语言中通用的属性,如abstract、author、copyright、alt以及title等,这里就不再一一介绍了。
    对某一媒体文件使用了不恰当的媒体标记并不会影响该媒体文件的播放,因为,媒体播放器是通过该媒体文件本身而不是描述它的标记类型来确定它的真正格式的。比如,用<audio…/>来关联一个视频文件,RealPlayer还是会认识到该媒体文件中除了音频部分外,还包含视频部分。当然,在SMIL文件中也可以用<ref…/>标记来描述所有关联的媒体文件。但我们还是建议对于特定的媒体格式用恰当的媒体标记,这有助于创作人员在创作网络多媒体节目时区分不同的媒体文件。因为流媒体中有时不同的媒体格式采用相同的文件后缀名。例如,RealNetwork的声音和视频文件就都采用.rp文件的格式,QuickTime的的声音和视频文件也同样都采用.mov文件的格式。
    每一个媒体标记中,都含有一个必须设置的src属性,该属性的值描述了媒体文件的位置和名称,即关联媒体的URL地址。如何设置该属性的值取决与媒体文件的存放位置和发布方式,是用流媒体服务器如Real服务器来“流”式发布,或者是从WEB服务器上下载,还是从本地机上回放。下面就对这三种方式进行详细的介绍。
7.3.2  关联RealServer上的媒体文件
    当所要关联的媒体文件位于Real服务器上,而媒体发布的方式是采用流媒体服务器的“流”的方式,相应的媒体标记中src属性的值,即媒体文件的URL地址定义的方法如下所示:
      <audio src="rtsp://realserver.example.com:554/audio/first.rm"/>
    下面就来解释这个URL地址各部分的含义:
1. rtsp://  代表了Real服务器所使用的流媒体传输协议RTSP。尽管Real服务器也支持HTTP协议,通常Real服务器发布流媒体采用RTSP协议。关于RTSP协议,本书将在第十章中作详细介绍。
2. realserver.example.com  Real服务器的域名地址,当然不同的 Real服务器其域名地址也不同。通常Real服务器的域名地址用标识,例如“realserver”或“real”来代替“www”,以示和Web服务器的区别。当然也可以用它的IP地址,例如 172.2.16.230,来替代它的域名地址。
3. :554  Real服务器使用RTSP协议的端口号。554是默认端口,因此如果Real服务器采用默认端口的话,这一部分在文件的URL地址中可以省略。如果服务器的管理者采用其它端口,则在URL中必须标明。标明端口号时必须用“:”将其和Real服务器的地址隔开。
4. /audio/  
       Real服务器上包含媒体文件的目录名。当然可以是多重目录结构。
5. first.rm    
       所关联的媒体文件的文件名 。
7.3.3 建立相对URL地址
    如果在同一个SMIL文件中,有多个所关联的媒体文件位于同一台服务器上,可以在SMIL文件的头部部分中设置一个最底层的URL地址,相关媒体文件的URL可以用和这个底层URL的相对路径来表示。例如:

<smil>
  <head>
    <meta name="base" content="rtsp://realserver.example.com/"/>
  </head>
  <body>
    <audio src="audio/first.rm"/>
    <audio src="audio/second.rm"/>
    <audio src="rtsp://realserver.real.com/media/third.rm"/>
  </body>
</smil>

    上面这个例子中,在SMIL文件的头部中通过<meta…/>标记设置了底层URL,正文中的第一、二个媒体文件使用了相对路径,在播放时媒体播放器得到的URL分别它们为对应于底层URL的扩展值:

          rtsp://realserver.example.com/audio/first.rm
          rtsp://realserver.exa
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值