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
クライアントが接続するマルチストリームのWebRTCチャンネルを作成します。 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変換のときのトランスコードの設定です。アダプティブビットレートにするには配列で複数個指定します。durationSecondsstartTimeOffsetEXT-X-START:TIME-OFFSETパラメータを指定します。TIME-OFFSETの値は、符号付き10進の浮動小数点数の秒数です。正の数は、プレイリストの先頭からの時間オフセットを示します。負の数は、プレイリストの最後のメディアセグメントの終わりからの負の時間オフセットを示します。推奨値は -2 です。videowidthheightfpsbpscodecaudiobpsarchivearchive_destination_idencrypt_key_uriauth_webhook_url, event_webhook_urlと少し似ていますが、encrypt_key_uriの末尾はURI(ユー・アール・アイ)です。auth_webhook_urlevent_webhook_urlenvironment0が通常環境を、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プロファイルです。
有効な値は以下の通りです。
"h264_high": H264のHighプロファイル"h264_main": H264のMainプロファイル"h264_baseline": H264のBaselineプロファイル{
"channel_id": "<channel_id>",
"sora_url": "wss://live-soraXXX.imageflux.jp/signaling"
}
channel_idsora_urlマルチストリームのチャンネルの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://px-XXXXXXxx.imageflux.jp/XXXX/XXXXXXXX.m3u8"
}
配信開始した後に数秒待ってからImageFlux_20200207.ListPlaylistURLs を使用してHLSのプレイリストURLの一覧を取得してください。早すぎた場合にはその配信の情報が一覧にまだ含まれません。
クライアントが接続するマルチストリームのWebRTCチャンネルを作成します。 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_urlevent_webhook_urlenvironmentImageFlux_20200316.CreateMultistreamChannelWithHLSを参照してください。{
"channel_id": "<channel_id>",
"sora_url": "wss://live-soraXXX.imageflux.jp/signaling",
}
channel_idsora_urlクライアントが接続するRTMPチャンネルを作成します。 HLS変換を行います。
{
"hls": [
{
"durationSeconds": 2,
"startTimeOffset": -2,
"video": {
"width": 640,
"height": 360,
"fps": 30,
"bps": 1000000
},
"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"
}
hls HLS変換のときのトランスコードの設定です。アダプティブビットレートにするには配列で複数個指定します。durationSeconds2 です。startTimeOffsetEXT-X-START:TIME-OFFSETパラメータを指定します。TIME-OFFSETの値は、符号付き10進の浮動小数点数の秒数です。正の数は、プレイリストの先頭からの時間オフセットを示します。負の数は、プレイリストの最後のメディアセグメントの終わりからの負の時間オフセットを示します。推奨値は 2 です。video (省略可能/省略時は音声出力のみ)widthheightfpsbpscodecaudio (省略可能/省略時は映像出力のみ)bpsarchive (省略可能/省略時はアーカイブなし)archive_destination_idImageFlux_20190205.CreateArchiveDestination (アーカイブ保存先登録)APIで作成します。encrypt_key_uri (省略可能/省略時は暗号化なし)auth_webhook_url, event_webhook_urlと少し似ていますが、encrypt_key_uriの末尾はURI(ユー・アール・アイ)です。auth_webhook_url (省略可能/省略時は接続認証なし(すべての接続を許可))event_webhook_url (省略可能/省略時はイベントWebhook送信なし)以下の値以外が指定された場合、指定されたビットレートを超えない最大の値が選択されます。
| ビットレート | 値 |
|---|---|
| 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プロファイルです。
有効な値は以下の通りです。
"h264_high": H264のHighプロファイル"h264_main": H264のMainプロファイル"h264_baseline": H264のBaselineプロファイル{
"channel_id": "<channel_id>",
"ingest_url": "rtmp://live-rtmpXXX.imageflux.jp/live/<channel_id>",
"hls_url": "https://px-XXXXXXXX.imageflux.jp/XXXX/XXXXXXXX.m3u8"
}
channel_idingest_urlhls_urlリクエスト中に auth_webhook_url が存在しその値が空文字列でない場合、クライアントからのRTMP接続時に、その値で示されたURLに対して認証可否の判断を求めるリクエストを送信します。
この場合、リクエストに成功し、かつ、所定のレスポンスが得られた場合に限り、クライアントからのRTMP接続を許可・確立します。
{
"channel_id": "<channel_id>",
"connection_id": "<connection_id>",
"timestamp": "2026-03-17T03:34:56.123456Z",
"label": "ImageFlux RTMP",
"role": "rtmp_relay",
"audio": true,
"audio_bit_rate": 160,
"audio_codec_type": "AAC",
"video": true,
"video_bit_rate": 2500,
"video_codec_type": "H264"
}
channel_idconnection_idtimestamplabelImageFlux RTMProlertmp_relayversionaudioaudio_bit_rateaudio_codec_typevideovideo_bit_ratevideo_codec_type認証を許可する場合は以下のレスポンスを送信してください。
{
"allow": true
}
認証を許可しない場合は以下のレスポンスを送信してください。
{
"allow": false,
"reason": "<reason>"
}
allowreasonリクエスト中に event_webhook_url が存在しその値が空文字列でない場合、クライアントからの接続が確立したとき・接続が切断されたとき・接続が1分以上継続したとき、の各タイミングでその値で示されたURLに対してその旨を通知するリクエストを送信します。
{
"type": "connection.updated",
"channel_id": "<channel_id>",
"connection_id": "<connection_id>",
"timestamp": "2026-03-17T03:46:56.123456Z",
"label": "ImageFlux RTMP",
"role": "rtmp_relay",
"audio": true,
"audio_bit_rate": 160,
"audio_codec_type": "AAC",
"video": true,
"video_bit_rate": 2500,
"video_codec_type": "H264",
"created_time": 1773718496,
"created_timestamp": "2026-03-17T03:34:56.123456Z",
"minutes": 12,
"total_received_bytes": 1474568342,
"total_sent_bytes": 1474568342
}
type"connection.created""connection.updated""connection.destroyed"channel_idconnection_idtimestamplabel"ImageFlux RTMP"role"rtmp_relay"versionaudioaudio_bit_rateaudio_codec_typevideovideo_bit_ratevideo_codec_typecreated_timecreated_timestampminutestotal_received_bytestotal_sent_bytesイベントWebhookに対してはレスポンスbodyは不要です。
指定したWebRTCまたはRTMPチャンネルにある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_idconnection_idplaylist_url指定したWebRTCまたはRTMPチャンネルを削除します。 チャンネルに接続しているクライアントは強制的に切断され、HLSの生成も終了します。 以降はこのチャンネルを使用しての接続はできません。
{
"channel_id": "<channel_id>"
}
channel_id作成済みのWebRTCまたはRTMPチャンネルのチャンネルIDの一覧を取得します。 不要になったchannelはDeleteChannel APIで削除してください。
{}
{
"channel_ids": [
"<channel_id>"
...
]
}
channel_idsアーカイブ保存先を新たに作成します。
{
"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>"
}
bucket_uris3:// スキームを用いて s3://<my-bucket-name>/<path>/ のように入力します。gs:// スキームを用いて gs://<my-bucket-name>/<path> のように入力します。azblob:// スキームを用いて azblob://<my-container-name>/<path> のように入力します。aws_end_pointaws_regionaws_access_key_idaws_secret_access_keygcp_credential_jsonazure_accountazure_key{
"archive_destination_id": "<archive_destination_id>"
}
archive_destination_id作成されているアーカイブ保存先を削除します。
{
"archive_destination_id": "<archive_destination_id>"
}
archive_destination_idアーカイブ保存先の一覧を取得します。
{}
{
"archive_destinations": [
{
"archive_destination_id": "<archive_destination_id>",
"bucket_uri": "<bucket_uri>"
},...
]
}
WebRTCチャンネルの場合、以下のSoraのAPIを利用できます。 詳細はSoraのAPIドキュメントを参照してください。
自分のアクセストークンで作成された channel_id 以外は指定できません。
実験的APIについては、将来の互換性が保証されていません。 また、非推奨APIについては、今後のSoraのバージョンアップにより廃止されることが決定しています。 いずれもその旨を確認・理解したうえでの利用をお願いします。
Sora_20151104.DisconnectChannelSora_20151104.DisconnectClientSora_20151104.DisconnectConnectionSora_20201120.DisconnectChannelByRoleSora_20201013.ListChannelConnectionsSora_20201005.RequestRtpStreamSora_20201005.ResetRtpStreamSora_20200807.FocusSpotlightFixedSora_20200807.FocusSpotlightSora_20200807.UnfocusSpotlightSora_20200807.ChangeSpotlightNumberSora_20160711.PushChannelSora_20160711.PushClientSora_20160711.PushConnectionSora_20201120.PushChannelByRoleSora_20170529.GetStatsClientSora_20170529.GetStatsConnectionSora_20190327.ChangeUpstreamVideoBitRateSora_20201124.ListSignalingNotifyMetadataSora_20201124.GetSignalingNotifyMetadataSora_20201124.PutSignalingNotifyMetadataSora_20201124.DeleteSignalingNotifyMetadataSora_20201124.PutSignalingNotifyMetadataItemSora_20201124.DeleteSignalingNotifyMetadataItemSora_20200401.PauseRtpStreamSora_20200401.ResumeRtpStreamSora_20200401.ListPauseRtpStreams