web playerでもバッファを持ちたい

videojs もいいのだけど、できたらクライアントで受信している際にもバッファを持ちたい。

エンコーダ⇒サーバ がよくてもクライアントの回線のパケットがドロップしたら、そりゃ映像が途切れる原因になる。この時にクライアントにもバッファを持っていたら役に立つはず。

で、色々なweb playerを試してみようかと思ったけど

結論
HTML5系プレーヤにはHTML5の仕様がバッファ調整できないようになっており、プレーヤでの調整は不可。どの程度バッファするかは、ブラウザによる。
https://github.com/happyworm/jPlayer/issues/23

videojs で試してみた。再生しながらLANケーブルを抜くとどうなるか、
1.chrome すぐに切れる
2.edge すぐに切れる
3.Internet Explorer 数秒は再生され続け、すぐにLAN接続し直すと映像を流し続ける事ができる。

間に1つHUBを挟むとどうなるか。HUBとパソコンの間ではリンクが張られ続けている状況で上位に異常が起きた時。

4.chrome 5秒で切れる タイミングによって大きくずれる感じがする1秒で切れる事も
5.edge 2秒で切れる だいたい2秒で切れる
3.Internet Explorer 5秒で切れる タイミングによって大きくずれる感じがする1秒で切れる事も

という事で、LANのリンク状態をブラウザからも見てるのかなと思う結果になった。また、デフォルトでも多少のバッファ持ってるんだという発見になった。

http://www.leanbackplayer.com/player_download.html?type=player
LeanBack Player
無料でダウンロード可能

HTML5 タグをサポート
広告なしで利用可能
CSSを利用したスキン
ミュート機能付き
ボリュームコントリール付き
フルウィンドウ可能
Flash対応
オープンソース

ま、ドキュメントを見るとバッファを調整できそうだけど、sizeの事まで明記していない。できるかどうかわからないけど、とりあえずやっていたら分かるはず。(結構楽天的な私)

LeanBack Playerは、rar形式で圧縮されていて、見慣れないなぁ。回答は

sudo apt-get install unrar

でunrarを入れたらできる。

unrar e leanback_player_gpl3_v0.8.0.93.rar
Extracting leanbackPlayer.es.js OK
Extracting leanbackPlayer.ru.js OK
Extracting leanbackPlayer.en.js OK
Extracting leanbackPlayer.de.js OK
Extracting leanbackPlayer.pack.js OK
Extracting leanbackPlayer.default.css OK
Extracting leanbackPlayer.monochrome.css OK
Extracting leanbackPlayer.vim.css OK
Extracting leanbackPlayer.monochrome.fixed.css OK
Extracting leanbackPlayer.monoblue.css OK
Extracting LICENSE OK
Extracting leanbackPlayer.nl.js OK
Extracting RELEASE-NOTES OK
Extracting leanbackPlayer.fr.js OK
Extracting leanbackPlayer.js OK

こんな感じで展開される。
いざマニュアル見ると、RTMPの記載がないぞコラァ。やっぱり、物事は進める前に調べた方がいいなぁ。

他にも無料のweb playerがあるのだけど、
http://jplayer.org/latest/developer-guide/
RTMPが使えても、buffer sizeの調整などは記載がない。

https://github.com/happyworm/jPlayer/issues/23
The HTML5 has no control whatsoever over buffer time. It is not part of the HTML5 spec.

この記載からいくと、HTML5系のプレーヤには、HTML5自信にbuffer time をコントロールする事が出来ないため、実装していないようだ。

As it is, each browser seems to use their own set of rules for buffering.

各ブラウザの仕様によるらしい。