すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Live:タイムシフト

最終更新日:Nov 28, 2025

タイムシフト機能を使用すると、ライブストリームを開始時刻から現在時刻まで再生できます。このトピックでは、タイムシフトの仕組みとリクエストの送信方法について説明します。

利用シーン

タイムシフト機能により、視聴者は再生中にライブストリームを巻き戻すことができます。例えば、スポーツのライブブロードキャスト中に、視聴者はタイムシフトを使用して、映画やテレビ番組を視聴するようにイベントの一部を再視聴できます。

仕組み

ApsaraVideo Live のストリームは、Transport Stream (TS) セグメントに分割され、HTTP Live Streaming (HLS) プロトコルを使用して視聴者に配信されます。視聴者からの M3U8 プレイリストのリクエストには、常に更新される TS セグメントアドレスのリストが含まれています。標準の HLS ライブストリーミングでは、TS セグメントアドレスとそれに対応する TS ファイルは保存されません。これは、ライブストリームを巻き戻すことができないことを意味します。タイムシフト機能を有効にすると、TS セグメントの情報とファイルが保存されます。これにより、ライブストリームの開始から現在時刻までビデオを巻き戻すことができます。

制限事項

タイムシフトは、最大 100,000 人の同時視聴者をサポートします。より多くの視聴者をサポートするには、チケットを送信してください。チケットの送信方法の詳細については、「お問い合わせ」をご参照ください。

機能の利用

説明
  • タイムシフト機能を使用すると、タイムシフト料金が発生します。書き込まれたタイムシフトデータの量とタイムシフト再生の仕様に基づいて課金されます。課金ルールの詳細については、「タイムシフト料金」をご参照ください。

  • タイムシフト機能をサポートするリージョンの詳細については、「サポートリージョン」をご参照ください。

タイムシフトを使用するには、次の 2 つのステップを完了する必要があります。

  1. タイムシフト機能の設定

    説明

    ライブストリームのコンテンツを保存し、タイムシフトを有効にするには、この機能を設定する必要があります。

  2. クライアントからのタイムシフト機能利用リクエストの送信

タイムシフト機能の設定

コンソールでのタイムシフト設定

  1. ApsaraVideo Live コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、機能管理 > タイムシフト を選択し、タイムシフト ページを開きます。

  3. 設定するストリーミングドメインを選択します。

  4. 追加 ボタンをクリックします。

  5. タイムシフトを設定します。

    直播时移

    次の表に、タイムシフト設定のパラメーターを説明します。

    パラメーター

    説明

    アプリケーション名

    アプリケーション名。有効にするには、アプリケーション名 はアップストリーミングで使用する アプリケーション名 と同じである必要があります。名前は最大 255 文字で、数字、大文字、小文字、ハイフン (-)、アンダースコア (_) を使用できます。ハイフンとアンダースコアは、名前の先頭には使用できません。ドメインのタイムシフトを設定するには、アスタリスク (*) を入力します。

    StreamName

    ストリーム名。

    トランスコーディングストリーム

    • ソースストリームのみ:オリジナルストリームのみがタイムシフトをサポートします。

    • トランスコーディングストリームが含まれる:オリジナルストリームとトランスコードストリームの両方がタイムシフトをサポートします。

    タイムシフトコンテンツの保持日数

    ApsaraVideo Live は、タイムシフト期間について次のオプションを提供します。

    • 1 日

    • 3 日

    • 7 日

    • 15 日

    • 30 日

    説明
    • タイムシフトを設定した後、設定を有効にするには、ストリームを再アップストリーミングする必要があります。新しいタイムシフト設定は、進行中のライブストリームには適用されません。

    • ストリーミングドメインに対応する URL を使用して、タイムシフトされたストリームに直接アクセスできます。URL アクセス仕様の詳細については、「タイムシフトのルール」をご参照ください。

    • プライマリストリーミングドメインがサブストリーミングドメインに関連付けられている場合は、サブドメインのタイムシフトを有効にする必要があります。そうしないと、タイムシフト設定はサブストリーミングドメインに対して有効になりません。

  6. [OK] をクリックします。

API を使用したタイムシフト設定

// このファイルは自動生成されます。編集しないでください。
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * description
説明
  • AppName をアスタリスク (*) に設定して、指定したドメイン下のすべてのライブストリームに設定を適用できます。

  • StreamName をアスタリスク (*) に設定して、指定した AppName 下のすべてのライブストリームに設定を適用できます。

  • 設定を追加した後、DescribeLiveShiftConfigs 操作を呼び出して、特定のドメインのタイムシフト設定をクエリできます。

  • Java SDK の使用方法の詳細については、「Java SDK ユーザーガイド」をご参照ください。

  • 設定を有効にするには、ストリームを再アップストリーミングする必要があります。

  • パラメーターの詳細については、「OpenLiveShift」をご参照ください。

タイムシフト機能の利用

