タイムシフトライブストリーミングの原理
タイムシフトライブストリーミングは、従来の HTTP ライブストリーミング (HLS) に基づいています。 ライブストリーミングでは、取り込みストリームは .ts ファイルにセグメント化され、HLS プロトコルを介して再生ユーザーに配信されます。 ユーザーがリクエストする .m3u8 プレイリストファイルには、常に更新される .ts ファイルアドレスが含まれています。 従来の HLS では、.ts ファイルのアドレスと対応する .ts ファイルは永続的に保存されないため、現在時刻より前のライブストリーミング動画のコンテンツにさかのぼることはできません。 対照的に、タイムシフト機能が有効な HLS では、.ts ファイルアドレスと対応する .ts ファイル は、データベースに永続的に保存され、OSS バケット単体には最大 15 日間保存され、 これにより、動画コンテンツを現在の時刻からライブストリーミングの開始時刻までさかのぼることができます。
タイムシフト設定
タイムシフト機能がオープンベータで利用可能になりました。 この機能を試すにはチケットを起票し、サポートセンターにお問い合わせください。
アイテム | 説明 |
会社名 | なし |
ストリーミングドメイン | 指定されたストリーミングドメインのすべてのライブストリームは、タイムシフトに対応しています。 |
タイムシフトコンテンツの保存期間 | タイムシフトコンテンツはデフォルトで 7 日間保存されます。 |
タイムシフトのリクエストパラメーター
タイムシフトライブストリーミングを実装するには、従来の HLS URL に http://domain/app/stream.m3u8
などのタイムシフトパラメーターを追加する必要があります。
必須パラメーター
lhs_start=1
時間関連パラメーター
キーの形式は lhs_{type}_{format}_{unit}_{zone} です。
-
type: 時刻のタイプ。 設定可能な値は次のとおりです。
-
start: ライブストリーミングの開始時間。
-
end: ライブストリーミングの終了時間。
-
vodend: ビデオオンデマンド (VOD) の終了時間。 この変数を vodend に設定すると、動画は VOD モードで再生されます。 この場合、指定された期間内のすべての .ts ファイルが、endlist タグを含めて一度に返されます。
-
offset: 前方オフセットタイム。
-
-
format: 時刻の形式。 設定可能な値は次のとおりです。
-
unix: UNIX タイムスタンプ。
-
human: 20170809230130 など、人間が解読可能な形式。
-
-
unit: 時間の単位。 設定可能な値は次のとおりです。
-
s: 秒
-
ms: ミリ秒
-
us: マイクロ秒
-
ns: ナノ秒
-
-
zone: タイムゾーン。
- 有効値: 0 から 9 の任意の整数。 値は、指定されたタイムゾーンの標準時間を取得するために UTC に追加する時間数を示します。 値が 0 の場合は UTC 時間を示します。 値が 8 の場合は、中国標準時を示します。
例
-
lhs_start_unix_s_0=1502280113
-
lhs_offset_unix_ms_8=1502308959375
-
lhs_end_human_s_8=20170809200010
リクエストの例
http://xxx.com/live/channel1.m3u8?lhs_start=1&lhs_start_human_s_8=20171024160220&lhs_end_human_s_8=20171024160420"
タイムラインクエリ
指定したストリームのタイムラインに沿った過去の期間内でタイムシフトデータが含まれていた期間を照会できます。
-
URL:
http://{$domain}/openapi/timeline/query
-
メソッド: GET
-
パラメーター:
-
app (必須): ライブストリーミングアプリケーションの名前。
-
stream (必須): ライブストリームの名前。
-
format (必須): 照会するタイムシフトデータの形式。.ts または .flv を指定します。
-
lhs_start_unix_s_0 (必須): 1970 年 1 月 1 日木曜日 00:00:00 から秒数で測定される開始タイムスタンプ。
-
lhs_end_unix_s_0 (必須): 1970 年 1 月 1 日木曜日 00:00:00 から秒数で測定される終了タイムスタンプ。
説明 CDN 認証を有効にしている場合は、それに応じて認証パラメーターを追加する必要があります。
-
-
レスポンス (JSON形式):
-
current: プレーヤーの時刻を揃えるために使用する現在のシステム時刻。
-
timeline: 配列。 配列の各要素はマップと呼ばれ、有効なタイムシフト期間を示します。 各マップには次のフィールドが含まれます。
-
timeline[i].start: 1970 年 1 月 1 日木曜日 00:00:00 から秒数で測定される、有効な .ts ファイルの開始タイムスタンプ。
-
timeline[i].end : 1970 年 1 月 1 日木曜日 00:00:00 から秒数で測定される、有効な .ts ファイルの終了タイムスタンプ。
-
-
例
http://$host/openapi/timeline/query? app=bbb&domain=aaaa&format=ts&lhs_end_unix_s_0=1513334270&lhs_start_unix_s_0=1513334255&stream=cc
レスポンス
{"retCode":0,"description":"success","content":{"current":1514269063,"timeline":[{"start":1514269054,"end":1514269058},{"start":1514269058,"end":1514269062}]}}'