JWPlayer Flash播放器分段載入視頻以節省帶寬的方法分享

近期因爲一個項目的須要,對Flash版本的播放器JWPlayer作了一些改進以支持一些功能,這裏把中間用到的一些思路和作法記錄下。服務器

首先一個功能是:客戶的不少flv視頻都是完整的一個大視頻,但願JWPlayer能夠對flv視頻文件播放時不所有載入,而是先只載入前面5分鐘,等播放到4分鐘左右時再去載入後面的5分鐘視頻。這樣的好處顯而易見就是能夠節省不少服務器流量,避免用戶只看2-3分鐘暫停在那,也把整個視頻給分發下去。 其實該功能不少視頻網站,好比優酷他們的作法是將視頻真的切分爲每7分鐘一段,這樣的缺點是:文件被切分紅碎片在服務器存放,不利於視頻文件的管理。
爲了實現上述功能,在JWPlayer中進行以下改造:ide

1) 增長一個NetStream,用於載入下一段數據;網站

2)服務器須要支持能夠經過start和end參數,來索取任意一段視頻。好比http://www.a.com/1.flv?start=0&end=1024999這種,用於獲取指定關鍵幀區間的視頻(好比5分鐘的)。視頻

3)而後播放時,首先經過獲取到的metadata,找出第一個5分鐘的視頻的結尾關鍵幀位置,而後構造一個NetStream去播放前面5分鐘,因爲服務器就只給5分鐘數據,所以該stream不會不停緩衝服務器數據。stream

4)等播放到4:20秒左右時,啓動一個新的NetStream載入下一段5分鐘視頻,但此時將video層放在正在播放的視頻的下面(不可見)。meta

5)等第一段視頻播放完成後,將第二段的NetStream接着播放,並切換兩個video的位置,將第二段放到舞臺的前面。方法

6)等第二段播放快完成時,用第一段的NetStream預載入下一段視頻,不停重複上述邏輯直到視頻結束。數據

通過上述處理後,能夠很是可控的以分段的效果播放單段視頻,既節省了服務器流量,又不須要對視頻真正進行切分。關於JWPlayer Flash播放器分段載入視頻以節省帶寬的方法分享,但願對你們有幫助!項目

相關文章
相關標籤/搜索