タイムシフトを設定すると、ApsaraVideo Live はライブストリームの TS セグメントファイルを保存します。その後、クライアントはタイムシフト再生リクエストを送信して、ライブコンテンツを再生できます。

次の例は、タイムシフト再生リクエストを示しています。

http://<DomainName>/<AppName>/<StreamName.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******

例に示すように、タイムシフトリクエストは M3U8 ファイルのライブストリーミング URL に似ていますが、2 つの追加パラメーターが含まれています。aliyunols=on は固定フィールドで、lhs_offset_unix_s_0=300 は 300 秒の巻き戻しを示します。

説明
  • CDN を介してタイムシフトリクエストを送信する場合、aliyunols=on パラメーターを含める必要があります。

  • 現在、タイムシフト再生は M3U8 形式のライブストリーミング URL のみをサポートしています。

  • ApsaraVideo Player を使用して、タイムシフトされたコンテンツを再生できます。ApsaraVideo Player の使用方法の詳細については、「Player SDK」をご参照ください。

この例では、ライブコンテンツは 300 秒巻き戻されます。タイムシフトされたコンテンツを再生する場合、lhs_offset_unix_s_0 パラメーターを使用して再生時間を設定できます。パラメーターの形式は lhs_{type}_{format}_{unit}_{zone} です。

次の表に、パラメーターの変数を説明します。

type

format

unit

zone

時間タイプ。有効値:

  • start:再生開始時刻。

  • end:再生終了時刻。

  • vodend:ビデオオンデマンド (VOD) モードでの再生終了時刻を指定します。

    説明

    vodend を設定すると、再生が VOD モードであることを示します。これにより、指定された時間範囲内のすべての TS セグメントが一度に返され、endlist タグが含まれます。

  • offset:巻き戻しのオフセット時間。

タイムシフトの時間形式。有効値:

  • unix:UNIX タイムスタンプ。

  • human:YYYYMMDDHHMMSS 形式。例:20170809230130。

タイムシフトの時間単位。有効値:

  • s:秒。

  • ms:ミリ秒。

タイムゾーン。有効値:0 から 9。これは UTC+* を示します。0 は UTC を示し、8 は中国標準時を示します。

説明

format を unix に設定した場合、zone を 0 に設定してください。

次の例は、タイムシフトパラメーターを示しています。

  • lhs_start_human_s_8=20170809200010

  • lhs_start_unix_s_0=1502280113

  • lhs_end_human_s_8=20170809200010

  • lhs_vodend_unix_s_0=1502280113

  • lhs_offset_unix_ms_0=1800000 (30 分巻き戻し)

重要
  • lhs_start または lhs_offset のいずれかを指定する必要があります。lhs_startlhs_offset の両方を指定した場合、タイムシフト再生は lhs_offset に基づいて行われます。

  • lhs_end/lhs_vodend はオプションのパラメーターです。lhs_end/lhs_vodend を指定しない場合、再生はアップストリーミングが終了するまでライブモードで継続されます。

  • lhs_end を指定した場合、再生は指定された lhs_end 時刻までライブモードで継続されます。

  • lhs_vodend を指定した場合、再生は指定された lhs_vodend 時刻まで VOD モードで継続されます。VOD モードでは、すべての TS セグメントが一度に返されます。プレーヤーのプログレスバーを使用して早送りや巻き戻しができます。

  • lhs_endlhs_vodend の両方を指定した場合、lhs_vodend が優先されます。

ビジネスで特定の startend の時刻がわからない場合は、タイムシフトのタイムラインをクエリして取得できます。

次の例は、タイムシフトのタイムラインをクエリする方法を示しています。

// 角度括弧 (<>) 内の値を実際の値に置き換えてください。
http://<DomainName>/openapi/timeline/query?aliyunols=on&app=<AppName>&stream=<StreamName>&format=ts&lhs_start_unix_s_0=<StartTime>&lhs_end_unix_s_0=<endTime>&auth_key=<auth_key>

以下に例を示します。

名前

説明

リクエストメソッド

GET

URL

リクエスト URL。例:http://{domain}/openapi/timeline/query。URL 内の {domain} はご利用のストリーミングドメインです。

パラメーター

  • aliyunols (必須):on。(固定フィールド)

  • app (必須):アプリケーション名。

  • stream (必須):ストリーム名。

  • format (必須):ts。(固定フィールド)

    説明

    現在、API は [ts] 形式のタイムシフトデータのみクエリをサポートしています。

  • lhs_start_unix_s_0 (必須):クエリ時間範囲の開始の UNIX タイムスタンプ。例:1724295706。単位:秒。

  • lhs_end_unix_s_0 (必須):クエリ時間範囲の終了の UNIX タイムスタンプ。例:1724317306。単位:秒。

  • auth_key:暗号鍵。このキーは、ストリーミング URL で使用されるキーと同じ暗号化アルゴリズムを使用します。認証と暗号化に慣れていない場合は、ドキュメント「認証コードの例」をご参照ください。

一般的なエラー処理

  • 403:auth_key の値の暗号化プロセスが正しいかどうかを確認してください。

