Video API PHP SDK

OpenTok PHP SDK には、以下の機能を提供するメソッドが用意されています:

インストール

作曲家(推奨):

Composer は PHP プロジェクトの依存関係を管理するのに役立ちます。詳細はこちら: http://getcomposer.org

このパッケージ (opentok/opentok)をあなたの composer.json ファイルを作成するか、コマンドラインで以下を実行する。 を実行する:

composer require opentok/opentok ^4.0

使用方法

初期化

このパッケージは PSR-4 オートローディングの標準仕様。Composer を使用してインストールする場合は、生成されたオートローダーを require するだけで済みます:

require "<projectpath>/vendor/autoload.php";

SDKのファイルが読み込まれたら、 OpenTok\OpenTok 独自のAPIを持つオブジェクト キーとAPIシークレット。

use OpenTok\OpenTok;

$opentok = new OpenTok($apiKey, $apiSecret);

初期化オプション

について OpenTok\OpenTok オブジェクトでは、特別な要件が生じた場合(たとえば、 別のデータセンターを指定したり、基盤となるHTTPクライアントのタイムアウトを変更したりする必要がある場合など)に限り、値の一部を上書きできるようにしています。 このような状況では、3番目のパラメータとして追加オプションの配列を渡すことができます。

以下のオプションをご利用いただけます:

  • apiUrl - SDKが指すドメインを変更します。特定のデータセンターを選択する必要がある場合に便利です。 を指定したり、テスト用のAPIのモックバージョンを指定したりする場合に便利です。
  • client - 以下のクラスを継承するカスタムAPIクライアント OpenTok\Utils\Client、HTTPクライアントのカスタマイズに役立ちます
  • timeout - デフォルトのHTTPタイムアウトを変更します。デフォルトでは「無制限」に設定されています。タイムアウトを変更するには、秒単位の数値を指定してください。
use OpenTok\OpenTok;
use MyCompany\CustomOpenTokClient;

$options = [
    'apiUrl' => 'https://custom.domain.com/',
    'client' => new CustomOpenTokClient(),
    'timeout' => 10,
]
$opentok = new OpenTok($apiKey, $apiSecret, $options);

セッションの作成

OpenTokセッションを作成するには、次の createSession($options) のメソッドを使用する。 OpenTok\OpenTok クラスである。その $options パラメータはオプションの配列で、以下のように指定する:

  • セッションで OpenTok Media Router を使用するか、クライアント間でストリームを直接送信しようとするかを設定します。

  • セッションが自動的にアーカイブを作成するかどうかの設定(ルーティングセッションの使用を意味する)

  • 場所のヒントを指定する

について getSessionId() のメソッドを使用する。 OpenTok\Session このインスタンスはセッションIDを返します。 このIDを使用して、OpenTokクライアントライブラリ内でセッションを識別します。

use OpenTok\MediaMode;
use OpenTok\ArchiveMode;

// Create a session that attempts to use peer-to-peer streaming:
$session = $opentok->createSession();

// A session that uses the OpenTok Media Router, which is required for archiving:
$session = $opentok->createSession(array( 'mediaMode' => MediaMode::ROUTED ));

// A session with a location hint:
$session = $opentok->createSession(array( 'location' => '12.34.56.78' ));

// An automatically archived session:
$sessionOptions = array(
    'archiveMode' => ArchiveMode::ALWAYS,
    'mediaMode' => MediaMode::ROUTED
);
$session = $opentok->createSession($sessionOptions);


// Store this sessionId in the database for later use
$sessionId = $session->getSessionId();

トークンの生成

セッションが作成されると、クライアントがセッションに接続する際に使用するトークンの生成を 開始できます。 トークンを生成するには generateToken($sessionId, $options) のメソッドを使用する。 OpenTok\OpenTok クラス、または generateToken($options) メソッドを OpenTok\Session インスタンスを作成した後。その $options parameter は、トークンのロール、 有効期限、および接続データを設定するために使用されるオプションの配列です。アーカイブや放送におけるレイアウト制御のため、 このトークンを使用して接続から公開されるストリームの初期レイアウトクラス一覧も設定できます。

use OpenTok\Session;
use OpenTok\Role;

// Generate a Token from just a sessionId (fetched from a database)
$token = $opentok->generateToken($sessionId);
// Generate a Token by calling the method on the Session (returned from createSession)
$token = $session->generateToken();

// Set some options in a token
$token = $session->generateToken(array(
    'role'       => Role::MODERATOR,
    'expireTime' => time()+(7 * 24 * 60 * 60), // in one week
    'data'       => 'name=Johnny',
    'initialLayoutClassList' => array('focus')
));

ストリームを使う

ストリームに関する情報は getStream($sessionId, $streamId) のメソッドを使用する。 OpenTok\OpenTok クラスである。

use OpenTok\Session;

