2015-06-11 38 views
1

在HTTP Live Streaming中,文件被分成固定大小的塊進行流式傳輸。這背後的理由是什麼?這比單個文件和使用偏移量檢索各種塊更好。爲什麼要將文件分段爲HTTP流的塊?

我現在的粗略想法。

將文件拆分爲多個塊可減少流式傳輸過程中的文件查找時間。

從我理解的文件存儲爲硬盤上的永久鏈接列表。對於現代文件系統(例如NTFS,ext3)甚至是這樣嗎?或者他們是否使用更復雜的數據結構(如平衡樹或散列映射)來索引文件塊?在文件中尋找(使用seekp,tellp等)的運行時間複雜度是多少?

+0

此前一篇文章可能會幫助你: http://stackoverflow.com/questions/2613734/maximum-packet-size-for-a-tcp-connection –

回答

0

HDD不是一個考慮因素。它的完成旨在簡化網絡/ CDN層以及客戶端邏輯。 HTTP是一個請求/響應協議。它不適合長流。它也不復用。要使用多個套接字,您必須提出不同的請求。要求客戶端意識到蒼蠅結構,並能夠將搜索欄轉換爲字節偏移量非常複雜。特別是對於可變比特率媒體。但是如果你知道一個視頻有100個片段(文件),並且你尋求50%,那麼你很容易知道你需要什麼文件。最後,緩存層應該如何處理範圍請求?從源文件下載整個文件,或者根據需要請求數據並在本地「拼接」文件?無論哪種方式,緩存層都需要這種邏輯。額外的邏輯以每秒更少的請求爲代價。