2017-02-15 22 views

回答

1

由於網絡條件在甚至中等長度的視頻的持續時間內可能會發生相當大的變化,因此很難確保在開始之前通過嘗試下載足夠的緩衝區來緩衝視頻。

保證它的唯一方法就是下載幾乎所有的視頻,即使如此,如果網絡變得非常緩慢,您可能仍會在最後緩衝。

嘗試獲得高質量體驗的常用方法是使用自適應比特率蒸汽。

要使用此功能,您需要在服務器上創建視頻的多個不同比特率版本,並按時間將每個視頻分成多個區塊。 10秒大塊。

然後,客戶端通過塊請求視頻塊,並進行一些正常緩衝,並根據網絡條件選擇要求下一個塊的比特率。

所以如果網絡好,用戶將獲得高分辨率的視頻體驗,如果它不好,分辨率將下降。只要有很好的比特率版本,就可以避免緩衝,除非網絡非常糟糕。

您可以在YouTube上看到YouTube,Netflix等使用的這種技術 - 如果您查看可以隨身攜帶的設置並強制它選擇一種特定的比特率大小並查看效果(如果您選擇高一個你可能會看到你描述的緩衝問題,除非你在一個非常好的互聯網連接上)。

該方法還允許通過從較低帶寬開始快速啓動視頻,然後再加速到較高視頻,再一次視頻被緩衝。

您還可以看到的比特率的步驟一個漂亮的圖形視圖,並通過右鍵單擊視頻,然後選擇「詳細統計」在YouTube上的緩衝區 - 它提供了這樣一個觀點:

enter image description here

如果您真的想在開始播放之前播放緩衝區的大小,那麼您可能需要修改播放器本身或創建自己的播放器。

在網絡播放器領域,HTML5播放器現在通常使用媒體源擴展(MSE),如果您願意,它可以讓您控制緩衝區。 MSE本質上是一種將緩衝區與HTML5視頻src關聯的機制,而不是通常的文件或URL。然後,您可以編寫自己想要的JavaScript來填充緩衝區。一個很好的介紹是在這裏(跳到下到MSE部分):

+0

你有任何想法如何,這些傢伙[fiveminute.gs(http://www.fiveminutes.gs/)做過了嗎?,他們預先加載了一部分視頻作爲加載屏幕,所以不存在緩衝問題。 –

+0

加載屏幕只是一個圖像 - 當您進入該網站時,視頻開始。您可以通過觀看瀏覽器工具的網絡標籤並查看何時請求mp4文件來查看。如果你有足夠糟糕的連接,它仍然會失速(我可以看到這一點)。他們在Vimeo上託管它,並使用Vimeo CDN,這將爲他們提供非常好的用戶體驗。 – Mick

+0

我注意到他們正在加載一個巨大的文件,而他們顯示加載屏幕[Here](http://www.fiveminutes.gs/scripts/db.js),這是什麼?看起來像base64格式的mp3文件。 –