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

如何进行Flash伪流?

  •  7
  • Sietse  · 技术社区  · 16 年前

    我需要建立一些东西,开始服务一个H.264编码的视频到一个Flash播放器一半的文件(以支持跳到视频中的一个点尚未缓冲)。

    目前,视频是FLV容器格式,但转码是一个选项。我设法为给定的字节偏移量重新写入文件头和元数据信息。这适用于较旧的视频,但不适用于H.264编码的文件。我怀疑这是因为文件中的视频标签也必须修改,这是不可行的(它需要太多的处理能力)。

    “正确”的方法是什么?

    3 回复  |  直到 13 年前
        1
  •  2
  •   Simon    16 年前

    Flash播放器只有在下载了Moov Atom后才能开始播放H.264视频。现有的伪流提供程序只提供一个flv头文件(文件的前13个字节或硬编码头文件),然后从给定的偏移量为文件提供服务。如果要制作H.264伪拖缆,需要让它输出flv头,然后输出moov原子,然后从给定的偏移量为文件的其余部分提供服务。如果不使用flv容器,就不需要flv头,但仍然需要moov原子。

    不幸的是,我认为您不能从磁盘上的文件中使用moov原子;它包含的信息对于您提供的文件片段来说是不正确的。因此,您必须解析现有的Atom并生成一个您自己的Atom,该Atom适合于文件的服务部分。

    如果H.264文件中存在复杂的结构,那么伪流可能会更复杂。如果解析文件不可行,恐怕您无法对媒体进行伪流。

        2
  •  3
  •   Stu Thompson Helter Scelter    16 年前

    @我认为OP对flv文件中的按需H.264流的服务器端方面很感兴趣。我认为重用现有的玩家对他来说是件好事。或者这是我自己的需求?lt;s

    从Yoavf的第二个链接,有另一个链接到Tinic Uro's What just happened to video on the web? . 相关报价:

    是否可以将H.264流放入传统的FLV文件结构中?当然,但我们强烈建议每个人都采用新的标准文件格式。流式处理H.264时,FLV结构存在一些功能限制,如果不重新设计文件格式,就无法克服这些限制。这就是我们要远离传统的FLV文件结构的原因之一。特别是处理序列头和结束器对于FLV流是很棘手的。

    因此,似乎可以对ffmpeg编码进行修补(如果这是您获得flv的方式,就像我一样),或者可以进入新的格式。嗯…

        3
  •  0
  •   Todd Kennedy    16 年前

    你可以做两件事:

    1)使用lighttpd,它的mp4流插件将在运行时生成所需的流容器。

    2)创建一个关键帧的flv,并使用psuedo流脚本(如xmoov)来传输文件。

    如果你需要MP4/AAC,你可以把它们放在FLV容器里,这让Adobe很懊恼,但它是有效的。