渐进式下载是介于下载本地播放与实时流媒体之间的一种播放方式,下载本地播放必须将文件全部下载完成后才能下载,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,完成播放内容之后,整个文件会保存在计算机上。从播放的效果和用户体验上看,渐进式下载和实时流媒体是一样的,不同的是渐进式下载本地保留文件的副本,因此有人把它称为“伪流媒体”,即不是真正意思上的“
流媒体”,此外,渐进式下载不能跳过某些数据包进行下载。
定义
渐进式下载(Progressive Download)其实也就是一种简单的从HTTP
WEB服务器进行文件下载的普通方式。大多数媒体播放器和平台都支持渐进式下载,比如说ADOBE FALSH,SILVERLIGHT以及Windows媒体播放机。“渐进”这个术语源于播放器客户端允许媒体文件还正在下载的时候就开始播放,不用等到整个文件下载都完成写到磁盘上之后,通常情况下播放内容都是先直接放在浏览器的
缓存里的。支持HTTP1.1标准的客户端可以通过向WEB服务器进行字节范围请求(byte range request)来寻址到没有下载完成的媒体文件的相应位置。
渐进式下载是介于下载本地播放与实时流媒体之间的一种播放方式,下载本地播放必须将文件全部下载完成后才能下载,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,完成播放内容之后,整个文件会保存在计算机上。现在流行的
视频共享网站,比如说YOUTUBE,优酷,MYSPACE和土豆等,几乎都是在使用渐进式下载技术。
特点
从播放的效果和用户体验上看,渐进式下载和实时流媒体是一样的,不同的是渐进式下载本地保留文件的副本,因此有人把它称为“伪流媒体”,即不是真正意思上的“
流媒体”,此外,渐进式下载不能跳过某些数据包进行下载。
不像
流媒体服务器,几乎都只传送差不多十秒钟的数据给客户端。HTTP
WEB服务器会在媒体文件下载完成之前一直在传送数据流。如果一开始播放时你就暂停了一个渐进式下载的视频,然后在那等着,就会把整视频个文件都下载到浏览器的缓存里面,这样就可以不停顿、平滑地把整个视频都看完。用这样的下载的方式,一个已经完全下载了的十分钟的视频,就有可能你只看了三十秒钟,因为你并不喜欢这段视频,然后关掉它,其实这样你和你的内容提供商都浪费了九分三十秒的
宽带。为了缓解这个问题,IIS7.0提供了一个很酷的技术,叫做
码率节阀(Bit Rate Throttling)的技术,允许内容提供商合理限制下载码率到所需要的
码率,这样流控服务器就可以减少一些开销。
开发工作
基本工作
开发渐进式下载多媒体时,在服务器端和客户端方面都不需要做太多的工作,服务器端只需要将流媒体文件放在服务器目录下就可以了,而客户端,也就是在iOS平台上编写的程序。
渐进式下载视频开发所使用的API与播放本地文件API没有什么区别,可以使用Media Player框架中的MP Movie Player Controller 和MP Movie Player View Controller 进行播放,可以使用AVFoundation框架中的AVPlayer进行播放。
具体内容
MP Movie Player Sample的实例,它是介绍使用Media Player框架播放视频的实例,现在修改一下把要播放的视频文件直接放到服务器上。由于Mac OSX系统下都有一个Apache
HTTP服务器,所以把要播放的媒体文件放到Apache服务器的目录(/Library/WebServer/Documents)下,为了便于管理,在/Library/WebServer/Documents下创建子目录stream。
然后返回的NSURL对象内容是来自于服务器上的所要播放的文件,其他部分不需要修改。修改完成后,可以运行一下看看效果是否与本地部分一致。
视频Flash
和声音文件的事件方式和流方法类似,Flash的视频也有
嵌入式和渐进式:前者全部下载完成后播放,后者采用流方式播放,而且具有更多的控制属性。在Flash中,可以导入已经部署到Web服务器上的视频文件,也可以选择存储在本地计算机上的视频文件,导入到FLA文件后再将其上传到服务器。导入渐进式下载的视频方法如下:
(1)要导入的视频剪辑到当前Flash文档,选择“文件”——“导入”——“导入视频”命令,屏幕上即显示“导入视频”向导。
(2)选择要导入的视频剪辑。可以选择存储在本地计算机上的视频剪辑,也可以输入已上传Web服务器的视频URL,单击“下一步”按钮。
(3)选择视频剪辑的外观,可以选择的选项如下:选择“无”,为不设置FLVPlayback组件的外观;选择预定义外观之一,Flash将该选中外观复值到FLA文件所在的文件夹;自定义外观URL,在URL后输入相应的Web播放器外观的链接地址。
(4)前面设置好后,单击“下一步”按钮,接下来在弹出来的下一个界面中,单击“完成”按钮。
(5)视频插入完成,可以看到Flash文档中已经有了视频外观的组件,也可以根据需要,对该外观做一些大小调整。
(6)这时可以预览导入后的效果,选择“控制”——“测试影片”命令或者按“Ctrl+Enter”
组合键,来测试导入的视频。