六
19
2010
视频飞出功能实现分析
视频飞出就是在线播放视频的时候在另一个窗口以最小需求显示。利用剩余的空间来做其它事情,同时也可以持续关注视频。视频飞出也称为视频独立播放、小窗口播放。
视频飞出以我所看到的应该有三种实现方式。
- 网页源码嗅探分析 。
这种方法是对之前在线视频下载的扩展。通过分析网页源码得到在线视频的地址,然后使用外部播放器播放,这时候播放窗口就随你揉捏了。
这种方法需要对每个视频网站的网页源码进行分析,飞出来后需要手动定位之前播放的位置。飞出后可以关闭网页,以最小资源播放。
- 视频管道技术。
称之为视频管道是因为这种技术就像一个管道一样让视频从网页里流到了外部窗口上。这种方法其实没怎么弄明白,但这并不妨碍我分析它。
- 如果将飞出的窗口的一部分移出到桌面外,这时窗口里的部分内容就会花掉。程序没有处理好图像缓存窗口重绘的话往往会出现这种情况。

- 网页原来视频的地方已经是一片空白了,但是如果切换到其它标签或者将视频(原来的位置)拉到不可见的位置,再看飞出的窗口,这时不可见的部分都成灰了。说明飞出的窗口其实也是由浏览器渲染的。

- 飞出的窗口操作和网页里的没什么不同,一样可以用鼠标键盘。说明使用的不是简单的图像复制(类似放大镜的技术)。
可能的实现方式:
映射技术,将网页中视频位置的部分的绘画操作映射(复制也有可能,映射的话应该不会花吧)到飞出的窗口上,再将飞出窗口的鼠标键盘操作映射到原来的位置。
直接将Flash窗口移到外部,通过测试可以知道Flash不同于其它内容,是有独立窗口的。这样实现的话也是很配视频飞出这个名称的。^_^
- 最小浏览器窗口
这是一个浏览器内部实现的方式。不把视频从网页里分离出来,而是分离一个浏览器标签到新窗口。这个新的窗口没有工具栏、地址栏、状态栏、滚动条等,窗口大小设置为视频大小,并且将视频滚动到可视部分。目前浏览器实现的视频飞出多为这种。
这个是视频弹窗吗?
不是弹窗广告。
那么你实现的方法是什么?
我认为将flash移动到外部这个方法,这样不会花掉,也能保证低资源运行
我用的是窗口操作,也就是把Flash窗口移到一个外部窗口。
确实会花掉,目标窗口的描绘工作是原程序在做的。移到新窗口后,目标窗口的位置改变,但原程序还是以原来的位置来计算,只在自己需要的时候重绘,于是就花了。
降低资源是没有的,浏览器窗口还是要开着。