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

ApsaraVideo Live:タイムシフト

最終更新日:Sep 05, 2024

タイムシフトは、ライブストリームがまだ進行中であるときに、視聴者が最初からライブストリームを見ることを可能にする。 このトピックでは、タイムシフトの仕組みと、この機能を使用するリクエストの送信方法について説明します。

タイムシフトの仕組み

タイムシフトは、HTTPライブストリーミング (HLS) プロトコルに基づいています。 HLSは、ライブストリームをTSセグメントに分解し、M3U8インデックスファイルを生成して、TSセグメントの順序をリアルタイムで記録します。 ライブストリームをリクエストすると、TSセグメントのURLを含むインデックスファイルが返されます。 一般に、TSセグメントおよび対応するURLは格納されない。 したがって、ライブストリームを巻き戻して以前にストリーミングされたコンテンツを表示することはできません。 この問題を解決するには、タイムシフトを有効にして、TSセグメントをObject Storage Service (OSS) バケットに保存し、対応するURLをデータセットに最大30日間保存します。 保持期間の指定方法については、「タイムシフトの設定」をご参照ください。

使用上の注意

この機能により、最大100,000人の視聴者が同時にライブストリームを視聴できます。 上限を引き上げたい場合は、チケットを起票してください。 詳細については、お問い合わせをご参照ください。

タイムシフトの有効化

タイムシフトを有効にするには、次のいずれかの方法を使用します。

方法1: ApsaraVideo Liveコンソールでタイムシフトを有効にします。 詳細については、「タイムシフトの設定」をご参照ください。

方法2: OpenLiveShift操作を呼び出します。

次のサンプルコードは、Java用サーバーSDKを使用してAPI操作を呼び出す方法の例を示しています。

 
// Replace the placeholder values with actual values.
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
IAcsClient client = new DefaultAcsClient(profile);
OpenLiveShiftRequest openLiveShiftRequest = new OpenLiveShiftRequest();
openLiveShiftRequest.setDomainName("<DomainName>");
openLiveShiftRequest.setAppName("<AppName>");
openLiveShiftRequest.setStreamName("<StreamName>");
// The retention period. Unit: day. Valid values: 1 to 30. Default value: 7.
openLiveShiftRequest.setVision("<5>");
// Specifies whether to ignore the time-shifted data of transcoded streams. Valid values: true and false. Default value: true.
openLiveShiftRequest.setIgnoreTranscode("<true>");
//
// Code for other features.
//

try {
    OpenLiveShiftResponse openLiveShiftResponse = client.getAcsResponse(openLiveShiftRequest);
    System.out.println(new Gson().toJson(openLiveShiftResponse));
    // todo something.
} catch (ServerException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (ClientException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
説明
  • AppNameパラメーターをアスタリスク (*) に設定すると、指定されたドメイン名のすべてのライブストリームでタイムシフトが有効になります。

  • StreamNameパラメーターをアスタリスク (*) に設定すると、指定したアプリケーションのすべてのライブストリームでタイムシフトが有効になります。

  • DescribeLiveShiftConfigsを呼び出して、ドメイン名のタイムシフト設定を照会できます。

  • Java用サーバーSDKの詳細については、「Java用サーバーSDKの使用」をご参照ください。

タイムシフト表示のリクエストを送信する

タイムシフト表示のリクエストを作成するには、必要なパラメーターをライブストリームのHLS URLに追加します。 必要なパラメーターの形式は、lhs_{type }_{ format }_{ unit }_{ zone} です。 リクエストの例

http://example.com/AppName/StreamName.m3u8?aliyunols=on&lhs_start_human_s_8=20171024160220&lhs_end_human_s_8=20171024160420
説明

aliyunolsパラメーターをonに設定する必要があります。

次の表で、関連パラメーターについて説明します。

パラメーター

説明

type

時間のタイプ。 有効な値:

  • start: 表示するライブストリームコンテンツの開始時間。

  • end: 表示するライブストリームコンテンツの終了時刻。

  • vodend: ビデオオンデマンド (VOD) コンテンツの終了時刻。

    説明

    このパラメーターをvodendに設定すると、ビデオはVODモードで再生されます。 この場合、指定された期間内に生成されたすべてのTSセグメントが、endlistタグを含めて返されます。

  • offset: ライブストリームを巻き戻す時間。

フォーマット

時間形式。 有効な値:

  • unix: UNIX timestamp。

  • 人間: 人間が読める時間。 形式: yyyyMMddHHmmss. 例: 20170809230130。

unit

時間の単位。 有効な値:

  • s: 秒。

  • ms: ミリ秒。

  • us: マイクロ秒。

  • ns: ナノ秒。

説明

ApsaraVideo Liveコンソールで、特定のドメイン名の有効な時間範囲と利用可能な時間シフトデータを照会できます。 詳細については、「使用状況統計」をご参照ください。 統計を取得するためのリクエストを送信することもできます。 詳細については、次のセクションを参照してください。

ゾーン

タイムゾーン。 有効な値: 0〜9。 値0はUTCタイムゾーンを指定します。 値8は、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分巻き戻します。

タイムシフト表示の有効な時間範囲を照会する

タイムシフト表示の有効な時間範囲を照会するリクエストを送信できます。 リクエストは、http://{domain}/openapi/timeline/query の形式で、必要なパラメーターをリクエストURLに追加して作成されます。 例:

// An unsigned URL
http://example.com/openapi/timeline/query?aliyunols=on&app=bbb&stream=cc&format=ts&lhs_end_unix_s_0=1513334270&lhs_start_unix_s_0=1513334255
// A signed URL
http://example.com/openapi/timeline/query?auth_key=1606204918-0-0-3e898a5f491fedb113d17aad7c091dde&aliyunols=on&app=zzb-test&stream=zzb-shiyi&format=ts&lhs_start_unix_s_0=1606200900&lhs_end_unix_s_0=1606202520

項目

説明

リクエストメソッド

GET

URL

リクエストのURL。 形式: http://{domain}/openapi/timeline/query domainフィールドは、ストリーミングドメインを指定します。

必要なパラメーター

  • aliyunols: このパラメーターをonに設定します。

  • app: アプリケーションの名前。

  • stream: ライブストリームの名前。

  • format: クエリするタイムシフトされたデータの形式。 有効な値: tsおよびflv。

  • lhs_start_unix_s_0: UNIXタイムスタンプ形式の開始時刻。 単位は秒です。

  • lhs_end_unix_s_0: UNIXタイムスタンプ形式の終了時刻。 単位は秒です。

説明

Alibaba Cloud CDNでURL署名が有効になっている場合、auth_keyパラメーターをURLに追加する必要があります。 署名付きURLは、ApsaraVideo Liveコンソールまたは認証アルゴリズムを使用して生成できます。 詳細については、「URL署名の設定」および「URL署名の例」をご参照ください。

レスポンス例:

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

パラメーター

説明

現在

現在のシステム時刻 プレイヤーは時間をこのパラメーターの値に合わせます。

timeline

タイムシフト表示の有効な時間範囲。

start

UNIXタイムスタンプ形式でタイムシフト表示に使用できるセグメントの開始時刻。 単位は秒です。

end

UNIXタイムスタンプ形式でタイムシフト表示に使用できるセグメントの終了時刻。 単位は秒です。