// Get stream info from just a sessionId (fetched from a database)
$stream = $opentok->getStream($sessionId, $streamId);

// Stream properties
$stream->id; // string with the stream ID
$stream->videoType; // string with the video type
$stream->name; // string with the name
$stream->layoutClassList; // array with the layout class list

を呼び出すことで、セッション内のすべてのストリームに関する情報を取得できます。 listStreams($sessionId) のメソッドを使用する。 OpenTok\OpenTok クラスである。

use OpenTok\Session;

// Get list of streams from just a sessionId (fetched from a database)
$streamList = $opentok->listStreams($sessionId);

$streamList->totalCount(); // total count

アーカイブとの取り組み

OpenTok Media Router を使用しているセッションのみをアーカイブできます (メディアモードが「routed」に設定されているセッション)。

OpenTokセッションの録画は、以下の方法を使用して開始できます。 startArchive($sessionId, $name) メソッド の OpenTok\OpenTok クラス。これにより、 OpenTok\Archive インスタンス。パラメータ $archiveOptions これはオプションの配列であり、名前の割り当て、音声および/または 動画の記録の有無、アーカイブの希望する出力モード、および該当する場合は希望する解像度を指定するために使用されます。なお、アーカイブを開始できるのは、 クライアントが接続されているセッションのみであることに注意してください。

// Create a simple archive of a session
$archive = $opentok->startArchive($sessionId);


// Create an archive using custom options
$archiveOptions = array(
    'name' => 'Important Presentation',     // default: null
    'hasAudio' => true,                     // default: true
    'hasVideo' => true,                     // default: true
    'outputMode' => OutputMode::COMPOSED,   // default: OutputMode::COMPOSED
    'resolution' => '1280x720'              // default: '640x480'
);
$archive = $opentok->startArchive($sessionId, $archiveOptions);

// Store this archiveId in the database for later use
$archiveId = $archive->id;

を設定した場合 outputMode オプションで OutputMode::INDIVIDUALこの場合、アーカイブ内の各ストリームは個別のファイルに記録されます。を設定するときは、解像度を指定できないことに注意してください。 outputMode オプションで OutputMode::INDIVIDUAL.その OutputMode::COMPOSED 設定(デフォルト)にすると、アーカイブ内のすべてのストリームが1つの(構成された)ファイルに記録されます。

を渡すことで、自動的にアーカイブされたセッションを作成することもできます。 ArchiveMode::ALWAYS として archiveMode のキーである。 options パラメータに渡される。 OpenTok->createSession() メソッドを使用する(前述の「セッションの作成」を参照)。

開始したアーカイブの録画を停止するには stopArchive($archiveId) のメソッドを使用する。 OpenTok\OpenTok オブジェクト。また、次の方法でもこれを行うことができます。 stop() のメソッドを使用する。 OpenTok\Archive インスタンスだ。

// Stop an Archive from an archiveId (fetched from database)
$opentok->stopArchive($archiveId);
// Stop an Archive from an Archive instance (returned from startArchive)
$archive->stop();

を得るには OpenTok\Archive インスタンス(とそれに関するすべての情報)をアーカイブIDから取得するには getArchive($archiveId) のメソッドを使用する。 OpenTok\OpenTok クラスである。

$archive = $opentok->getArchive($archiveId);

アーカイブを削除するには deleteArchive($archiveId) のメソッドを使用する。 OpenTok\OpenTok クラス、あるいはその delete() 〜の方法 OpenTok\Archive インスタンスだ。

// Delete an Archive from an archiveId (fetched from database)
$opentok->deleteArchive($archiveId);
// Delete an Archive from an Archive instance (returned from startArchive, getArchive)
$archive->delete();

また、APIキーで作成したすべてのアーカイブ(最大1000件)のリストを取得することもできます。これは を使用します。 listArchives($offset, $count, $sessionId) のメソッドを使用する。 OpenTok/OpenTok クラス。パラメータ $offset, $countそして $sessionId これらはオプションであり、結果のページネーションや、特定のセッションによる データの絞り込みに役立ちます。これにより、 OpenTok\ArchiveList クラスである。

$archiveList = $opentok->listArchives();

// Get an array of OpenTok\Archive instances
$archives = $archiveList->getItems();
// Get the total number of Archives for this API Key
$totalCount = $archiveList->totalCount();

構成されたアーカイブの場合、レイアウトを動的に変更するには setArchiveLayout($archiveId, $layoutType) メソッドを使用する:

use OpenTok\OpenTok;

$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$opentok->setArchiveLayout($archiveId, $layout);

を設定することで、クライアントのストリームの初期レイアウト・クラスを設定できます。 layout オプションを使用します。 オプションは、クライアントのトークン作成時に OpenTok->generateToken() メソッド、あるいは Session->generateToken() メソッド。また、ストリームのレイアウトクラスは、 以下のメソッドを呼び出すことで変更できます。 OpenTok->updateStream() メソッドを使用する。

