巧用“smil”语言连续播放rm片断

拉了ADSL之后便经常上网载些电影下来看,不过发现有不少站点为了处理方便把一部电影分成三四部分甚至更多,载下来之后在播放器中播放时每隔二三十分钟就要再打开一次,十分不便。于是我想到了用smil来实现连续播放的方法。


smil(通常读作“Smile”)是Synchronized Multimedia Integration Language同步多媒体合成语言的缩写,它W3C(World Wide Web Consortium)专为流(stream)媒体格式而设计
指定的基于XML的因特网多媒体演示用语言。和HTML一样,SMIL也是一种标识语言,用户可以根据它来轻松创建多媒体演示。


目前似乎还没有效果理想的所见即所得的smil编辑器,不过用直接手写也不是太难的事。至于smil播放器,Realplayer就是其中一个。


SMIL有点类似于HTML。一个SMIL文件必须以<smil>开头,以</smil>结尾。所有其他的标记均包含在这一对标记中。另外<body>和</body>标记是必须要的,而<head>和</head>标记则是可选的,可有可无。不过,SMIL标记没有相应的结束标记,则必须用一个反斜线作为结束,标记的属性值,则须用双引号括起来。例如:<audio src="test.mp3"/>中“/”表示标记结束,而"test.mp3"表示了其src属性的值。另外须注意的是SMIL语言中的标记和属性必须要小写。


为了实现视频的连续播放,我们要用到以下标记<seq>与</seq>(包含若干子元素构成一个时间序列,如video)、<layout>与</layout>(与下面介绍的rigion定义播放时在播放器中的显示区域,显示格式等)、<rigion>、<video>(插入视频文件)。


下面以举例介绍一下具体的处理方法。假设在某一目录中有下载的一部电影的五个部分:shushan1.rm、shushan 2.rm、jxrl3.rm、shushan4.rm、shushan5.rm。


那么我们可以在记事本中输入以下内容:


  <smil>


  <head>


  <layout>


  <region id="a" left="0" top="0" />


  <!-- 定义区域a,使其左上角紧挨播放窗口左上角 -->


  </layout>


  </head>


  <body>


  <seq>


  <!-- 定义播放序列 -->


  <video region="r" src="shushan1.rm" />


  <!-- 插入视频shushan1.rm,下同 -->


  <video region="r" src="shushan2.rm" />


  <video region="r" src="shushan3.rm" />


  <video region="r" src="shushan4.rm" />


  <video region="r" src="shushan5.rm" />


  </seq>


  </body>


  </smil>



编写完毕后,把文件以“movie_index.smi”名保存到刚才五个视频文件的目录下。


至此大功告成,播放时只要用Realplayer打开movie_index.smi,这样当一个rm文件播放完后,Realplayer会自动打开下一个。