サードパーティの字幕サービスとの連携

概要

ミーティングのホストは、字幕 URL をサードパーティの字幕サービスに提供することで、字幕を Zoom のミーティングに追加できます。 字幕 URL を使用することで、サードパーティ サービスによって字幕ソフトウェアから Zoom のミーティングに字幕がストリーミングされます。 この記事では、Zoom が字幕データを受信するために使用する形式を定義します。

Zoom で字幕を使用するのが初めての場合は、字幕の概要についてご覧ください。

この記事の内容:

前提条件

字幕 URL(API トークン)の取得

接続を確立するためには、ホストまたは共同ホストが字幕 URL をコピーし、Zoom の字幕 REST API に対応する字幕ソフトウェアに入力する必要があります。 または、ホストが URL をコピーして、ミーティング内チャットを使用して、他のユーザーに送信することもできます。

  1. Zoom のミーティングまたはウェビナーで、[字幕] をクリックします。
  2. [API トークンをコピー] をクリックします。

HTTP 経由での字幕 URL の使用

Zoom では、字幕データが POST の連続したシーケンスとして受信されることを想定されています。 すべてのミーティング セッションとブレイクアウト ルーム セッションには特殊 URL が存在します(ブレイクアウト ルーム セッションには追加の subconfid パラメータが存在します)。 POST の URL によって、データの送り先(字幕が関連付けられているミーティング)が指定されます。

例: https://wmcapi.zoom.us/closedcaption?id=200610693&ns=GZHkEA==&expire=86400&spparams=id%2Cns%2Cexpire&signature=nYtXJqRKCW

次のパラメータをすべての POST の URL に追加する必要があります。

名前説明フラグメントの例
 seq

すべての POST に含まれている必要があります。 すべての字幕データ POST のカウンターです。 カウンターは、新しい字幕データの POST 間に 1 つずつ増加する必要があります(再試行の場合は増加してはいけません)。

最後に送信が成功した seq 番号は、API(/closedcaption/seq [GET])を経由して取得できます。

&seq 
 lang

言語コードISO 国コードをハイフンで区切ります。

例:

  • ドイツ語: de-DE
  • 英語:en-US
  • 日本語: jp-JP
  • スペイン語: es-ES
  • フランス語: fr-FR
  • 中国語: zh-CN 
&lang=en-US 
 

コンテンツ タイプとデータ

すべての POST のコンテンツ タイプ(MIME タイプ)は、UTF-8 エンコードのプレーン テキスト形式である必要があります。

字幕の取込ポイントに送信されるすべての HTTP POST には、コンテンツ本文内に字幕データのみが含まれている必要があります。 データは、フォームからエンコードされてはなりません。

POST の本文には、字幕データのテキストが含まれます。 改行については、字幕テキストで \n(0x0D)を使用できます。

例:

レスポンス コード

HTTP POST は、次のレスポンスコードを返す場合があります。

レスポンス コード説明
405

許可されていないメソッドです。 POST ではありません。

400

不正なリクエストです。 ミーティングは開始されていません。

403

許可されていません。 &seq クエリ パラメータが存在しないか、&id、&signature、&expire または &ns が存在しないことに起因している可能性があります。

 

リクエストの再試行

Zoom では、すべてのコードを再試行することをおすすめします。 これには、上記のレスポンス コード 405、400、403 に加えて、408 リクエスト タイムアウト、500 内部サーバーエラー、502 不正なゲートウェイ、503 サービス利用不可、504 ゲートウェイ タイムアウトなどの追加のコードが含まれます。

すべての HTTP POST リクエストは、タイムアウトで実行する必要があります。 リクエストがタイムアウトした場合、再試行する必要があります。

リクエストを再試行する場合は、ランダム化されたバイナリ指数バックオフを使用します。

[0..100] ミリ秒の間のランダムな待ち時間と取ってから再試行します。失敗した場合は、[0..200] ミリ秒の間のランダムな待ち時間と取ってから再試行します。失敗した場合は、[0..400] ミリ秒の間のランダムな待ち時間と取ってから再試行し、その後も同様に続けます。 次の字幕パケットへの移行が実行されるまで再試行してください(約 5 秒後)。

HTTP POST から返されるタイムスタンプ

タイムスタンプ値は、POST 戻り本文に存在し、POST が処理された時刻に対応します。 サーバーを駆動するクライアントのローカル クロックを修正するために使用できます。 ローカルクロックの同期が不十分な場合が多いため、Zoom ではこの値を使用することを強くおすすめします。

返されるタイムスタンプの例:  2012-12-24T00:00:06.873

POST の例

POST /closedcaption?id=200610693&ns=GZHkEA==&expire=86400&sparams=id%2Cns%2Cexpire&signature=nYtXJqRKCW&seq=41&lang=en-US 
Host: wmcapi.zoom.us:80
Accept: */*
Content-Type: text/plain
Content-Length: 11
I'M SENDING
 
POST /closedcaption?id=200610693&ns=GZHkEA==&expire=86400&sparams=id%2Cns%2Cexpire&signature=nYtXJqRKCW&seq=42&lang=en-US 
Host: wmcapi.zoom.us:80
Accept: */*
Content-Type: text/plain
Content-Length: 18
SEVERAL CAPTIONS.\n