《SMIL基础教程277.pdf》由会员分享,可在线阅读,更多相关《SMIL基础教程277.pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SMIL 基础教程 一、简介 随着流技术的成熟和广泛的应用,其优点我们有了深深的体会。但是,其不足之处也逐渐体现出来。问题的出现,就要求我们想办法来解决。SMIL 正是针对目前流技术中的问题而提出来的。下面让我们来仔细看看SMIL。1、SMIL 简历 SMIL 是同步多媒体集成语言(Synchronized Multimedia Integration Language)的缩写,念做smile(呵呵,这名字不错吧)。它是由3W(World Wide Web Consortium)组织规定的多媒体操纵语言。最新的SMIL 版本是2001 年 8 月推出的SMIL 2.0 版本(参与制定该标准的公
2、司奇多,J 有 Compaq、Gateway、IBM、Microsoft、RealNetworks、Oratrix 等等。太多了,一口气都下不来!)。SMIL 与我们网页上用的HTML(超文本传输语言)的语法格式非常相似。后者主要针对普通的网络媒体文件进行操纵(文字、图片、声音、动画、视频的机械堆砌),而前者则操纵多媒体片断(对多媒体片断的有机的、智能的组合)。J 看来这东西真的不错!2、SMIL 的优点?SMIL 语言是一套已经规定好的而且非常简单的标记。它用来规定多媒体片断(这里多媒体的包括的范围有:声音文件、视频文件、动画、图片、文字等)在什么时候、在什么地方、以什么样的方式播放。糊涂了
3、吗?J 我们下面一起来看看SMIL 的优点(与众不同的地方!):为了方便起见,我们把我们想要完成的作品称之为演示(presentation)。(1)避免使用统一的包容文件格式 因为我们的多媒体文件的格式的时非常多的,例如:像声音就有*.mp3、*.wav、*.ra 等等;视频的格式更是多的出奇:*.mpg、*.avi、*.mov、*.rm 等等;图片的格式就更加不用说了。J 如果我们想在本地机器上直接播放或者在网络上用流式播放的方式来播放若干个文件。当然我们希望的是不要总让我们自己打开文件。而是,在上一个文件播放完成以后,就播放下一个。播放列表是个办法。但是,如果格式不一样,并且要求多个片断同
4、时播放(例如:显示图片的同时,有解说的声音。图片和声音是两个文件),那么以前唯一可行的办法就是用对媒体的编辑软件把这些多媒体文件整合成一个文件。这就必须统一使用某种文件格式。如果你的源文件(多个多媒体片断)没有保存副本的话,在你下次要用其中的某个源文件的时候,J 你就后悔去吧!如果我们用SMIL 来组织这些多媒体文件,那么可以在不对源文件进行任何修改的情形下,获得我们想要的效果(从这里来看,SMIL 好像是穿珍珠项链用的金丝线,只是把它们穿起来组成一个整体,而不会破坏它们。)。当然SMIL 的功能决非就这么点。接下来就是:(2)同时播放在不同地方(服务器上)的多媒体片断 如果上面第一点你还可以
5、用其他的办法做到,那么这一条恐怕你就没辙了?J 考虑这样一个实际问题:假如我们现在想把一段电视采访的实况(视频文件)加上解说(包括声音解说(音频文件)和文字解说)。姑且假定例子中的视频文件是甲服务器上的A 文件,音频文件是乙服务器上的B 文件,而解说文字却是丙服务器上的C 文件。传统的方法在这里就束手无策了(穷途末路了J),而SMIL 可以非常轻松的做到这一点。(3)时间控制 如果我们不想用整个视频文件,而只想用其中的某一部分。传统的方法中唯一可行的就是用剪辑软件来剪辑。费时费力不说,弄不好就弄巧成拙,把想要的给剪掉了!而SMIL 完成这件事真的是易如反掌!看这样一个例子:设视频文件A 的时间
6、长度是10 秒,我们要用的是25秒,其他部分我们不想要,只要用SMIL 规定:在该视频文件A 的第二秒开始播放,播放到第五秒结束就可以了。时间控制的另外的部分是动画和转场效果。如果上面的时间控制是丝绸,那么这个就是在它上面的双面刺绣!后面我们将要详细讨论这个问题。J (4)对整个演示进行布局 我们把上面提到的那个例子拿来说明这个问题:由于我们有视频、有文字我们希望什么样的布局呢?一般的情形下在一个区域(屏幕的上部)播放视频,在另一个区域显示文字(屏幕的底部)。当然,如果你认为在视频上面显示文字效果更好的话,那也是可以的。用SMIL 实现这样的效果异常容易!(5)多语言选择支持 分析这样一个实际
7、例子:我们要为某种产品作宣传,其宣传对象是多个国家的人,有英语国家的、有法语国家的、有德语国家的等等。当然最主要是讲中文的国家的人(我是中国人!)。如果我们想要所有的人都可以听懂、看懂我们的介绍,那么我们就的准备不同语言版本的媒体文件。传统的方法是让用户来选择,然后从服务器上下载相应的版本。麻烦就不用讲了。万一我们的选择老外都看不懂(有时候,我到德文、日文、朝鲜文的站点上,就不知道他们讲些什么东西L),这怎么办?如果把他们用SMIL 来组织起来、规定好,那么SMIL 语言将根据具体的语言设置来播放相应版本的演示。就是方便!(6)多带宽选择支持 由于各个用户连接到Internet 的方式不尽相同
8、,所以其连接的速度差别也较大。为了让他们都能够看到我们的演示,我们可以制作适应不同传输速度的演示。在传统的方法中,往往要用户自己选择他的机器连接所对应的传输速度,然后播放相应演示文件。这确实解决了一些问题。实际上,并不是所有的用户都知道自己的连接速度,就是知道了,还得选择不也是非常麻烦吗?SMIL 解决这个问题如同吹灰!播放器检测出用户的连接速度后,就同服务器“协商”,要求传输并播放相应的演示文件。方便乎?这也就是流技术中常常说的智能流(Surestream)中的一种.SMIL 语言主要的优点大的方面有以上这些。相信大家在实际应用中,会体会到它更多的优点。注意:我们在创建SMIL 文件以前,我
9、们要做好以下几件事:1、下载并安装Realone Player。目前,SMIL 的版本是2.0,全面支持SMIL2.0 版本只有Realone Player!所以我建议大家使用它。大家可以从http:/ 版,不要下载BETA 版。2、我们编辑SMIL 源文件(程序)用的是windows 附件中的记事本,希望检查一下你的记事本是否正常。当然,任何普通的文本编辑器都是可以的(ultra Edit 就很不错),但是考虑到大家学习的方便,故使用最容易找到的记事本来编辑。3、在我们的学习阶段,我希望我们大家不要用专门的SMIL 编辑器。一方面,现有的这些SMIL 编辑器不太好用。另一方面,那样也不利于我
10、们彻底理解SMIL 语言。二、SMIL 基本知识 下面我们看一个实际的SMIL 的例子(用记事本编写就可以,注意:在英文状态下编辑。也就是不要打开中文输入法。因为SMIL 播放器不认识中文的标点符号!):显然,SMIL 和 HTML 语言的语法格式非常相像!所以,如果大家对HTML 熟悉的话,SMIL学习起来就很容易。但是,二者的差别是很大的,所以如果想学的很好,大家一定要认真地学!从上面这个例子可以看出:(1)SMIL 程序以开始,以结束。SMIL 必须以开始,以结束,其他的一切标记都在这二者之间。这个和HTML 好像是一样的。(2)整个程序由body 和 head 两个部分组成 其中bod
11、y 是必须要有的。而head 部分则看实际情况。如果需要的话,我们就写。若是整个SMIL 程序非常简单并且没有必要用head 部分,那么,我们可以不写。从个人的经验来看,如果要写出一个效果好的演示,head 部分是必不可少的!J (3)属性和标记要求小写 SMIL 要求其标记和标记的属性必须小写!我们在这里不想给出属性和标记的定义。SMIL 语言就是由标记组成的。每一行都是标记,而标记基本上都有属性。例如:中,img 是标记,而src 是属性,image1.jpg 是 src 的属性值。注意:属性值大小写都可以。后面我们会碰到有些属性值要求骆驼写法。什么是骆驼写法?像fadeTocolor 这
12、样的属性值(看看,中间高,两边低,是不是非常像骆驼的驼峰?J)就是骆驼写法。(4)有些标记必须有一斜杠作为结束标记 在 SMIL 中,如果标记不是配对标记(例如:、等),那么,必须有一斜杠作为结束标记(例如:)。(5)属性值必须用双引号括起来 例如:src=image1.jpg。注意:SMIL 文件中出现的文件名必须和服务器上的文件名一致,其路径一定要正确。否则,SMIL 播放器找不到该文件。(6)SMIL 文件的拓展名为*.smil 或者*.smi 我们必须以*.smil 或者*.smi 的拓展名来保存SMIL 文件。这样SMIL 播放器才能认出SMIL 文件,以采用正确的解码方式解码、播放
13、。为了防止与其它类型文件的拓展名冲突,强烈建议采用*.smil 这个拓展名!注意:文件名必须是以数字、字母开始的,中间可以有下划线,不可以有空格。例如:test_one.smil 可以,而test one.smil 坚决不行!如果你喜欢的话,可以用我们上面讲的骆驼写法testOne.smil。注意:上面的例子大家可以原版复制,保存为testOne.smil。并且找一个图片放到testOne.smil 同一个文件夹下,并将image1.jpg 改成你的图片的名字(后面如果没有特殊说明,都得这么做),就可以用Realone player 打开该源程序,看看我们的第一个演示的效果了。J (7)附加信
14、息写在之间 如果我们有些关于源代码的一些说明也就是附加信息,例如版权、作者、标题、基地址等等,我们可以在中说明。其基本的格式是:,例如:。(8)用进行注释 这个标记和HTML 里面的是一样的。我们可以对我们的源文件进行注释。SMIL 播放器遇到这个标记后,将跳过去而不予理睬。例如:我们可以在写源代码以前,将我们想要实现的效果在中写出来,然后再编写源代码,假如我们忘记了删除该段说明,也不会影响演示的执行。上面简单介绍了SMIL 语言的基本知识,接下来要详详细细地学习SMIL!三、SMIL 详细解析 SMIL 语言的内容很多,我们从最常用的开始谈起。(准备好了吗?上路了!)1、多媒体片断结构组织(
15、1)标记。我们首先看下面这个例子:请保存(记得要用*.smil 这样的文件格式 J)并运行该源程序看看效果。我相信如果大家看到的是这样的效果:Realone player 先显示image1.jpg,然后显示image2.jpg。这就是我们这里用这对顺序播放标记规定的结果。规定的是:在中间的多媒体片断顺序播放。如下图所示。(2)标记 接下来瞧瞧这个例子:保存-运行-看效果。Realone player 同时显示image1.jpg 和 image2.jpg。这就是我们这里用这对并行播放标记所得到的结果。规定的是:在中间的多媒体片断并行播放。如下图所示。(3)和 标记协同使用。分析下面这个例子:
16、这个例子的效果是这样的:Realone player 先显示image1.jpg,接下来同时(并发)显示image2.jpg 和 image3.jpg,然后显示image4.jpg。为什么会这样?其中原因我想大家一定非常清楚了。我就不罗嗦了。J 有了和 这样两对标记后,我们对多媒体片断播放的先后顺序的控制就变得非常方便了。但是,我们上面的这些演示虽说是演示了。但是,它们的显示时间好像没有受到我们的控制。接下来着手解决这个问题。2、时间控制 (1)dur 属性 请大家看看下面这段代码的效果。相信大家已经看出门道了!对了,我们这里对image1.jpg 和 image2.jpg 的持续时间做了规定
17、。其中image1.jpg 持续时间5 秒,image2.jpg 持续时间10 秒。(2)begin 和 end 属性 上面规定的是播放多长时间,我们也想规定在什么时候开始播放。请看下面的程序。上面的这段程序规定就是图片image1.jpg 在整个演示进行2 秒后,开始显示,持续的时间是5 秒。对于图片的控制是这样,而我们常常需要对视频/音频的时间进行控制。下面这个例子来说明这个问题。test.rm 这个视频文件(如果大家手头上没有*.rm 格式文件,就用Realone player 的firstrun.rm 或者找个*.avi 的也可以。但是文件名要写对!)在整个演示开始5 秒后开始播放,在
18、整个演示播放40 秒以后,就结束播放。实际的播放时间是:40-5=35 秒。但是,一般情形下,我们的视频总在一个组中,这时候,他就得服从组的时间了。我们用下面的这个例子来解释这问题。image1.jpg 所在的组的持续时间为5 秒,而image1.jpg 自己要求持续10 秒,这不行。实际上image1.jpg 的显示时间只有5-2=3 秒!大家在以后写程序的时候要注意这个问题。(3)clip-begin 和 clip-end 属性 考虑这样一种效果:我们只要test.rm 播放这个视频/音频的510 秒这个时间断,怎么办?J 有了clip-begin和 clip-end,问题就很简单了!请看
19、:clip-begin 和 clip-end 属性是用内部时间控制的属性。这里的内部指的就是多媒体片断自己的时间线(timeline)。前者规定在什么地方开始播放,后者规定放到什么地方结束播放。为了更清楚的理解这些时间控制,我们看下面的这个例子:看看下面这个示意图:显然,首先是testone.rm 从自己的5 秒处开始播放,播放7 秒以后,testtwo.rm 从自己的2 秒处开始与testone.rm 一起播放,testone.rm 播放到自己的15 秒处停止播放,testone.rm 播放了15-5=10 秒。testtwo.rm 播放到自己得15 秒处停止播放,testone.rm 播放
20、了15-2=13 秒。图中灰色(黄色)部分表示播放的部分。(未同时停止播放!)接下来我们对时间的表示方法做个说明(默认的时间是秒,所以2s、2.0s和 2都是一样的 ):时间标记 指代 例子 说明 h 小时 1.5h 1 小时30 分钟 min 分钟 4.75min 4 分 45 秒 s 秒 10.45 10 秒 450 毫秒 正确的时间写法是:hh:mm:ss.xy。hh 表示小时;mm 表示分钟;ss 表示秒;x 表示1/10 秒;y 表示1/100 秒。例如:begin=01:40.0表示的是1 分 40 秒处开始,而begin=01:40表示的是1 小时40 分处开始。真的注意呀J。时
21、间控制非常重要,它直接影响我们演示的效果。而我们上面讲的这部分是最重要的,所以大家一定要理解上面的各个时间概念及其含义。(4)fill 属性 当演示中的某个片断播放完成以后,我们可以用fill 属性来规定它的显示状态。简单的说就是我们是清屏还是冻结屏幕。看下面这个例子:假设test.rm 的长度是20 秒,那么我们这里规定的就是:在test.rm 播放终了以后,屏幕上显示的是test.rm 的最后一帧(通俗的说就是最后一幅画面),显示的时间是30-20=10 秒;如果是图片的话,那么显示就是图片。Fill 属性值只有remove 和 freeze 两个,默认的值为remove。建议大家在演示的
22、最后的一个多媒体片断上用冻结(freeze),以防止屏幕上空空如也!J (5)repeat 属性 如果我们希望我们演示中的某个片断或者全部的片断重复播放若干次(姑且设为2 次)。那么我们可以后用repeat 属性来实现该效果。分析下面这个例子:上面这个例子就是让test.rm 播放两次。如果我们想让某个片断一直播放下去(网络广告上可以考虑这个),那么repeat=indefinite就可以了。当然,想要它停下来的一种方法是按下播放器stop(停止)键(在网页插件中就是右键菜单中的stop);另外的一种办法(大家都知道的)是关闭计算机!J 3、布局设计 我们这里所说的布局就是在我们的屏幕上定出各
23、个多媒体片断显示的位置(单纯的声音文件是不需要布局的!为什么?J 因为我们的耳朵听不出声音在屏幕上的什么地方;而我们的眼睛可以看到图片、动画和文字在什么地方!),准确地说是在播放器中。从前面我们并行播放的例子可以看出来,如果我们不对布局进行设计,那么显示的效果一塌糊涂!这里是SMIL 的重点和精华部分之一,打起精神,Lets go!(1)定义基本显示窗口 看下面的代码:说明:a、布局标记必须以开头,以结束,其他具体的标记都在这中间。必须放在之间。b、root-layout 标记表明的是规定最基本的、最底层的窗口。其他一切窗口都在它的基础上划分出来。c、width=300 表明窗口宽为300 个
24、像素点;height=200表明窗口高为200 个像素点;background-color=black表明窗口的背景颜色为黑色。这里也可以用颜色代码。例如:background-color=#000000。个人更喜欢代码,因为颜色代码表达颜色众多,但是代码不直观。(2)定义多媒体片断显示窗口 分析下面这段源程序:说明:a、定义多媒体片断显示窗口,它的id 是 vedio_region,这个id 是必须要的(在SMIL 中,有的id 号是可以省略的,但是我们建议大家都写上,这样很容易把整个SMIL 文件的脉络弄清楚)!离顶端和左段各有5 个像素点的距离(注意:这里的坐标是相对基本显示窗口而言!)
25、。窗口宽为 290 个像素点;高为260 个像素点。下面的显示窗口的定义和这个是一样的。b、声明了多媒体片断test.rm 在vedio_region 这个区域播放;声明了文本文件test.txt 在 text_region 这个区域显示。该例子布局效果如下图:上面我们对多媒体片断显示窗口的采用的是绝对定义的方法。多媒体片断显示窗口也可以用相对定义的方法来定义。例如:上面的比例是相对基本显示窗口而言的。这样的定义方法更为直观。(3)fit 属性 在实际制作演示的时候,我们碰到了这样的问题:我们定义的显示窗口的大小和我们的多媒体片断的尺寸大小不一致,或大了或小了。相信大家也会碰到这样的问题。解决
26、的办法有:a、修改窗口的大小(但是,很多时候我们没有办法修改。因为,如果修改的话,那么会影响其他窗口的显示。相应的其它窗口也得修改。实际情况是:我们很多的不同尺寸的多媒体片断都可能在同一个窗口中显示!)。b、使用恰当的多媒体片断和窗口的匹配方式。看这段代码:它的意思就是窗口vedio_region 以 meet 方式显示多媒体片断。fit 属性的属性值有hidden、meet、fill、scroll 和 slice 四个。其中hidden 是默认的属性值。Hidden 表示保持多媒体片断的尺寸不变,从窗口的左上角开始显示。如果多媒体片断尺寸比窗口的尺寸小,那么空白的地方将用背景色填充。如果多媒
27、体片断尺寸比窗口的尺寸大,那么多媒体片断超出窗口部分被裁去,不被显示。个人不喜欢这样的方式。meet 表示在保持多媒体片断宽/高比例不变的情况下,对多媒体片断的尺寸进行缩放。从左上角开始显示,缩放到高度和宽度中的一个尺寸等于窗口的相应的尺寸,而另外的一个小于窗口的相应的尺寸。空白处用背景色填充。我喜欢这个!fill 表示缩放多媒体片断使得其大小正好和窗口的大小一致。如果多媒体片断的宽/高比例和窗口的宽/高比例不等,那么多媒体片断就会变形,非常难看。强烈建议不要采用这种方式!scroll 表示对多媒体片断的尺寸不做什么修改,它以正常的尺寸大小显示。但是,如果多媒体片断的尺寸超出了窗口的尺寸,那么
28、将会相应出现水平或者垂直滚动条。该种适合于长时间的多媒体片断的显示。如果多媒体片断的显示时间很短,建议不要使用!slice 表示在保持多媒体片断宽/高比例不变的情况下,对多媒体片断的尺寸进行缩放。从左上角开始显示,缩放到高度和宽度中的一个尺寸等于窗口的相应的尺寸,而另外的一个大于窗口的相应的尺寸。超出的不分被裁去而不显示。各个匹配的效果请参见下图(省去scroll 效果)(4)z-index 属性 先试运行下面的源程序:我想大家已经看出来了:我们这里想做的就是那种电视的画中画效果。但是在实际显示的时候,我们的小画面有时候被大画面所覆盖。我的苦心也白费了。z-index 属性这个时候是我们的救星
29、。修改 成:在看看效果,行了吗?J z-index 属性规定相互重叠的窗口的显示次序。数字大那么显示就在上面。这个很容易理解,我们就不说太多。但是以下几点要注意:a、root 层窗口总是在最后一层,并且不用z-index 属性。b、z-index 属性值可以是负数。当然它就的排在0 以后。c、没有重叠的窗口可以使用同一z-index 属性值。4、链接制作 传统的流媒体的最大的一个弊端是没有交互性(Interaction)。现在如日中天的flash 本质上就是一种可交互性的流!由此可见可交互性的流的市场潜力。而 SMIL 是解决大部分流媒体交互性的最好的工具!这部分要求大家必须掌握,如果没有的话
30、,那么我们学习SMIL 就失去了意义。因为这里是SMIL 的主要特色(与其他的视频编辑软件相比较),就好像指针是C 语言的特色一样。(1)标记 运行下面这个程序:正常情况下,我们看到播放器播放videotest.rm,如果我们把鼠标放到正在播放的videotest.rm 上面,鼠标将有指针形状变为小手形状。单击鼠标左键,播放器播放将停止播放 videotest.rm 而播放1.rm 这个文件。这里我们就成功的创建了一个很简单的链接。属性就是用于链接标记,href 表示的是所要链接的文件。这种方法非常简单,我们就不做过多的介绍。如果我们要创建更加复杂的链接,我们就要用到下面的这个属性。(2)属性
31、 将上例中的换成下面这段代码,看看效果是不是有区别?我们看到的效果是完全一样的!那么属性不就多余了吗?那是不会的!JJ 请看:a、分时断链接 考虑这样一个问题:我们要在010 秒链到一个文件,1020 秒链到另一个文件,该怎么办?看我们的:大家将看到的效果:播放器播放1.avi,在010 秒链到1.jpg,在1020 秒链到videotest.rm。警告:dur、clip-begin 和 clip-end 这里不支持!b、链接部分SMIL 我们的链接可以链接的文件很多,几乎所用的多媒体片断都可以。*.smil 和*.html 也可以。但是,下面我们要讨论的是如何链接部分SMIL。请看例子。第一
32、个SMIL 文件,取名test11.smil:第二个SMIL 文件,取名test11app.smil 大家一定看出来了!我就是在test11app.smil 中为我们要链接的那部分内容设上id,然后在test11.smil 中的链接中用“#”来指向该标记id。应用的很多的时候是组内内容。我们把test11app.smil 修改为:到这里,链接可以说已经很完美了。但是,如果要锦上添花,那么下面这个属性是必不可少的。(3)coords 属性 将上面的代码修改为:或者:运行,看看效果。JJ 我们看到左半部分有链接效果,而右半部分却没有!这是我们采用了坐标规定链接区的缘故。coords 属性值的第一、
33、二个数分别表示的是链接区的左上角点的水平(left)和垂直(top)坐标;第三、四个数分别表示的是链接区的右下角点的水平(left)和垂直(top)坐标。上面用的是像素点的绝对定义方法,下面用的是比例的相对定义方法。喜欢哪一个就看你的喜好了。(5)链接注意 我们的演示最后基本上都要放到服务器上。因此,文件的位置的规定就非常重要,如果文件位置出错,那么播放器将找不到文件而不能播放。这是我们最不希望看到的!下面我们就来讨论这个问题。a、创建基地址 看下面的代码:上面就是在 中用附加信息的方式规定了整个smil 文件的基地址为rtsp:/ 是实时流传输协议,它保证SMIL 播放器正确地从流服务器 上
34、的audio 文件夹下获得我的所要的文件test.mp3。554 为流服务器的端口。http 是超文本传输协议。它保证SMIL 播放器正确地从web 服务器 上的image 文件夹下获得我的所要的文件welcome.jpg。说明的是该文件不在上面的基地址下,而在rtsp:/:554/audio/这个地方法,所我们必须修改地址。如果我们用的是本地机器硬盘上的文件就可以用src=file:/c:audiofirst.rm进行读取该文件。大家在调用文件之前,一定要弄清楚文件的位置!5、语言选择和智能流 (1)语言选择 如果,我们想要扩大我们演示的收看人群,那么我们的听众就会有中国人、美国人、法国人、
35、俄罗斯等等。那么怎样才能提供这种多国语言的支持呢?Switch 属性是该问题的“杀手”!请看例子:在 SMIL 播放器播放该SMIL 文件时,它检测你的播放器设置的是什么语言,如果是美国英语(en-us),那么就从服务器下载English.rm 播放;如果是简体中文(zh-cn),那么就从服务器下载Chinese.rm 文件播放。你可以设置很多的国家的选项。当然你的语言的版本也就很多了。J 下面我们给出经常使用的一些语言的代码。代码 语言 zh-cn 中文(中华人民共和国)en-us 英语(美国)fr 法语(标准法语)de 德育(标准德语)it 意大利语(标准意大利语)ja 日语 es 西班牙
36、语(西班牙)2)智能流(surestream)用户的联网速度是不尽相同的。有的可能只有50K 左右,有的可能有几百K。如果我们满足了高速用户的要求,那么低速用户可能由于速度太慢而不能收看。如果我们满足了低速用户的要求,那么高速用户看到的效果就打了不少的折扣,浪费了高速的带宽。怎么办?当用户的联网速度大于250kbps 时,播放器就从服务器下载highspeed.rm 播放;如果用户的联网速度大于80kbps 小于250kbps 时,播放器就从服务器下载midspeed.rm 播放;如果用户的联网速度大于20kbps 小于80kbps 时,播放器就从服务器下载lowspeed.rm 播放。所谓的
37、“众口难调”在各位的手里就变得如此简单!J 上面讲的就是智能流(surestream)的本质实现方法!我们下面看一个复杂的一点的例子。(3)语言与速度的同时检测 (4)演示速度的控制。上面我们讲的是在演示文件已经创建好的条件下进行的。那么,我们怎样制作好多媒体片断。下面是我们的建议:a、用Realproducer 或者其他的压缩工具制作流文件时,选择正确的压缩比例。为高速用户准备的文件的压缩比可以小一些,对于低速用户准备的文件的压缩比要大一点。b、在网络传输过程中,视频占用的带宽是最多的,音频次之,接下来是动画、图片,文字是最少的。所以,我们充分考虑我们的演示的结构。例如:如果并行播放多个视频
38、,这显然是不合适的。我们可以用图片来替代一部分视频效果。c、我们在传输中不能全部占用用户的带宽,必须留出一部分给用户浏览网页或者是干其它用途的。JJJ 我们很多的年轻人当然是用于QQ 聊天!下表列出了我们的建议。用户速度 建议最大流占用带宽 14.4 Kbps modem 10 Kbps 28.8 Kbps modem 20 Kbps 56 Kbps modem 34 Kbps 64 Kbps ISDN 45 Kbps 112 Kbps dual ISDN 80 Kbps Corporate LAN 150 Kbps 256 Kbps DSL/cable modem 225 Kbps 384
39、Kbps DSL/cable modem 350 Kbps 512 Kbps DSL/cable modem 450 Kbps 在我们以后的制作中。上面的这些知识是非常实用的。大家一定要努力掌握!6、动画效果 我们前面学习的内容是SMIL1.0 规定的。在SMIL2.0 中添加了不少的内容,其中动画就是其中一个。很多的国外的教程上把flash 文件*.swf 归为这一类。我们不能同意这样的分类方法。我们认为把这样已经做好的动画该归为视频一类。真正的动画(从SMIL2.0 规范中可以看出来)是由 SMIL 规定的并由SMIL 播放器解释产生的动画。从实际情况来看,动画效果主要是针对图片产生的。所
40、以,我们在这里用图片来做例子。其他的多媒体的制作方法是类似的。有兴趣的GG、JJ、DD 和 MM 可以自己做做。(1)运动动画 为先睹为快,请在Realone player 中运行下面的程序:解释:a、我们这里用到的是SMIL2.0 规范中的规定的内容的。所以,在第一行里(xmlns=http:/www.w3.org/2000/SMIL20/CR/Language)我们必须声明我们所用的规范。不然的话,播放器可能不能正确解码、播放。b、animateMotion 标记声明的是我们所要的动画类型。注意:这里就是我们所说的骆驼写法,还记得吧!JJ c、from=0 0 to=600 400属性及其
41、属性值声明的是动画从坐标点(0,0)运动到坐标点(600,400)。这里我们也可以写成:d、dur=4s属性及其属性值声明的是动画在4 秒内完成。在我们这个例子中,图片的存在时间是6 秒,那么动画完成后,将有2 秒钟的时间静止不动。如果图片的存在时间小于动画存在时间,那么动画运动到半路上就得停止,这样的情况是该避免的。(2)缩放动画 下面我们看看另外的一种动画形式:缩放动画。先看效果!J 解释:animate attributeName=height from=320 to=160声明了动画的类型和参数。大家看了效果以后,在结合上面的参数的意义,各参数是什么意思我们也就不用多讲了。J 7、转场
42、效果 首先解释一下什么是转场效果。我们的演示中多媒体片断是很多的,不可避免的会有两个片断之间的切换。例如:一个图片演示完了,该接着演示下一个图片,两图片中间是有一个过渡的。这个过渡我们就称谓转场效果。如果我们不设置转场效果,那么,过渡的效果肯定不好。LSMIL 中的转场效果大致分为wipe 和 fade 两类。()fade 类型。从名字就可以看出,这个是淡入淡出的效果。先睹为快!J 请看例子:解释:a、transition 声明我们要设置转场效果。id=fade1设置了该转场效果的id 号。id 号必须设置。type=fade设置了转场效果的基本类型为fade。subtype=fadeToCo
43、lor设置了转场效果的具体类型(子类型)为fadeToColor(注意这里又是我们提到的骆驼写法!)。dur=4s设置了该场效果完成的时间。b、transIn=fade2设置了图片g04.jpg 显示时采用转场效果fade2;transOut=fade1规定图片g04.jpg 完成显示时采用转场效果fade。c、fade 只有三个子类型。上面我们用了个。还有一个是crossfade,这个也是缺省设置。()wipe 类型 wipe 为擦去类型。该类型的效果很多很多。我们这里所说的wipe 只是他们的总称(注意wipe不能作为type 的属性值,而是它的子类作为type 的属性值,子类的子类作为s
44、ubtype 的属性值!J 谁让它的属性值这么多!)。具体的有barWipe、boxWipe、fourBoxWipe 等 36 大类!不管它有多少类,先看看怎么弄。请看例子:解释:a、JJJ 和上面的写法基本上是一致的!b、type=waterfallWipe后面没有子类型表示使用的是waterfallWipe 类型的默认子类型。()综合应用 我们上面都只是用在单个多媒体片断上的转场效果。下面看看在多个多媒体片断上怎样设置转场效果。还得看例子:J 解释:a、fadeColor=green设置了谈出谈入色为绿色(green)。在这里表示的就是从当前的多媒体片断渐变为绿色。下面的fadeColor
45、=red则表示从红色渐变为当前的多媒体片断(如果是图片则变为图片,如是视频则变为第一帧)。b、fill=transition表示的是最后的完成效果有下面的转场效果来决定。c、最后一个就不能用fill=transition了。想想,它就是最后一个了,上哪里去找下面的转场效果呢?四、后记 感谢大家一路陪伴!我们终于完成了SMIL 基础性学习。SMIL 的内容是很丰富的,由于作者的水平、时间和精力有限,研究的不是很深。这次真的体会到学习一种新的语言的难度比学习软件的应用难度大很多,而这是不可以同日而语的。我们所提到的是非常基础、非常重要、非常实用的部分。如果大家有兴趣想进一步研究,可以看看SMIL2
46、.0 规范。它位于http:/www.w3c.org/下,大家可以下载下来看看。下面该交待的是SMIL 目前支持的媒体对象:animation、video、audio、img、text 和 textstream。它们所能支持的格式由我们选择的播放器来决定。下面我们要谈到这个问题。虽然,SMIL 的优点很多,但是缺点也是有的。、播放器太少目前全面支持SMIL2.0 的播放器只有Realone player。而支持SMIL1.0的播放器却很多。例如:Quicktime(苹果(apple Inc.)公司),soja(一个用java 语言编写的播放器,体积很小,效果不错。嵌在网页上是在好不过了)。这个
47、问题我想不久就会得到解决。、各播放器不太兼容我们在*.smil 文件中用的多媒体的格式必须考虑到播放器所能支持的格式。例如:Realone player 支持的流文本(stream text)格式*.rt 非常不错。可是,很少有其他的播放器支持该中格式。Quicktime 支持*.mov 格式,这种格式也是非常棒的。然而,支持它的播放器寥寥无几。相信随着各个播放平台的功能的拓展,这个问题也会得到解决。、制作的工具匮乏.目前我们没有发现好的制作软件。oratrix 公司的GRiNS Editor for RealONE 用起来并不方便。而Flution 则好像是个人业余写的程序,用起来比GRiN
48、S Editor for RealONE 舒服些,但是感觉也不是很好。如果演示不是非常复杂,可以用Real slideshow 来做,效果不错,使用也非常简单。如果愈来愈多的公司来写这样的编辑软件,那么将来肯定会有很多好的SMIL:编辑软件。就像今天的html 的 Dreamweaver 一样强。4、中文的支持能力差 我们上面提到可以使用*.txt 文件。如果*.txt 文件的内容是英文的,那么一切都非常好。但是,如果是中文的话,显示的就是一对乱码。由于个人的水平有限,到目前为止,依然没有找到中文显示的解决办法。发表:realone 对 smil 支持不错,而 quicktime 支持就差很多了,在 quicktime 里,实际上使用track.在某种意义上讲,quicktime 本身就是一个非线性编辑器,主要使用track 来完成.做一个最简单的测试,同时播放两个影片,使用smil 写出来,在 realone 和 quicktime 上能完成,如果其中一个有延迟 就是使用begin=5s,在 quicktime 中无法完成.quicktime 好象使用一种applescript 语言._