·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0的sound类常用技巧整理(3)

时间:2013-05-08 17:11CuPlayer.com
问题三 如何确保声音播放的更流畅 解决方案 用SoundLoaderContext类设置声音的缓冲 Sound类控制的是流式音频媒体,也就有了了这样的问题,当我们播放某个文件的时候,很有可能文件还没下载完毕。尤其是一些大文件,

  问题三
如何确保声音播放的更流畅
解决方案
用SoundLoaderContext类设置声音的缓冲
Sound类控制的是流式音频媒体,也就有了了这样的问题,当我们播放某个文件的时候,很有可能文件还没下载完毕。尤其是一些大文件,比如整首歌长达若干MB的那种。
根据声音的编码方式(不同的编码方式文件的大小不一样)和可利用的带宽,声音文件的播放速度有可能比其下载速度要快,这样就会导致 “播放必须停下来等等下载”。为了避免这种情况的发生,我们可以设置sound对象的缓冲,缓冲可以使sound对象在播放之前预下载一些。这样,如果带 宽不足导致播放时断时续,设置缓冲可以有效的解决这个问题。
默认情况下,sound对象有一秒钟的缓冲,换句话说,就是你让它立即播放,声音文件的播放还是会等后一秒钟的内容下载到本地以后,才播放当前一秒的内 容。另外,如果缓冲区被用完而sound对象的播放停下来了,那么后赶来的数据会先把缓冲区填满才允许sound对象播放。
如果我们不确定网络的具体情况或者声音以高位速编码(每秒钟播放较多位的数据)的时候,我们可以设置缓冲区的大小来保证文件的流畅播放。这时我们要创建一 个SoundLoaderContext对象,通过设置缓冲区的大小,(单位:毫秒)来解决这个问题。比如,我们可以这样做来创建5秒钟的缓冲:
buffer = new SoundLoaderContext(5000);
应用这个缓冲有两种方法:
1. 在创建sound对象的时作为参数使用;
2. 在使用sound对象的load()方法时作为参数使用。
具体代码如下:

  1. //CuPlayer.com在创建sound对象的时作为参数使用; 
  2. var request:URLRequest = new URLRequest(“song.mp3″); 
  3. var buffer:SoundLoaderContext = new SoundLoaderContext(5000); 
  4. _sound = new Sound(request, buffer); 
  5. _sound.play( ); 
  6.  
  7. //CuPlayer.com在使用sound对象的load()方法时作为参数使用。 
  8. var request:URLRequest = new URLRequest(“song.mp3″); 
  9. var buffer:SoundLoaderContext = new SoundLoaderContext(5000); 
  10. _sound = new Sound( ); 
  11. _sound.load(request, buffer); 
  12. _sound.play( );  

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器