構成済みアーカイブのレイアウトの設定は任意です。既定では、構成済みアーカイブは 「を使用します ( 構成されたビデオのレイアウトをカスタマイズする アーカイブ).

アーカイブに関する詳細については、以下の OpenTokのアーカイブ機能 開発者ガイド

ブロードキャストでの作業

ライブストリーミング配信を開始できるのは、OpenTok Media Router を使用するセッションに限られます (メディアモードが「routed」に設定されているセッション)。

以下の方法を使用して、OpenTokセッションのライブストリーミング配信を開始します。 startBroadcast($sessionId, $options) のメソッドを使用する。 OpenTok\OpenTok クラス。 これにより、 OpenTok\Broadcast 例。その $options このパラメータは、 ブロードキャストストリームを定義し、レイアウト、 maxDuration、解像度などのブロードキャストオプションを設定するために使用される配列です。

// Define options for the broadcast
$options = [
  'layout' => Layout::getBestFit(),
  'maxDuration' => 5400,
  'resolution' => '1280x720',
  'output' => [
    'hls' => [
      'dvr' => true,
      'lowLatency' => false
    ],
    'rtmp' => [
      [
        'id' => 'foo',
        'serverUrl' => 'rtmps://myfooserver/myfooapp',
        'streamName' => 'myfoostream'
      ],
      [
        'id' => 'bar',
        'serverUrl' => 'rtmps://myfooserver/mybarapp',
        'streamName' => 'mybarstream'
      ],
    ]
  ]
];

// Start a live streaming broadcast of a session
$broadcast = $opentok->startBroadcast($sessionId, $options);

// Store the broadcast ID in the database for later use
$broadcastId = $broadcast->id;

以下の方法を使用して、ライブ配信を停止することができます。 stopBroadcast($broadcastId) のメソッドを使用する。 OpenTok\OpenTok オブジェクト。また、次の方法でもこれを行うことができます。 stop() のメソッドを使用する。 OpenTok\Broadcast インスタンスだ。

// Stop a broadcast from an broadcast ID (fetched from database)
$opentok->stopBroadcast($broadcastId);

// Stop a broadcast from an Broadcast instance (returned from startBroadcast)
$broadcast->stop();

を得るには OpenTok\Broadcast ブロードキャスト ID からインスタンス(およびそれに関するすべての情報)を取得するには、 次の getBroadcast($broadcastId) のメソッドを使用する。 OpenTok\OpenTok クラスである。

$broadcast = $opentok->getBroadcast($broadcastId);

以下の機能を使用すると、レイアウトを動的に変更することができます。 OpenTok->updateBroadcastLayout($broadcastId, $layout) メソッドを使用する:

use OpenTok\OpenTok;

$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$opentok->updateBroadcastLayout($broadcastId, $layout);

を使用することができます。 Layout レイアウトの種類を設定するためのクラス: Layout::getHorizontalPresentation(), Layout::getVerticalPresentation(), Layout::getPIP(), Layout::getBestFit(), Layout::createCustom().

$layoutType = Layout::getHorizontalPresentation();
$opentok->setArchiveLayout($archiveId, $layoutType);

// For custom Layouts, you can do the following
$options = array(
    'stylesheet' => 'stream.instructor {position: absolute; width: 100%;  height:50%;}'
);

$layoutType = Layout::createCustom($options);
$opentok->setArchiveLayout($archiveId, $layoutType);

また、以下の関数を呼び出すことで、画面共有のレイアウトを設定することもできます。 setScreenshareType() レイアウトオブジェクトのメソッド。

$layout = Layout::getBestFit(); // Other types are not currently supported
$layout->setScreenshareType(Layout::LAYOUT_VERTICAL);

を設定することで、クライアントのストリームの初期レイアウト・クラスを設定できます。 layout オプションを使用します。 オプションは、クライアントのトークン作成時に OpenTok->generateToken() メソッド、あるいは Session->generateToken() メソッド。また、ストリームのレイアウトクラスは、 以下のメソッドを呼び出すことで変更できます。 OpenTok->updateStream() メソッドを使用する。

ライブ配信のレイアウト設定は任意です。デフォルトでは、配信には 「最適化」レイアウトが使用されます( OpenTokライブストリーミング 配信の動画レイアウトの設定).

ライブ配信に関する詳細については、以下の OpenTokによるライブ配信 開発者ガイド

クライアントを強制的に切断する

アプリケーションサーバーは、 forceDisconnect($sessionId, $connectionId) のメソッド OpenTok\OpenTok クラスである。

use OpenTok\OpenTok;

// Force disconnect a client connection
$opentok->forceDisconnect($sessionId, $connectionId);

セッション内のクライアントに公開音声をミュートさせる

