Run

Run は、ある Broadcast に属し、その配信に対する連続した(具体的な)メディアストリームを表現したエンティティです。 アプリが Castify プラットフォームに実際にメディアストリームを配信したタイミングで生成されます。

BroadcastRun は 1:n の関係にあります。例えば、アプリによるメディアストリームの配信が停止→再開を繰り返すたびに新たな RunBroadcast に追加されます。

(参考) Run の用途

Run には以下のような情報が含まれます。

  • メディアストリームの受信 開始 時刻

  • メディアストリームの受信 停止 時刻

この情報から、以下に説明するような用途に利用することができます。

ある配信が実際にライブ配信中(= On Air)かどうかを判断する

ある Broadcast に属する Run のうち、最も新しく、かつメディアストリームの受信が途切れずに続いているものは↑の受信停止時刻が含まれていません。そのような Runアクティブな状態 にある、と表現されます。

アプリは、この性質を利用して、特定の Broadcast が実際にライブ配信中であるかどうかを判断することができます。

タイムシフト視聴機能のユーザー体験を向上させる

Castify の 視聴 URL は、適切な相対時刻をクエリーパラメーターに付与することで、配信されたメディアストリームを任意の箇所から再生する(= シーク)ことができます。

ですが、適切な時間が設定されなかった場合、例えば配信が一時的に停止していたときの時間が設定されてしまうと、配信が復旧された時間まで空のメディアが再生されてしまうことになります。ユーザー体験を重視するのであれば

  • メディアストリームが流れていない時間はスキップして再生する

  • メディアストリームが流れていない時間はユーザーが把握できるようになっている

    • 例えばシークバー上の該当位置を暗転させる、等

ような対応をすることで、ユーザー体験が損なわれることを回避する必要があります。

上記のような機能、特に後者のようなものは Run を列挙しメディアストリームの受信開始/停止時刻を取り計らうことで容易に実現することができます。