B站的進度條經常不可拉動是一個難以解決的技術難題嗎?

一拉就重置,就我感覺好像大半視頻都有這個問題。


我補充解釋一下 @舒自均 答案中的幾個名詞,順帶糾正一下

I幀(Independent Frame),獨立編碼的幀。I幀相當於記錄一張jpg;一般常見於一個場景開頭。後續的幀就需要依賴I幀。

P幀(Predictive Frame),需要依賴其他幀來編碼的類型。P幀需要參照在它之前的I幀或者其他的P幀,因為它只記錄差別,所以對於那種前後差別很小甚至沒有的幀,使用P幀編碼能極大地減少體積。

MPEG2之後,引入了第三種幀:

B幀(Bi-directional Frame),雙向預測幀。B幀跟P幀類似,都是需要參照別的幀,區別在於B幀可以(但不必要)參照它後面的幀,B幀的記錄和預測方式也做了調整,使得B幀的預測方式更靈活,對付高度靜態規律的場景可以更有效的降低體積。

I幀中,有一類特殊的I幀,叫做IDR幀。 I和IDR幀都是使用幀內預測的。 IDR幀的作用是立刻刷新,使錯誤不致傳播,從IDR幀開始,重新算一個新的序列開始編碼。而I幀不具有隨機訪問的能力這個功能是由IDR承擔。 IDR會導致DPB(DecodedPictureBuffer 參考幀列表——這是關鍵所在)清空,而I不會。IDR圖像一定是I圖像,但I圖像不一定是IDR圖像。一個序列中可以有很多的I圖像,I圖像之後的圖像可以引用I圖像之間的圖像做運動參考。一個序列中可以有很多的I圖像,I圖像之後的圖象可以引用I圖像之間的圖像做運動參考。

source: I幀 B幀 p幀 IDR幀的區別

全是P和B的視頻是不會存在的,

進度條的快速索引定位的是IDR幀,但是如果IDR幀太少的話……


進度條快速定位只能定位在I幀上,如果視頻壓制參數比較奇葩全是P和B,當然是拖不動的,這不關BILIBILI和Flash什麼事.


只有I幀出現的位置才能快速定位。

這種事情我們UP主憑什麼要懂,我只是傳個視頻而已,你家bilibili不會二次轉碼嗎?話說我傳優酷傳a站的視頻怎麼沒問題?


等待神回復


因為B站太窮。 ╭(°A°`)╮


推薦閱讀:

如何用代碼在2D中用骨骼和點陣圖實現類似3D skinned mesh(蒙皮動畫)的動畫效果?
學校最近有個flash3d培訓,但是個人又聽說html5是潮流,我想問的是是否現在應該去參加培訓,假如學會了actionscript,那學習html5會容易上手嗎?
是什麼導致了flash的沒落?
Adobe Flash Air適合開發移動應用嗎?

TAG:前端開發 | 視頻網站 | AdobeFlash | 嗶哩嗶哩 | Flash開發 |