ストリーミング
外部URLトークン化スクリプト
はじめに
クライアントによっては、ファイル/ストリームへのアクセスを制限するためにトークン化されたURLを使用する必要があるかもしれません。これは通常、元のファイルまたはストリームURLにトークンを追加することによって、許可されたユーザーごとに固有のURLを生成することを意味します。これを可能にするために、外部URLトークン化スクリプトを介して特定ユーザーがトークン化されたURLを取得するための簡単な方法を実装しています。
- 指定された汎用URLに必要なトークンを生成するスクリプトを作成します。
例)
通常のURL:http://www.mymediaserver.com/myfile.mp4
トークン化されたURL:http://www.mymediaserver.com/myfile.mp4?token=uniquetoken - INTER-STREAM側でスクリプトURLと秘密鍵を指定してトークン化スクリプトを使用する設定をおこないます。
- ファイル/ストリームへのURL(Stream動画の[メディア]タブ内)を指定するときは、一般的なURLに[xtok]プレフィックスを追加する必要があります。
- 再生時にビデオプレーヤーがURL内で前述のプレフィックスを見つけた場合、再生する前にトークン化されたURLを要求します。
ユーザーがコンテンツへのアクセスを許可されている場合、システムは必要なデータ(一般URL、ユーザーID、ユーザーIP)をGET変数としてトークン化スクリプトに送信します。これはトークン化スクリプトURLに追加されます。
データには検証署名(ハッシュ)も含まれます。
トークン化スクリプトの実装
サンプルコード
トークン化スクリプトのサンプルをダウンロードして解凍します。
トークン化スクリプトの作成:データの受信
INTER-STREAMは要求の詳細をGET varsとしてトークン化スクリプトURLに追加します。
例)
- user_id:INTER-STREAM内のユーザーID
- user_ip:ユーザの検出IP
- url:トークン化するURL
- signature:リクエストを検証するための署名(ハッシュ)
署名はHMAC SHA256を使用してINTER-STREAMの設定に入力されたキーで生成されます。
リクエストを検証する
トークンを生成する前に、署名を使ってリクエストを検証する必要があります。
PHPでの例)
$data = array(
"user_id" => (int)$user_id,
"user_ip" => $user_ip,
"url" => $url
);
$signature = base64_encode(hash_hmac('sha256', json_encode($data), $key, true));
署名を生成したらINTER-STREAMから送信されたものと比較して、それらが一致している必要があります。
署名が一致しない(そして受信しているデータが変更されていないことが確実である)場合は、スクリプトとINTER-STREAMでハッシュの生成に使用されるキーが同じであることを確認してください。
同じであれば、受信したデータがurldecodeされていること、そして署名が正確に生成されていることを確認してください。
トークン化スクリプトの作成:トークン化されたURLを返す
トークン化されたURLを生成したら、結果をJSON形式の配列として返す必要があります。
必要な配列インデックス
- error:(オプション)処理エラーがあった場合のみ
- url:トークン化されたURL。
PHPでの成功例)
"url" => "http://mymediaserver.com/whatever_folder/myfile.mp4?token=uniquetoken"
));
PHPでの失敗例)
"error" => "An error message..."
));
トークン化スクリプトを使用するための設定
INTER-STREAM側でトークン化スクリプトURLと秘密鍵を使用する設定をおこないます。
設定ファイル(config/Config.inc.php)を編集して、PHPの終了タグ"?>"の前に以下の変数を追加します。
$EXTERNAL_URL_TOKENIZER_KEY = "mysecretkey"; // このキーは検証署名/ハッシュを生成するために使用されます。トークン化スクリプトで使用されているものと一致する必要があります。
トークン化された動画ファイルの参照と再生
Stream VOD動画ならびにStream Live動画の作成と編集方法についてはこちらとこちらをご確認ください。
[メディア]タブから、ファイル/ストリームの汎用URLに[xtok]プレフィックスを追加したものを対応するスロットに指定します。
RTMP:[xtok]rtmp://mymediaserver.com/vod/myfile.mp4
HTTP:[xtok]http://mymediaserver.com/vod/myfile.mp4
HLS:[xtok]http://mymediaserver.com:1935/vod/myfile.mp4/playlist.m3u8
RTSP(Live):[xtok]rtsp://mymediaserver.com/vod/myfile.mp4
標準動画の使用と統合
[一般設定>動画]で、対応するベースURLフォーミュラを追加することによって行われます。
Flashフォーミュラ
URLフォーミュラの先頭に"[xtok]"、extラベルの前に"mp4:"が付きます。
対応する品質(Flashスロット)に指定するURLフォーミュラは次のようになります。
[xtok]rtmp://mymediaserver.com/whatever_folder/mp4:{filename.ext}
HTML5フォーミュラ
URLの先頭に"[xtok]"が付きます。
対応する品質(HTML5またはFlashスロット)に指定するURLフォーミュラは次のようになります。
[xtok]https://mymediaserver.com/whatever_folder/{filename.ext}
ダウンロードが有効になっている動画の場合
[動画>メディア>動画ファイルダウンロード]の「ダウンロードメニューを表示」を[Yes:INTER-STREAMファイル]または[Yes:INTER-STREAMファイル + その他のファイル]に設定していて、HTML5画質フィールドが.mp4ファイルを参照している場合、システムはそれらのファイルに対応した、トークン化されたダウンロードURLを自動的に生成します。
HTML5画質フィールドで参照されているものとは異なるファイルへのリンクをダウンロードメニューに提示したい場合、これらのファイルにもトークン化されたURLが必要となります。
1.[動画>メディア>動画ファイルダウンロード]の「ダウンロードメニューを表示」で[Yes:その他のファイル]を選択します。
2. 手動でダウンロードリンクを追加します。
ダウンロードリンクはINTER-STREAMのトークン化URLジェネレータユーティリティを使用して生成する必要があります。
ユーティリティを実行するには、Webブラウザで次のURLを開きます。
http://(your_url)/index.php?go=ajax&do=genxtokenizerurl
注:赤い文字の部分はご自身のINTER-STERAMのルートアドレスに書き換えてください。
そしてファイルに対応する汎用URLを適用します。
例)
は、ユーティリティによって
と変換されます。
変換されたURLは[その他のファイル]フィールドに入力します。