2012-07-04 155 views
10

我有一個1080p視頻,顯示在我的頁面上的HTML5 <video>標記中。HTML5視頻:檢測帶寬

有一個簡單的(ISH)的檢測帶寬,所以我可以切換出視頻較低質量版本,如果用戶的連接速度太慢串流視頻JavaScript方法?與YouTube「自動」視頻大小選擇器背後的邏輯類似。

+0

這有點舊,但你可能想看看速度測試[api](http://speedof.me/api)。 – advncd

回答

0

我討厭那個功能!這通常是錯誤的,如果我想等待2個小時來加載我的dang視頻,那就等於我了!沒有可靠的方法來準確測量,而無需向用戶發送大型虛擬文件並測量到達他的時間。

你應該依靠用戶輸入(並記住它是正確的!也不像YouTube!)。

總之,不走的YouTube作爲一個例子

+0

但是,如果在播放過程中連接速度變慢,您肯定會希望視頻暫時自動切換到較低的帶寬流,而不是讓播放中斷。沒有? –

+0

@DanHerbert:如果開關通常是阻塞的(通常情況下是視頻質量急劇下降,通常會導致任何先前的緩衝區進入地獄,這意味着您無法正常倒帶),則不需要。不,如果用戶想要這樣做,他會自己做,相信我。只需使質量更改選項可見且清晰即可。並非所有東西都必須是自動的 –

3

谷歌瀏覽器至少有一個視頻元素的這些屬性:

webkitVideoDecodedByteCount: 0 
webkitAudioDecodedByteCount: 0 

這些應該足以確定客戶端如何能夠快速解碼視頻。當視頻播放時,您將跟蹤這些字節的增量數量,從而爲客戶端處理視頻提供字節數/秒。

+2

現在是2015年的這種方法或其他任何更新?謝謝 –

0

有有償服務,可能會給你什麼樣的帶寬對方,喜歡netspeed的指示。

的數據精度可能不夠你,但我還沒有測試它爲自己的機會。

+0

我研究過netspeed ...這是一個指標,但它真的很粗糙,它只是說「有線/ DSL」,「撥號」,「移動」等。 – schieferstapel

+0

是的,功能檢測和緩衝速度監控將是最好的選擇:) –

3

根據您使用的播放器和編碼平臺,您可能可以使用HLS編碼來處理視頻。 HLS代表HTTP Live Streaming,這是蘋果公司開發的用於主要解決這個問題的協議(等等)。

HLS基本上傷了你的視頻文件分成多個小文件,使他們能夠「僞」用一個簡單的Web服務器流式傳輸。藉助HLS,您還可以以多種分辨率進行編碼,並且播放器可能會切換到更低或更高的帶寬。

唯一的缺點是大多數玩家使用Flash播放HLS編碼的內容。檢查它在這裏的行動:http://www.flashls.org/latest/examples/chromeless/

下面是的Flowplayer HLS演示: http://demos.flowplayer.org/basics/hls.html

這裏是VideoJS插件: https://github.com/videojs/videojs-contrib-hls

來編碼HLS,您可以使用的ffmpeg免費和上傳文件到您的服務器: https://www.ffmpeg.org/ffmpeg-formats.html#hls-1

或者,您可以像使用AWS轉碼器或Brightcove公司 基於雲的解決方案

+2

'videojs-contrib-hls':「*該項目通過在支持Media Source Extensions的瀏覽器上爲HLS提供polyfill來解決這種情況,或者失敗,支持Flash。您可以部署一個HLS流,針對常規HTML5視頻API編碼,並在所有大型網絡設備類別中創建快速,高質量的視頻體驗。*「令人驚歎!正是我需要的!非常感謝! –

+0

對於玩家不可知的HLS客戶端,請嘗試由DailyMotion引入的hls.js。 videojs-contrib-hls綁定到video.js。 – Fawntasia

2

對於更多最新的答案:MPEG-DASH是在更換HLS的過程。 HLS主要用於iOS領域。大多數桌面瀏覽器不打算支持它,而DASH是他們正在朝着的標準。 (但是,有很多玩家可以使用HLS和hls.js等HTML5視頻播放器)。 DASH播放器包括Bitmovin,Google Shaka等等。目前許多人都編碼HLS和DASH。 HLS也支持分段的mp4。請注意,您需要在服務器端正確編碼您的視頻。其他資源:http://www.streamingmedia.com/Articles/Articles/Editorial/Featured-Articles/The-State-of-MPEG-DASH-2016-110099.aspx

0

到現在爲止,您必須在MPEG-DASH和HLS中提供您的內容,才能爲所有平臺提供廣泛的支持。 HLS現在支持分段的MP4,您可以使用one single output format,它可以在每臺設備上播放。此外,您需要50% less storage,並且由於fMP4的存儲效率比目前用於HLS的MPEG-TS更高,因此您可以節省更多的存儲空間和帶寬。

Bitmovin提供example如何創建HLS fMP4內容以及如何播放它。