2009-02-05 54 views
1

我刚刚编写了一个基于Web的FLV文件下载实用程序。当我尝试下载flv文件时,浏览器不显示进度条,因为我没有看到下载时间。我读过的地方发生这种情况,如果您尝试下载的flv文件没有与其关联的元标记。所以我通过Perl模块FLV::Info运行我的flv文件,我看到元标记头存在。FLV文件下载和浏览器进度条

下面是meta标签我看到的FLV文件的一个例子:

File name   0.360730744040669.flv 
File size   167 bytes 
Meta    1 event 
    canSeekToEnd  1 
    filesize   167 
    metadatacreator FLV::File v0.22 
    metadatadate  Wed Feb 4 17:00:07 2009 

任何人任何想法?

回答

3

很可能您的Web服务器没有正确设置内容长度标题,或类似的东西。

你的文件真的只有167字节吗?这似乎有点小。

1

由于jrockway说,它可能是Content-Length头 - 我不知道是否Firefox的默认提供方便访问,但Live HTTP Headers插件,您可以访问的,如果你不使用Firefox,你可以使用Wireshark取而代之的是(但它要重得多,可能需要花费一些时间才能在剩余的网络流量中找到标题)。一旦你可以看到这个头文件是否被设置(如果它是,它是否是正确的值),你会知道更多关于如何进行。

从其他网站下载flv文件时,您可以验证进度条,一旦发生这种情况,您可以开始查看示例文件与正确行为的区别。

如果文件的内容(这是FLV :: Info获取其详细信息的地方)在中途下载中用于计算进度,我会感到有些惊讶。

0

你读到的有关元数据的内容很可能与Flash播放视频有关。 Flash需要元数据来知道电影的时间。这就是元数据通常放置在文件开头的原因。编码H264视频时,元数据通过ffmpeg等工具放置在文件末尾,为了使“流媒体”正常工作,您需要将其移至开头。

但是,这应该对浏览器中的进度条没有任何影响,这很可能是因为,例如,youtube不会在标头中设置Content-Length。