Flash 平台技术的优化(十五) 循环缓冲与智能搜索

来源:互联网 发布:ubuntu不允许root ssh 编辑:程序博客网 时间:2024/05/28 18:43

循环缓冲

      在移动设备上加载媒体内容时,可能会遇到在桌面计算机上几乎从不会发生的问题。例如,您很有可能遇到磁盘空间或内存用尽的情况。加载视频时,Flash Player 10.1 的台式机版本会下载整个 FLV 文件(或 MP4 文件)并将其缓存到硬盘驱动器上。然后从该缓存文件播放视频。很少出现磁盘空间用尽的情况。如果发生这种情况,桌面播放器将停止播放视频。移动设备可能更容易用尽磁盘空间。如果设备的磁盘空间用尽, Flash Player 不会像在桌面播放器中那样停止播放。而是再次从缓存文件开头写入来开始重复使用缓存文件。用户可以继续观看视频。用户无法在已经重新写入的视频区域搜索,文件开头除外。默认情况下不会启动循环缓冲。循环缓冲可以在播放期间启动,如果影片大于磁盘空间或 RAM,还可以在播放开始时启动。Flash Player 要求 RAM 至少为 4 MB、磁盘空间至少为 20 MB 才能使用循环缓冲。

  注: 如果设备有足够的磁盘空间,则 Flash Player 的移动版本与在桌面上的行为相同。请记住,如果设备没有磁盘或磁盘已满,RAM 中的缓冲区会用作回退。可在编译时设置缓存文件和 RAM 缓冲区的大小限制。一些 MP4 文件的结构要求下载整个文件才能开始播放。如果磁盘空间不足且无法播放 MP4 文件, Flash Player 将检测这些文件并阻止下载。最好根本不要请求下载这些文件。
作为开发人员,请记住,只能在缓存流的边界内进行搜索。如果偏移量超出范围, NetStream.seek() 有时会失败,此时将调度
NetStream.Seek.InvalidTime 事件。


智能搜索

     注: 智能搜索功能要求使用 Adobe® Flash® Media Server 3.5.3。
Flash Player 10.1 引入了一种称为智能搜索的新行为,可以在播放视频流时改进用户体验。如果用户在缓冲区边界内搜索目标,则 Flash Player 将重复使用该缓冲区以提供即时搜索。在 Flash Player 的早期版本中,不会重用缓冲区。例如,如果用户从流服务器播放视频并且将缓冲时间设置为 20 秒 (NetStream.bufferTime),该用户尝试提前 10 秒进行搜索,则 Flash Player将丢弃所有缓冲数据,而不是重用这 10 秒加载的数据。此行为强制 Flash Player 更加频繁地从服务器请求新数据,导致在连接速度慢时播放性能欠佳。

当用户向前或向后搜索时,智能搜索会重用缓冲区,因此播放体验更快更顺畅。这一新行为的优点之一是可以节省视频发布者的带宽。但是,如果搜索在缓冲区限制范围之外进行,则发生标准行为, Flash Player 会从服务器请求新数据。
注: 此行为不适用于渐进式视频下载。

原创粉丝点击