代码之家  ›  专栏  ›  技术社区  ›  EricR

Flash内容下载

  •  1
  • EricR  · 技术社区  · 15 年前

    我一直在想一些事情,比如youtube(pandora做mp4s)

    • 通过flash播放器播放他们的音乐

    这样用户就可以将flv从该文件夹中移出,以便以后回放。

    然而

    更重要的是,如果玩家在没有flv的情况下玩得很开心,为什么首先要把flv下载给用户呢?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Steve    15 年前

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

    它工作得非常好,有时程序甚至会使用一个技巧,通过创建一个文件并立即“删除”它,同时保持它的打开状态来自动清理它。这样,临时文件就可以继续使用,直到程序处理完它,这时它就会自动“消失”。

    顺便说一下,那些希望能够关闭并重新打开临时文件的程序 如果你移动它们,就会感到困惑。您可以通过使用硬链接制作“副本”来避免这种情况。

    ln /tmp/Fl* .
    

    内容 只创建对磁盘上相同数据的第二个引用。这样,当Flash关闭时,仍然有一个指向它发布的数据的“指针”。

    我已经有一段时间没有研究过这个话题了,我可能弄错了一些术语,所以我建议如果你想进一步理解,请阅读inodes和how hard links 工作。

    从维基百科链接:

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

        2
  •  2
  •   fenomas    15 年前

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

    不过,对于视频来说,可能有一些警告——例如,如果你在视频中向前或向后搜索,我无法保证如果删除了缓存版本,视频是否会从内存中播放。。。我可以想象,在某些情况下,Flash无法将整个电影保存在内存中。但一般情况下,答案应该如这里所述。

        3
  •  0
  •   Robert Karl    15 年前

    我猜你在描述尼克斯系统的行为?

    this ,或 inotify ,或 this .NET event . 如果现代版本的Windows允许您移动临时的.flv文件,我会感到惊讶,如果flash没有因此而关闭,那就太疯狂了。

    但是,我的猜测是,在你的操作系统上,flashplayer在文件移动时不会出错,因为它接收到一个新路径的句柄,以防需要再次读取文件。如果在播放一段长视频(比如一小时)时故意更改权限或损坏或删除.flv,会发生什么情况?