hls.jsの推奨設定

Chrome/FirefoxブラウザでHLSを再生するにはhls.jsというJavaScriptライブラリ、またはそれを組み込んだJavaScript動画プレイヤーライブラリを使用することが一般的です。 hls.jsには、さまざまなオプション設定があります。詳しくはこちらをご参照ください。

通信エラーによるタイムアウトのデフォルト値がライブ配信用としては長いため、下記のようにセグメント長+1秒にすることでパケットロスを早期に検出し、リトライを繰り返すことができます。

セグメント長とは、動画ファイルの分割間隔のことです。CreateChannel/CreateMultistreamChannelWithHLS APIのリクエストに含まれているdurationSecondsの値で指定しています。

下記に、セグメント長を2秒とした場合の設定例を紹介します。2秒+1=3秒でタイムアウトが推奨となりますので、Timeout6項目を3000(ミリ秒)としています。 セグメント長を3秒とした場合、3秒+1=4秒でタイムアウトが推奨となりますので、下記の3000(ミリ秒)の6項目をすべて4000(ミリ秒)に変えてください。

セグメント長が2秒の場合の例link

var config = {
  manifestLoadingTimeOut: 3000, // マスターマニフェストのタイムアウト(ミリ秒)
  manifestLoadingMaxRetry: 10, // マスターマニフェストを何回リトライするか
  manifestLoadingMaxRetryTimeout: 3000, // タイムアウトしたあとリトライするまでの最大待機時間(ミリ秒)
  levelLoadingTimeOut: 3000, // レベルマニフェストのタイムアウト(ミリ秒)
  levelLoadingMaxRetry: 10, // レベルマニフェストを何回リトライするか
  levelLoadingMaxRetryTimeout: 3000, // タイムアウトしたあとリトライするまでの最大待機時間(ミリ秒)
  fragLoadingTimeOut: 3000, // 動画データのタイムアウト(ミリ秒)
  fragLoadingMaxRetry: 10, // 動画データを何回リトライするか
  fragLoadingMaxRetryTimeout: 3000, // 動画データがタイムアウトしたあとリトライするまでの最大待機時間(ミリ秒)
  liveBackBufferLength: 0, // 再生し終わったデータを保持する長さ(秒)
};
var hls = new Hls(config);