浏览器如何加载Flash文件?它们是否逐步加载,或浏览器是否等到整个Flash文件加载后再显示它?
原因是我有一个非常高质量的小夹子,只有几秒钟,但它超过4 mb。
在观看之前,用户是否必须等到加载所有4 mb?或者它是否在用户观看时加载?
我没有做任何花哨的事情,我只是将.flv导入Flash,并导出为.swf。
先谢谢你
答案 0 :(得分:4)
加载Flash文件有很多部分,更常见的是HTML页面。
我将从HTML页面的顶部开始,我敦促其他人纠正我可能犯的任何错误。
当收到HTML页面时,浏览器会将其解析为文档对象模型(DOM),以便它具有每个元素的编程表示。浏览器遍历DOM树中的每个节点并根据需要填充它。
对于大多数节点,这只是创建一个新的DOM元素,如div
,p
或a
;但有些内容需要加载或更换。
表单元素(input
,select
,button
,textarea
)将替换为这些表单字段的特定于浏览器的表示形式。
link
元素是异步加载的。随着外部资源的加载,DOM继续解析页面。
script
元素是同步加载的。在脚本完成加载和执行之前,DOM无法继续解析树,如果加载失败或执行有错误,则无法解析。
img
个元素是异步加载的,但允许onload
回调确定它们何时完成加载。在所有onload
元素完成加载(或失败)之前,DOM无法触发窗口的img
事件。
了解基本元素有助于理解更多涉及的元素,例如object
,embed
和iframe
,这些元素也会替换为内容。
Flash通常使用object
,embed
和iframe
嵌入网页。
据我所知,object
和embed
元素的反应相似,所以我会从此处快捷方式并说出object
。
在iframe
和object
元素中加载闪存之间存在明显差异。
object
元素与script
元素非常相似,其中必须成功加载并执行内容才能继续解析DOM。
iframe
元素非常类似于img
元素,其中内容是异步加载的,但回调可用于确定加载何时完成(尽管我不是确定回调是否可用于跨域请求)。
上一节讨论只是内容加载的HTML方面。但是,闪光灯内有许多细微差别会严重影响闪光电影的加载时间。
正如我之前所说,在继续解析DOM之前,script
元素必须完全加载和。在Flash文件中也发现了类似的效果(即使通过iframe
包含在内)。必须先加载swf
中嵌入的所有资源,然后才能swf
释放对页面加载进度的保留。
如果您已将视频直接嵌入到时间轴中,则必须先加载整个视频,然后才能将闪存视为已完成并初始执行。
相反,如果您选择使用异步回调来开始加载恰好是视频的外部资源,并使用异步加载器加载视频,则不必等待视频完成在加载页面的其余部分之前加载;在闪存中,您仍然需要等待视频完成加载才能开始播放视频。
或者,闪存中有许多方法可以流式传输视频,或逐步从服务器加载视频,这样可以在不完成加载的情况下播放视频。 我对flash特定方面的经验很少,所以我不会解释 如何完成。
使用像swfobject
这样的库可以异步加载所需的swf
,以便闪存加载是非阻塞的。
可能会逐步加载Flash文件 ,具体取决于您构建HTML的方式以及swf
中正在运行的代码。
您可能需要查看swfobject
答案 1 :(得分:1)
swf文件逐步加载(因此加载条,“50%加载”消息等)。
历史上,Flash文件基于帧,如果主时间轴有多个帧,则在加载整个文件之前,它们将在加载后立即加载和显示。但是,现在大多数Flash内容都不是这样构造的,并且比按顺序显示的一系列帧更复杂。视频播放还增加了基本帧模型之外的复杂性,包括视频编解码器,音频同步等。
问题的解答“他们是否逐步加载,或浏览器是否等到整个Flash文件加载后再显示它?”是他们逐步加载并显示在整个Flash文件之前swf文件已加载。但是如果没有看到它或者如何构建它,这将如何影响用户体验您的视频的方式很难说。
答案 2 :(得分:0)
它将首先加载整部电影。因此,请将视频设为电影在运行时加载的外部文件。