方法说明: 采用声音的stream方式,有个主要的缺点:它非常的增加文件体积大小。 这个是由于stream技术本身造成的。如果你使用一个2秒的声音,循环100次,那么声音的总长度为200秒,我们用stream方式导入这200秒的声音。如果声音的原始大小为10k,那么输出的swf文件将包括大约1M的声音,这是估计值,考虑到声音的质量以及一些其他的因素,它的实际大小应该是800~900k。如果用56k拨号上网的平均下载速度4.5k来考虑,用户需要大概200秒(超过3分钟)的时间来下载。如果考虑更低的上网速度比如2.5k,那么需要大概5~6分钟才能下载完.
于是得出结论:文件大小是个大问题.
一个有趣的现象就是,如果我们使用比较小的声音来使用stream方式,那么最后输出的swf文件大小将会小很多。如果整个音乐是采用killersound教程里使用的技术(www.killersound.com),那么采用一个声音文件(比如最小的那个)作为stream方式而其他声音文件使用event方式就已经足够了。经过多次测试,我们得到以下的结论:利用layer将其中一个声音文件设置成stream,其他声音文件则不设置为sream方式,效果是完美的。这也意味着Flash可以作为一个混音器来使用。
那么我们怎样才能更深层次的减少文件体积呢?如果我们选择压缩声音质量(比如: ADPCM, 5 kHz, 4 bit)结果将不会让我们满意。文件体积是小很多了,但是声音效果太差了! 解决方法就是下面的 str0 以及 str00 技术,这就是我们所谓的 "NULLSOUND STREAMING" 技术。
在开始讲述这项技术之前,让我们来看一看比较结果: 应用这项技术最明显的例子就是 killersound 为虚拟现实开发的片头上。 这个片头包含了1分钟的复杂音乐和音效。使用了5个声音文件,每个文件都有不同的压缩位数从而达到整体的音质要求。在这个例子里,背景音乐只需要8kbit/s的mp3文件(因为里面包含了主要的低频部分),高频的鼓声等部分则需要32kbit/s的mp3文件。根据我们后面要介绍的技术,我们还需要使用一个0.1秒长的"NULLSOUND"文件。因为我们需要保持动画和声音的同步,片头的帧率必须恒定,这就意味着我们必须采用stream方式。 在传统的方式中,只有一个或者所有的声音全部都被设置成stream方式,这样的话,stream声音本身的比特率必须设置的很高以满足某些音质的需求,这也意味着我们浪费了不少的空间。采用新的NULLSOUND stream技术的话,我们可以为每个声音文件设置不同的比特率,从而保证文件变小。
下面的表格中显示了片头在不同技术下面的输出文件大小。 str1和str5采用了传统的方式,str0和str00则采用了新技术。需要提到的是,文件不但包含了音乐,也包含了动画,所以文件体积比较大。 str1 : 1个循环音效设置成 STREAM音质为MP3, 48 kbit/s, MONO,其他音效设置成EVENT音质为根据不同音效分别设置不同的优化值 结果:音乐大小 595 KB (文件大小 1.25 MB ) str5 : 5个音效全部设置成 STREAM音质为MP3, 48 kbit/s, MONO 结果音乐大小 594 KB (文件大小 1.24 MB ) str0 : "NULLSOUND"音效设置为streamed 音质为 MP3, 8 kbit/s, MONO, 其他音效设置为EVENT音质为根据不同音效分别设置不同的优化值 结果:音乐大小 192 KB ! (文件大小 847 KB ) str00: "NULLSOUND"音效设置为streamed 音质为 MP3, 8 kbit/s, MONO, 其他音效设置为EVENT音质为根据不同音效分别设置不同的优化值 结果:音乐大小 59 KB !!! (文件大小 714 KB ) 这些结果是有说服力的,假如我们制作一个“无声”版本(所有的动画保持原状,只删除了所有的声音)那么输出文件大小为655kb 。如果我们比较一下两个文件的大小差异的话,结果说明采用str00方式的整个声音文件只占用59kb!!!而采用传统方式的话,音乐文件将占用595kb. 进一步说明:如果有5到6个2,3秒的声音文件,构成1,2,3分钟甚至更多时间,音乐文件占用的体积将低于70~80k.相对的,如果采用传统方法处理的话,占用文件大小将是1MB甚至更多。
出处:蓝色理想
责任编辑:jimbob
上一页 NullSound技术 一 下一页 NullSound技术 三
◎进入论坛Flash专栏版块参加讨论
|