一、 简介 随着流技术的成熟和广泛的应用,其好处我们有了深深的体会。不过,其不足之处也逐渐体现出来。问题的出现,就需求我们想办法来解决。SMIL正是针对目前流技术中的问题而提出来的。下面让我们来仔细看看SMIL。 1、SMIL简历 SMIL是同步多媒体集成语言(Synchronized Multimedia Integration Language)的缩写,念做smile(呵呵,这名字不错吧)。他是由3W(World Wide Web Consortium)组织规定的多媒体操纵语言。最新的SMIL版本是2001年8月推出的SMIL 2.0版本(参和制定该标准的公司奇多,J 有Compaq、Gateway、IBM、Microsoft、 RealNetworks、Oratrix等等。太多了,一口气都下不来!!!)。SMIL和我们网页上用的HTML(超文本传输语言)的语法格式非常相似。后者主要针对普通的网络媒体文件进行操纵(文字、图片、声音、动画、视频的机械堆砌),而前者则操纵多媒体片断(对多媒体片断的有机的、智能的组合)。J 看来这东西真的不错! 2、SMIL的好处? SMIL语言是一套已规定好的而且非常简单的标记。他用来规定多媒体片断(这里多媒体的包括的范围有:声音文件、视频文件、动画、图片、文字等)在什么时候、在什么地方、以什么样的方式播放。糊涂了吗?J 我们下面一起来看看SMIL的好处(和众不同的地方!): 为了方便起见,我们把我们想要完成的作品称之为演示(presentation)。 (1) 避免使用统一的包容文件格式 因为我们的多媒体文件的格式的时非常多的,例如:像声音就有*.mp3、*.wav、*.ra等等;视频的格式更是多的出奇:*.mpg、 *.avi、*.mov、*.rm等等;图片的格式就更加不用说了。J 如果我们想在本地机器上直接播放或在网络上用流式播放的方式来播放若干个文件。当然我们希望的是不要总让我们自己打开文件。而是,在上一个文件播放完成以后,就播放下一个。播放列表是个办法。不过,如果格式不相同,并且需求多个片断同时播放(例如:显示图片的同时,有解说的声音。图片和声音是两个文件),那么以前唯一可行的办法就是用对媒体的编辑软件把这些多媒体文件整合成一个文件。这就必须统一使用某种文件格式。如果你的源文件(多个多媒体片断)没有保存副本的话,在你下次要用其中的某个源文件的时候,J 你就后悔去吧!如果我们用SMIL来组织这些多媒体文件,那么能在不对源文件进行所有修改的情形下,获得我们想要的效果(从这里来看,SMIL似乎是穿珍珠项链用的金丝线,只是把他们穿起来组成一个整体,而不会破会他们。)。当然SMIL的功能决非就这么点。接下来就是: (2)同时播放在不同地方(服务器上)的多媒体片断 如果上面第一点你还能用其他的办法做到,那么这一条恐怕你就没辙了?font face="Wingdings">J 考虑这样一个实际问题:如果我们目前想把一段电视采访的实况(视频文件)加上解说(包括声音解说(音频文件)和文字解说)。姑且假定例子中的视频文件是甲服务器上的A文件,音频文件是乙服务器上的B文件,而解说文字却是丙服务器上的C文件。传统的方法在这里就束手无策了(穷途末路了J),而SMIL能非常轻松的做到这一点。 (3)时间控制 如果我们不想用整个视频文件,而只想用其中的某一部分。传统的方法中唯一可行的就是用剪辑软件来剪辑。费时费力不说,弄不好就弄巧成拙,把想要的给剪掉了!而SMIL完成这件事真的是易如反掌!看这样一个例子:设视频文件A的时间长度是10秒,我们要用的是2~5秒,其他部分我们不想要,只要用 SMIL规定:在该视频文件A的第二秒开始播放,播放到第五秒结束就能了。 时间控制的另外的部分是动画和转场效果。如果上面的时间控制是丝绸,那么这个就是在他上面的双面刺绣!后面我们将要周详讨论这个问题。J (4)对整个演示进行布局 我们把上面提到的那个例子拿来说明这个问题:由于我们有视频、有文字我们希望什么样的布局呢?一般的情形下在一个区域(屏幕的上部)播放视频,在另一个区域显示文字(屏幕的底部)。当然,如果你认为在视频上面显示文字效果更好的话,那也是能的。用SMIL实现这样的效果异常容易! (5)多语言选择支持 分析这样一个实际例子:我们要为某种产品作宣传,其宣传对象是多个国家的人,有英语国家的、有法语国家的、有德语国家的等等。当然最主要是讲中文的国家的人(我是中国人!)。如果我们想要所有的人都能听懂、看懂我们的介绍,那么我们就的准备不同语言版本的媒体文件。传统的方法是让用户来选择,然后从服务器上下载相应的版本。麻烦就不用讲了。万一我们的选择老外都看不懂(有时候,我到德文、日文、朝鲜文的站点上,就不知道他们讲些什么东西L),这怎么办?如果把他们用SMIL来组织起来、规定好,那么SMIL语言将根据具体的语言设置来播放相应版本的演示。就是方便! (6)多带宽选择支持 由于各个用户连接到Internet的方式不尽相同,所以其连接的速度差别也较大。为了让他们都能够看到我们的演示,我们能制作适应不同传输速度的演示。在传统的方法中,往往要用户自己选择他的机器连接所对应的传输速度,然后播放相应得演示文件。这确实解决了一些问题。实际上,并不是所有的用户都知道自己的连接速度,就是知道了,还得选择不也是非常麻烦吗?L SMIL解决这个问题如同吹灰!播放器检测出用户的连接速度后,就同服务器“协商”,需求传输并播放相应的演示文件。方便乎?这也就是流技术中常常说的智能流(Surestream)中的一种. SMIL语言主要的好处大的方面有以上这些。相信大家在实际应用中,会体会到他更多的好处。 注意:我们在创建SMIL文件以前,我们要做好以下几件事: 1、下载并安装Realone Player。目前,SMIL的版本是2.0,全方面支持SMIL的版本是2.0只有 Realone Player!所以我建议大家使用他。大家能从http://www./上下载,国内的非常多的网站上也提供下载。下载GOLD版,不要下载BETA版。 2、 我们编辑SMIL源文件(程式)用的是windows附件中的记事本,希望检查一下你的记事本是否正常。当然,所有普通的文本编辑器都是能的(ultra Edit就非常不错),不过考虑到大家学习的方便,故使用最容易找到的记事本来编辑。 3、 在我们的学习阶段,我希望我们大家不要用专门SMIL编辑器。一方面,现有的这些SMIL编辑器不太好用。另一方面,那样也不利于我们完全理解SMIL语言。 二、 SMIL基本知识 下面我们看一个实际的SMIL的例子(用记事本编写就能,注意:在英文状态下编辑。也就是不要打开中文输入法。因为SMIL播放器不认识中文的标点符号!): < smil> < head> < meta name="copyright" content="Your Name" /> < layout> < !-- layout 标记 --> < /layout> < /head> < body> < !?媒体标记 --> < img src="image1.jpg"/> < /body> < /smil> 显然,SMIL和HTML语言的语法格式非常相像!所以,如果大家对HTML熟悉的话,SMIL学习起来就非常容易。不过,二者的差别是非常大的,所以如果想学的非常好,大家一定要认真地学! 从上面这个例子能看出: (1) SMIL程式以<smil>开始,以</smil>结束。 SMIL必须以<smil>开始,以</smil>结束,其他的一切标记都在这二者之间。这个和HTML似乎是相同的。 (2) 整个程式由body和head两个部分组成 其中body是必须要有的。而head部分则看实际情况。如果需要的话,我们就写。若是整个SMIL程式非常简单并且没有必要用head部分,那么,我们能不写。从个人的经验来看,如果要写出一个效果好的演示,head部分是必不可少的!J (3) 属性和标记需求小写 SMIL需求其标记和标记的属性必须小写! 我们在这里不想给出属性和标记的定义。SMIL语言就是由标记组成的。每一行都是标记,而标记基本上都有属性。例如:< img src= "image1.jpg"/>中,img是标记,而src是属性,image1.jpg是src的属性值。注意:属性值能大小写都能。后面我们会碰到有些属性值需求骆驼写法。什么是骆驼写法?像fadeTocolor这样的属性值(看看,中间高,两边低,是不是非常像骆驼的驼峰?J)就是骆驼写法。 (4) 有些标记必须有一斜杠作为结束标记 在SMIL中,如果标记不是配对标记(例如:< smil>< /smil>、< head>< /head>、< body>< /body>等),那么,必须有一斜杠作为结束标记(例如:< img src ="image1.jpg"/>)。 (5) 属性值必须用双引号括起来 例如:src="image1.jpg"。注意:SMIL文件中出现的文件名必须和服务器上的文件名一致,其路径一定要正确。否则,SMIL播放器未找到该文件。 (6) SMIL文件的拓展名为*.smil或*.smi 我们必须以*.smil或*.smi的拓展名来保存SMIL文件。这样SMIL播放器才能认出SMIL文件,以采用正确的解码方式解码、播放。为了防止和其他类型文件的拓展名冲突,强烈建议采用*.smil这个拓展名!注意:文件名必须是以数字、字母开始的,中间能有下划线,不能有空格。例如:test_one.smil能,而test one.smil坚决不行!如果你喜欢的话,能用我们上面讲的骆驼写法testOne.smil。注意:上面的例子大家能原版复制,保存为testOne.smil。并且找一个图片放到testOne.smil同一个目录下,并将 image1.jpg改成你的图片的名字(后面如果没有特别说明,都得这么做),就能用Realone player打开该源程式,看看我们的第一个演示的效果了。J (7) 附加信息写在< head>< /head>之间 |
|