针对网络交互的增强功能

Flash Player 10.1 和 AIR 2.5 针对所有平台上的网络优化引入了一组新功能,包括循环缓冲和智能搜索。

循环缓冲

在移动设备上加载媒体内容时,可能会遇到在台式机上几乎从不会发生的问题。例如,您很有可能遇到磁盘空间或内存用尽的情况。加载视频时,Flash Player 10.1 和 AIR 2.5 的台式机版本会下载整个 FLV 文件(或 MP4 文件)并将其缓存到硬盘驱动器上。然后运行时从该缓存文件播放视频。很少出现磁盘空间用尽的情况。如果发生这种情况,台式机运行时将停止播放视频。

移动设备可能更容易用尽磁盘空间。如果设备的磁盘空间用尽,运行时不会像在台式机运行时中那样停止播放。运行时会再次从缓存文件开头写入来开始重复使用缓存文件。用户可以继续观看视频。用户无法在已经重新写入的视频区域搜索,文件开头除外。默认情况下不会启动循环缓冲。循环缓冲可以在播放期间启动,如果影片大于磁盘空间或 RAM,还可以在播放开始时启动。运行时要求 RAM 至少为 4 MB、磁盘空间至少为 20 MB 才能使用循环缓冲。

注: 如果设备有足够的磁盘空间,则运行时的移动设备版本与在台式机上的行为相同。请记住,如果设备没有磁盘或磁盘已满,RAM 中的缓冲区会用作回退。可在编译时设置缓存文件和 RAM 缓冲区的大小限制。一些 MP4 文件的结构要求下载整个文件才能开始播放。如果磁盘空间不足且无法播放 MP4 文件,运行时将检测这些文件并阻止下载。最好根本不要请求下载这些文件。

作为开发人员,请记住,只能在缓存流的边界内进行搜索。如果偏移量超出范围, NetStream.seek() 有时会失败,此时将调度 NetStream.Seek.InvalidTime 事件。

智能搜索

注: 智能搜索功能要求使用 Adobe® Flash® Media Server 3.5.3。

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

下图演示了缓冲区在运行时的早期版本中的行为方式。 bufferTime 属性指定提前预加载的秒数,以便断开连接时可以使用缓冲区而无需停止视频:

智能搜索功能之前的缓冲区行为

通过智能搜索功能,当用户对视频进行前进或后退播放时,运行时现在使用缓冲区来提供向前或向后搜索。下图演示了该新行为:

通过智能搜索功能进行向前搜索

通过智能搜索功能进行向后搜索

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

注: 此行为不适用于渐进式视频下载。

要启用智能搜索,请将 NetStream.inBufferSeek 设置为 true