次の例は、サンプル応答を示しています。

{
  "retCode": 0,
  "description": "success",
  "content": {
    "current": 1514269063,
    "timeline": [
      {
        "start": 1514269054,
        "end": 1514269058
      }
    ]
  }
}

パラメーター

説明

current

現在のシステム時刻。プレーヤーはこのフィールドを使用して時刻を同期できます。

timeline

有効なタイムシフト期間。開始と終了の UNIX タイムスタンプが含まれます。

start

有効なセグメントの開始時刻 (UNIX タイムスタンプ)。単位:秒。

end

有効なセグメントの終了時刻 (UNIX タイムスタンプ)。単位:秒。

説明
  • 通常、1 回のアップストリーミングで 1 つのタイムラインオブジェクトが生成されます。start 時刻はライブストリームの開始時刻に近く、end 時刻は現在時刻またはライブストリームの終了時刻に近いです。ただし、ストリームの中断、再アップストリーミング、ネットワークの変動などの要因により、複数のタイムラインオブジェクトが生成される場合があります。

  • コンソールで特定のドメインのタイムシフトデータ量をクエリできます。詳細については、「使用量のクエリ」をご参照ください。

高度な利用

タイムシフトによるトランスコードストリームの再生

タイムシフト機能とトランスコード機能を組み合わせて、トランスコードされたストリームを再生できます。タイムシフトでトランスコードされたストリームを再生するには、まずトランスコードを設定する必要があります。トランスコードの設定方法の詳細については、「ライブストリームのトランスコード」をご参照ください。

このセクションでは、トランスコード設定が完了していることを前提としています。

タイムシフトを設定する際には、トランスコードされたストリームのタイムシフトデータも生成する必要があります。次の例は、サンプルコードを示しています。

// タイムシフトデータを生成する際に、対応するトランスコードストリームを無視するかどうかを指定します。有効値: true および false。デフォルト値: true。
openLiveShiftRequest.setIgnoreTranscode("<false>");

タイムシフト再生を有効にするには、トランスコードされたストリーム URL にタイムシフトパラメーターを追加します。

次の例は、再生 URL を示しています。

http://<DomainName>/<AppName>/<StreamName_TranscodingTemplateID.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******
説明
  • タイムシフトでトランスコードされたストリームを再生するには、ストリームを再アップストリーミングする必要があります。

  • ストリームフェッチングによってトリガーされるトランスコード設定の場合、タイムシフトでトランスコードされたストリームを再生してもトランスコードはトリガーされません。トランスコードをトリガーするには、事前にライブのトランスコードストリームを再生する必要があります。また、アップストリーミングによってトランスコードがトリガーされるように設定することもできます。

重要
  • 現在、タイムシフト機能はマルチビットレートのトランスコードストリームをサポートしていません

タイムシフトによるカプセル化ストリームの再生

タイムシフトでカプセル化されたストリームを再生するには、タイムシフト 機能と ライブストリームのカプセル化 機能を組み合わせて使用します。

説明

ApsaraVideo Live は、ライブストリームカプセル化サービスをサポートしています。このサービスは、CMAF や Low-Latency HTTP Live Streaming (LL-HLS) などの再生プロトコルをサポートし、ライブストリーミングの遅延を効果的に削減します。ライブストリームカプセル化を有効にすると、ApsaraVideo Live ストリームは TS または CMAF セグメントに分割されます。セグメントは、指定された HLS または LL-HLS プロトコルを使用して視聴者に配信されます。視聴者がリクエストする M3U8 プレイリストには、常に更新されるセグメントアドレスのリストが含まれています。HLS と比較して、LL-HLS はストリームを 0.2 秒から 1 秒の持続時間でより小さなパーツに分割できます。また、M3U8 プレイリストとパーツのブロッキングロードもサポートしています。これにより、エンドツーエンドの遅延を 3〜5 秒という低さで実現します。TS 形式と比較して、CMAF コンテナフォーマットはより広範なデバイスやブラウザでサポートされています。また、H.265 などの新しいコーデックもサポートしています。

ライブストリームカプセル化機能に慣れていない場合は、「ライブストリームカプセル化」をご参照ください。

このセクションでは、ライブストリームカプセル化設定が完了していることを前提としています。

タイムシフトでカプセル化されたストリームを再生するには、タイムシフト設定を変更する必要はありません。カプセル化されたストリーム URL にタイムシフトパラメーターを追加するだけです。

次の例は、再生 URL を示しています。

http://<DomainName>/<AppName>/<StreamName-ContainerFormat.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******
説明
  • タイムシフトでカプセル化されたストリームを再生するには、ストリームを再アップストリーミングする必要があります。

  • カプセル化およびトランスコードされたストリームをタイムシフトで再生するには、カプセル化およびトランスコードされたストリーム URL にタイムシフトパラメーターを追加するだけです。

関連ドキュメント

タイムシフトの API の詳細については、「タイムシフト」をご参照ください。