2009-02-05 93 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。