我需要构建一些开始将H.264编码视频提供给文件中途的Flash播放器(以支持跳转到尚未缓冲的视频中的某个点)。
目前,视频采用FLV容器格式,但转码是一种选择。我设法重写了给定字节偏移量的文件头和元数据信息。这适用于较旧的视频,但不适用于H.264编码的文件。我怀疑这是因为文件中的视频标签也必须改变,这是不可行的(它需要太多的处理能力)。
这样做的“正确”方法是什么?
答案 0 :(得分:3)
@yoavf - 我认为OP对FLV文件中流媒体点播h.264的服务器端方面感兴趣。我认为重用现有球员对他来说会很好。或许这是我自己的需求出来? <:S
从yoavf的第二个链接,还有另一个指向Tinic Uro What just happened to video on the web? 的链接。相关引用:
是否可以将H.264流放入传统的FLV文件结构中?它会,但我们强烈建议每个人都接受新的标准文件格式。当流式传输H.264时,FLV结构存在功能限制,如果不重新设计文件格式,我们无法克服这些限制。这是我们摆脱传统FLV文件结构的一个原因。具体来说,使用FLV流来处理序列头和enders是很棘手的。
所以,似乎人们可以修补ffmpeg编码(如果这就是你获取FLV的方式,就像我一样),或者可以进入新的格式。 Hmmmm ....
答案 1 :(得分:2)
一旦下载了MOOV原子,Flash播放器才能开始播放H.264视频。现有的伪流式提供程序只为您提供FLV标头 - 文件的前13个字节或硬编码的 - 然后从给定的偏移量提供文件。如果你想制作一个H.264伪流,你需要让它输出FLV头,然后是MOOV原子,然后从给定的偏移量提供文件的其余部分。如果你不使用FLV容器,你将不需要FLV标头,但你仍然需要MOOV原子。
不幸的是,我认为你不能使用磁盘上文件中的MOOV原子;它包含的信息不适合您所服务的文件片段。因此,您必须解析现有的atom并生成一个适合于该文件的服务部分的原子。
如果H.264文件中存在复杂的结构,伪流可能会更复杂。如果解析文件不可行,我恐怕你可能无法伪流媒体。
答案 2 :(得分:0)
1)使用lighttpd和它的mp4流媒体插件,即可动态生成所需的流式传输容器
2)创建一个关键帧FLV并使用伪流式脚本(如XMOOV)来流式传输文件。
如果你需要mp4 / aac,你可以将它们放在FLV容器内,这对adobe的懊恼很重要,但它确实有效。