Flash内容下载

时间:2010-08-09 01:27:13

标签: flash flv playback

我一直想知道一些东西,像youtube这样的网站(潘多拉做mp4s)

  • 通过Flash播放器播放音乐
  • 播放每首曲目时,会将其下载到用户的计算机上,例如/ tmp / FlashXX *****

这允许用户将flv移出该文件夹以便以后播放。

然而,当用户将flv移出/ tmp文件夹时,播放器会继续愉快地播放音乐/视频。 flash播放器如何处理其文件的删除以及为什么不从此处抛出错误?

更重要的是,如果玩家在没有游戏的情况下玩得开心,为什么首先将flv下载到用户?

3 个答案:

答案 0 :(得分:2)

即使从temp文件夹中删除文件,内容仍会继续播放,因为Flash已将文件读入内存以显示该文件。这在概念上与原因相同,如果您将本地存储的图像拖到浏览器中,如果您删除该文件,浏览器不会停止显示图像。

至于文件存储的原因,它只是被缓存,就像浏览器显示的任何其他文件一样,因此如果你重新加载页面,你将不必(必须)重新加载媒体文件。

对于视频,所有这些都可能有一些警告 - 例如,如果您在视频中向前或向后搜索,我不能发誓,如果已删除缓存版本,视频是否将从内存中播放。我想,有些情况下Flash不会将整部电影保留在内存中。但作为一般情况,答案应该如此处所述。

答案 1 :(得分:2)

这实际上与缓存无关。相反,它的工作原因是Unix文件系统的工作方式。打开文件时,将读取其inode并指示数据在磁盘上的位置。移动或删除文件(“取消链接”)时,inode将移动到新位置或从目录中删除。但是,在指向不存在对该inode的引用之前,它指向的数据不会失效。换句话说,只要文件保持打开状态,删除或移动文件就不会对读取该文件的程序产生影响。

这不是Windows文件系统的工作方式,这是在尝试删除正在使用的文件时导致常见的“文件被锁定”问题。 (免责声明:对于支持硬链接的NTFS,这可能不是这样,但我很确定在FAT上就是这种情况。)

它运行良好,有时程序甚至会使用一个技巧来自动清理它自己创建一个文件并立即“删除”它,同时保持它打开。这样,临时文件可以继续使用,直到程序完成它,此时它会自动“消失”。

顺便说一下,如果移动它们,期望能够关闭并重新打开临时文件 的程序将会混淆。您可以通过使用硬链接进行“复制”来避免这种情况。

ln /tmp/Fl* .

此命令将为Flash引用的inode创建临时文件到当前目录的副本。它实际上并不复制文件的内容,只创建对磁盘上相同数据的第二个引用。这样当Flash关闭时,你仍然有一个“指针”指向它发布的数据。

我有一段时间没有研究过这个主题,我可能会弄错一些术语,所以如果你想进一步了解,请阅读inode以及hard links如何工作。

从维基百科链接:

  

取消链接的过程会将名称与卷上的数据分离,而不会破坏关联的数据。只要至少有一个指向它的链接仍然存在,数据仍然可以访问。删除最后一个链接后,该空间将被视为空闲。

答案 2 :(得分:0)

我假设您正在描述* nix系统上的行为?

他们可能正在使用thisinotifythis .NET event等方式观看文件系统。如果一个现代版本的Windows允许你移动临时的.flv文件,我会感到惊讶,如果flash没有因此而退出,那就太疯狂了。

但是,是的,我的猜测是,在您的操作系统上,当文件移动时,Flash播放器不会被忽视,因为它接收到新路径的句柄,以防它需要再次从文件中读取。如果您在播放长(例如,~1小时)视频时故意更改权限或损坏或删除.flv会发生什么?