を使って、特定のストリームのパブリッシャーにオーディオのパブリッシングを停止させることができます。 Opentok.forceMuteStream($sessionId, $stream) メソッドを使用する。

セッション内のすべてのストリームのパブリッシャーを強制的に停止することができます(オプションのストリームリストを除く)。 を使って音声の公開を停止させることができます。 Opentok.forceMuteAll($sessionId, $excludedStreamIds) メソッドを呼び出します。 メソッドを呼び出すことで、セッションのミュート状態を無効にできます。 Opentok.DisableForceMute(sessionId) または Opentok.DisableForceMuteAsync(sessionId) メソッドを使用する。

シグナルの送信

セッションが作成されると、セッション内の全員、または特定の接続にシグナルを送ることができます。 シグナルを送るには signal($sessionId, $payload, $connectionId) のメソッドを使用する。 OpenTok\OpenTok クラスである。

について $sessionId パラメータはセッションIDである。

について $payload parameter は、以下を設定するために使用される連想配列です。 :

  • data (文字列) -- シグナル用のデータ文字列。最大8kBまで送信できます。

  • type (文字列) -- — (オプション) シグナルのタイプ文字列。最大128文字まで送信可能で、使用できる文字はA-Z、a-z、数字(0-9)、'-'、'_'、および'~'のみです。

について $connectionId パラメータはオプションの文字列である。 を指定するために使用されるオプションの文字列です。この値を指定すると、シグナルは指定したクライアントに送信されます。 に送信されます。そうでない場合、シグナルはセッションに接続されているすべてのクライアントに送信されます。

use OpenTok\OpenTok;

// Send a signal to a specific client
$signalPayload = array(
    'data' => 'some signal message',
    'type' => 'signal type'
);
$connectionId = 'da9cb410-e29b-4c2d-ab9e-fe65bf83fcaf';
$opentok->signal($sessionId, $signalPayload, $connectionId);

// Send a signal to everyone in the session
$signalPayload = array(
    'data' => 'some signal message',
    'type' => 'signal type'
);
$opentok->signal($sessionId, $signalPayload);

詳細は OpenTok シグナリング開発者 ガイド.

SIPインターコネクトでの作業

SIP Interconnect 機能を使用すると、外部のサードパーティ製 SIP ゲートウェイからの音声専用ストリームを追加できます。これには、SIP URI、音声専用 ストリームを追加したいセッション ID、およびそのセッション ID に接続するためのトークンが必要です。

SIP通話を開始するには、次の番号に電話をかけてください。 dial($sessionId, $token, $sipUri, $options) のメソッドを使用する。 OpenTok\OpenTok クラスである:

$sipUri = 'sip:user@sip.partner.com;transport=tls';

$options = array(
  'headers' =>  array(
    'X-CUSTOM-HEADER' => 'headerValue'
  ),
  'auth' => array(
    'username' => 'username',
    'password' => 'password'
  ),
  'secure' => true,
  'from' => 'from@example.com'
);

$opentok->dial($sessionId, $token, $sipUri, $options);

詳細は OpenTok SIP 相互接続 開発者 ガイド.

Audio Connector の使用方法

[...]を開始できます。 オーディオ・コネクター WebSocket を呼び出すことで connectAudio() のメソッドを使用する。 OpenTok\OpenTok クラスである。

必要条件

OpenTokのAPIキーとAPIシークレットが必要です。これらは、アカウントにログインすることで取得できます。 Vonage Video API アカウント.

OpenTok PHP SDK には、PHP 7.2 以降が必要です。

リリースノート

参照 リリース ページに詳細を掲載している。

v2.2.0以降の主な変更点

v2.2.1での変更点:

のデフォルト設定は createSession() この方法は、メディアモードを「relayed」に設定して セッションを作成するものです。以前のバージョンのSDKでは、デフォルト設定としてOpenTok Media Routerを使用する (メディアモードを「routed」に設定する)ようになっていました。 リレー方式のセッションでは、クライアントは互いに直接 (ピアツーピア)でストリームを送信しようとします。ファイアウォールの制限によりクライアントが接続できない場合、 セッションでは OpenTok TURN サーバーを使用して音声・動画ストリームを中継します。

v2.2.0での変更点:

このバージョンのSDKでは、OpenTokアーカイブの操作がサポートされています。

API の多くのメソッド名が変更されました。以下のメソッドを含め、多くのメソッド名が キャメルケースに変更されました:

  • \OpenTok\OpenTok->createSession()
  • \OpenTok\OpenTok->generateToken()

また、以下の点にも注意してください。 options パラメーターの OpenTok->createSession() このメソッドには mediaMode a の代わりに property p2p 財産である。

API_Config クラスは削除されました。OpenTok の API キーと API シークレットは、SDK ファイル外でコード内に保存してください。