[AS3]as3.0的sound类常用技巧整理(3)
问题三
如何确保声音播放的更流畅
解决方案
用SoundLoaderContext类设置声音的缓冲
Sound类控制的是流式音频媒体,也就有了了这样的问题,当我们播放某个文件的时候,很有可能文件还没下载完毕。尤其是一些大文件,比如整首歌长达若干MB的那种。
根据声音的编码方式(不同的编码方式文件的大小不一样)和可利用的带宽,声音文件的播放速度有可能比其下载速度要快,这样就会导致 “播放必须停下来等等下载”。为了避免这种情况的发生,我们可以设置sound对象的缓冲,缓冲可以使sound对象在播放之前预下载一些。这样,如果带 宽不足导致播放时断时续,设置缓冲可以有效的解决这个问题。
默认情况下,sound对象有一秒钟的缓冲,换句话说,就是你让它立即播放,声音文件的播放还是会等后一秒钟的内容下载到本地以后,才播放当前一秒的内 容。另外,如果缓冲区被用完而sound对象的播放停下来了,那么后赶来的数据会先把缓冲区填满才允许sound对象播放。
如果我们不确定网络的具体情况或者声音以高位速编码(每秒钟播放较多位的数据)的时候,我们可以设置缓冲区的大小来保证文件的流畅播放。这时我们要创建一 个SoundLoaderContext对象,通过设置缓冲区的大小,(单位:毫秒)来解决这个问题。比如,我们可以这样做来创建5秒钟的缓冲:
buffer = new SoundLoaderContext(5000);
应用这个缓冲有两种方法:
1. 在创建sound对象的时作为参数使用;
2. 在使用sound对象的load()方法时作为参数使用。
具体代码如下:
- //CuPlayer.com在创建sound对象的时作为参数使用;
- var request:URLRequest = new URLRequest(“song.mp3″);
- var buffer:SoundLoaderContext = new SoundLoaderContext(5000);
- _sound = new Sound(request, buffer);
- _sound.play( );
- //CuPlayer.com在使用sound对象的load()方法时作为参数使用。
- var request:URLRequest = new URLRequest(“song.mp3″);
- var buffer:SoundLoaderContext = new SoundLoaderContext(5000);
- _sound = new Sound( );
- _sound.load(request, buffer);
- _sound.play( );
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例