ImageFlux Live StreamingのAPIは最新のWebRTC SFU Sora APIと互換性を保っています。 対応するWebRTC SFU Soraのバージョンは更新履歴をご確認ください。
APIの仕様は次の通りです。
https://live-api.imageflux.jp/
です。/
です。X-Sora-Target
ヘッダで指定します。curl
コマンドを使ってリクエストする場合は次のようになります。
curl -H "Content-Type: application/json" \
-H "X-Sora-Target: ImageFlux_20200316.CreateMultistreamChannelWithHLS" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d '{
"hls": [
{
"durationSeconds": 1,
"startTimeOffset": -2,
"video": {
"width": 640,
"height": 480,
"fps": 30,
"bps": 1000000
},
"audio": {
"bps": 64000
}
}
]
}' https://live-api.imageflux.jp/
すべてのAPIはAuthorizationヘッダのBearerトークンを利用して認証します。
$ACCESS_TOKEN
はAPIトークン管理画面で確認できます。また、同画面で新規にLive Streaming権限を持つアクセストークンも発行可能です。
なお、トークンはエンコード済みのものをご利用ください。
Authorization: Bearer $ACCESS_TOKEN
クライアントが接続するマルチストリームのチャンネルを作成します。 HLS変換を行います。
{
"hls": [
{
"durationSeconds": 1,
"startTimeOffset": -2,
"video": {
"width": 640,
"height": 480,
"fps": 12,
"bps": 2465792
},
"audio": {
"bps": 64000
},
"archive": {
"archive_destination_id": "<archive_destination_id>"
}
}
],
"encrypt_key_uri": "https://example.com/api/encrypt_key_uri",
"auth_webhook_url": "https://example.com/api/auth_webhook_url",
"event_webhook_url": "https://example.com/api/event_webhook_url",
"environment": 0
}
hls
HLS変換のときのトランスコードの設定です。アダプティブビットレートにするには配列で複数個指定します。durationSeconds
startTimeOffset
EXT-X-START:TIME-OFFSET
パラメータを指定します。TIME-OFFSET
の値は、符号付き10進の浮動小数点数の秒数です。正の数は、プレイリストの先頭からの時間オフセットを示します。負の数は、プレイリストの最後のメディアセグメントの終わりからの負の時間オフセットを示します。推奨値は -2
です。video
width
height
fps
bps
codec
audio
bps
archive
archive_destination_id
encrypt_key_uri
auth_webhook_url
, event_webhook_url
と少し似ていますが、encrypt_key_uri
の末尾はURI(ユー・アール・アイ)です。auth_webhook_url
event_webhook_url
environment
0
が通常環境を、1
が検証環境を意味します。0
が指定されたとみなされます。以下の値以外が指定された場合、指定されたビットレートを超えない最大の値が選択されます。
ビットレート | 値 |
---|---|
32 kbps | 32000 |
40 kbps | 40000 |
48 kbps | 48000 |
56 kbps | 56000 |
64 kbps | 64000 |
80 kbps | 80000 |
(デフォルト) 96 kbps | 96000 |
112 kbps | 112000 |
128 kbps | 128000 |
160 kbps | 160000 |
192 kbps | 192000 |
224 kbps | 224000 |
256 kbps | 256000 |
320 kbps | 320000 |
H264のHighプロファイル、Mainプロファイル、Baselineプロファイルを指定できます。デフォルトはHighプロファイルです。
有効な値は以下の通りです。
{
"channel_id": "<channel_id>",
"sora_url": "wss://XXXXXXXX.imageflux.jp/signaling"
}
channel_id
マルチストリームのチャンネルのHLS変換ではHLSのプレイリストURLは配信開始後に決まります。 それを取得するのに2つの方法があります。
チャンネルの作成時にイベントWebhookを登録してください。
HLSのプレイリストURLが利用可能になったとき"type": "notify.playlist_url"
のイベントで通知されます。
その際、イベントの内容は以下のようになります。
{
"channel_id": "<channel_id>",
"connection_id": "<connection_id>",
"timestamp": "2020-01-02T12:34:56.12345Z",
"type": "notify.playlist_url",
"playlist_url": "https://XXXXXXXX.imageflux.jp/XXXX/XXXXXXXX.m3u8"
}
配信開始した後に数秒待ってからImageFlux_20200207.ListPlaylistURLs
を使用してHLSのプレイリストURLの一覧を取得してください。早すぎた場合にはその配信の情報が一覧にまだ含まれません。
クライアントが接続するマルチストリームのチャンネルを作成します。 HLS変換は行いません。
{
"auth_webhook_url": "https://example.com/api/auth_webhook_url",
"event_webhook_url": "https://example.com/api/event_webhook_url",
"environment": 0
}
auth_webhook_url
event_webhook_url
environment
ImageFlux_20200316.CreateMultistreamChannelWithHLS
を参照してください。{
"channel_id": "<channel_id>",
"sora_url": "wss://XXXXXXXX.imageflux.jp/signaling",
}
channel_id
このAPIは近日中に廃止します。ImageFlux_20200316.CreateMultistreamChannel
またはImageFlux_20200316.CreateMultistreamChannelWithHLS
への移行をお願いします。
クライアントが接続するシングルストリームのチャンネルを作成します。 HLS変換を行います。
RequestはImageFlux_20200316.CreateMultistreamChannelWithHLS
のものと同じです。
{
"channel_id": "<channel_id>",
"sora_url": "wss://XXXXXXXX.imageflux.jp/signaling",
"playlist_url": "https://XXXXXXXX.imageflux.jp/XXXX/XXXXXXXX.m3u8"
}
channel_id
ImageFlux_20200316.CreateMultistreamChannelWithHLS
の場合と同様です。
指定したチャンネルにあるHLSのプレイリストURLの一覧を取得します。
{
"channel_id": "<channel_id>"
}
channel_id
{
"channel_id": "<channel_id>",
"hls": [
{
"connection_id": "<connection_id>",
"playlist_url": "https://XXXXXXXX.imageflux.jp/XXXX/XXXXXXXX.m3u8"
},...
]
}
channel_id
connection_id
指定したチャンネルを削除します。 チャンネルに接続しているクライアントは強制的に切断され、HLSの生成も終了します。 以降はこのチャンネルを使用しての接続はできません。
{
"channel_id": "<channel_id>"
}
channel_id
作成済みのチャンネルのchannel_id
の一覧を取得します。
不要になったchannelはDeleteChannel APIで削除してください。
{}
{
"channel_ids": [
"<channel_id>"
...
]
}
channel_id
の配列アーカイブ保存先を新たに作成します。
{
"bucket_uri": "<bucket_uri>",
"aws_end_point": "<aws_end_point>",
"aws_region": "<aws_region>",
"aws_access_key_id": "<aws_access_key_id>",
"aws_secret_access_key": "<aws_secret_access_key>",
"gcp_credential_json": "<gcp_credential_json>",
"azure_account": "<azure_account>",
"azure_key": "<azure_key>"
}
s3://
スキームを用いて s3://<my-bucket-name>/<path>/
のように入力します。gs://
スキームを用いて gs://<my-bucket-name>/<path>
のように入力します。azblob://
スキームを用いて azblob://<my-container-name>/<path>
のように入力します。{
"archive_destination_id": "<archive_destination_id>"
}
作成されているアーカイブ保存先を削除します。
{
"archive_destination_id": "<archive_destination_id>"
}
アーカイブ保存先の一覧を取得します。
{}
{
"archive_destinations": [
{
"archive_destination_id": "<archive_destination_id>",
"bucket_uri": "<bucket_uri>"
},...
]
}
以下のSoraのAPIを利用できます。 詳細はSoraのAPIドキュメントを参照してください。
自分のアクセストークンで作成された channel_id
以外は指定できません。
(非推奨)
とついているものは廃止予定のAPIです。