AWSの配信を実施するIVS。
ユーザー認証をtokenを使用して実施できるので、今回はpythonを利用したtokenの生成を行います。
ドキュメントはこちら。
・再生トークンの生成と署名
https://docs.aws.amazon.com/ja_jp/ivs/latest/userguide/private-channels-generate-tokens.html
pythonでのtokenの生成
プログラムは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import datetime import jwt ## 有効期限を設定。ここでは1日有効なキー。 expires = datetime.datetime.utcnow() + datetime.timedelta(days=+1) ## IVSチャンネルのarn arn = "arn:aws:ivs:ap-northeast-1:xxxxxxxx:channel/xxxxxxxxxx" ## 「aws:access-control-allow-origin」ではプレイヤーを置くS3バケットを指定して接続元を指定できるが、 ## 今回は接続を制限しない。 payload = { "aws:channel-arn": arn, "aws:access-control-allow-origin": "*", "exp": int(expires.timestamp()) } ## 管理コンソールで設定したキーファイルのパス key_file = "/tmp/private-key.pem" secret = open(key_file, 'r').read() ## jwsでtokenを生成 token = jwt.encode(payload, secret, algorithm='ES384') ## 以下をチャンネルの再生URLに「?token=」で接続してtokenをセットすると接続できる print(token) |
こちらで生成されたtokenを利用すれば認証を行なってIVSの接続をすることができます。
非常に簡易に配信環境の構築が実施できます。
safariなどで直接「再生 URL」とtokenを繋げた形で接続しても良いですし、以下のようなhtmlを使ってplayerとして実装しても大丈夫です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<html> <head> <title>IVS Video Sample</title> </head> <body> <script src="https://player.live-video.net/1.13.0/amazon-ivs-player.min.js"></script> <video width="600px" id="video-player" playsinline></video> <script> const video_url = "https://XXX.ap-northeast-1.playback.live-video.net/api/video/v1/ap-northeast-XXXXX.channel.XXXX.m3u8"; const token = "eyJ0eXAiOiJKV1QiLXXXXXXXXXX"; const PLAYBACK_URL = video_url + "?token=" + token; if (IVSPlayer.isPlayerSupported) { const player = IVSPlayer.create(); player.attachHTMLVideoElement(document.getElementById('video-player')); player.load(PLAYBACK_URL); player.play(); } </script> </body> </html> |
Playerのドキュメントは以下になります。
https://docs.aws.amazon.com/ja_jp/ivs/latest/userguide/player-web.html
Playerを利用して接続を行う方が遅延が少なくなるようです。