リリースノート

CHANGE

後方互換性のない変更

UPDATE

後方互換性がある変更

ADD

後方互換性がある追加

FIX

バグ修正

2024.2.0-canary

メジャーアップデート

リリース予定:

2024 年 12 月 11 日

ハイライト

  • MP4 形式での録画アーカイブファイルの出力に対応しました

  • H.265 コーデックでの録画アーカイブファイルの出力に対応しました

  • 実験機的機能として転送フィルター機能で複数のフィルターを設定できるマルチ転送フィルター機能を追加しました

  • メッセージング機能のメッセージに送信先の connection_id をヘッダーとして付与する機能を追加しました

  • session.created の払い出しにセッションの同時接続数を制限する session-webhook-max_connections を追加しました

正式版

今回のリリースで以下の機能は実験的機能から正式版になりました。

破壊的変更

廃止情報

  • JoinCluster API を廃止しました

  • E2EE 機能を廃止しました

    • 将来的に Message Layer Security (MLS) を利用した E2EEの機能を提供予定です

    • ウェブフックに含まれる e2ee 項目は予約項目として常に false が含まれます

    • sora.conf から e2ee 項目を廃止しました

  • sora.conf の移行用の設定 legacy_auth_webhook_log 設定を廃止しました

  • sora.conf の移行用の設定 legacy_event_webhook_connection_destroyed_reason 設定を廃止しました

非推奨情報

  • 転送フィルターを認証成功時やセッション生成時の払い出しで指定できる forwarding_filter を非推奨にしました

    • 代わりに複数の転送フィルターを指定できる forwarding_filters をご利用ください

    • forwarding_filter は 2025 年 12 月リリース予定の Sora で廃止します

  • 転送フィルターをシグナリング接続時に指定できる signaling_forwarding_filter を非推奨にしました

  • session.vanished を非推奨にしました

    • 代わりに GetStatsReport API の total_ongoing_connections をご利用ください。

    • session.vanished は 2025 年 6 月リリース予定の Sora にて廃止します

  • RTP ストリーム停止/再開 API を非推奨にしました

変更履歴

  • [CHANGE] sora.conflegacy_recording のデフォルトを true から false に変更しました

  • [CHANGE] spotlight.focusedspotlight.unfocused イベントウェブフックの送信を行わない場合はログを書き込まないよう変更しました

  • [CHANGE] ウェブフックを送信を行わない (ignore) の設定した場合でも以下のウェブフックはログを出力するように変更しました

    • recording.started セッションウェブフック

    • session.updated セッションウェブフック

    • session.vanished セッションウェブフック

    • connection.failed イベントウェブフック

    • archive.started イベントウェブフック

    • recording.started イベントウェブフック

  • [CHANGE] sora.confdefault_h264_param_profile_level_id のデフォルト値を 42e01f から 42e02a へ変更しました

    • Chrome / Edge がデフォルト値を変更した事への追従です

  • [CHANGE] sora.conf の移行用の設定 legacy_auth_webhook_log 設定を廃止しました

  • [CHANGE] sora.conf の移行用の設定 legacy_event_webhook_connection_destroyed_reason 設定を廃止しました

  • [CHANGE] E2EE 機能を廃止しました

    • sora.confe2ee を廃止しました

    • ウェブフックに含まれる e2ee は常に false が含まれます

  • [UPDATE] ListConnections API の戻り値に node_name を追加しました

  • [UPDATE] ListChannelConnections API の戻り値に node_name を追加しました

  • [UPDATE] sora.confconnection_created_wait_timeout の最小値を 1 s から 0 s へ変更しました

    • 挙動確認などで意図的にエラーを発生させられるように変更しました

  • [UPDATE] テスト API がクラスターで利用できるようになりました

  • [ADD] "type": "offer" メッセージに audiovideo 関連項目を追加しました

    • audio は必ず含まれます

    • audio_codec_type はオプションで、 audiotrue の場合に含まれます

    • audio_bit_rate はオプションで、 audiotrue かつ audio_bit_rate が指定された場合に含まれます

    • video は必ず含まれます

    • video_codec_type はオプションで、 videotrue の場合に含まれます

    • video_bit_rate はオプションで、 videotrue の場合に含まれます

  • [ADD] サイマルキャスト機能の設定項目に scaleResolutionDownTo を追加しました

  • [ADD] connection.jsonlsimulcast_encodingssimulcast_codecs 項目を追加しました

    • simulcast のみ true の場合は simulcast_encodings を出力します

    • simulcastsimulcast_multicodectrue の場合は simulcast_codecs も出力します

  • [FIX] Safari Technology Preview や Chrome Canary で H.265 の配信ができない問題を修正しました

  • [FIX] コネクションの切断が発生しない録画失敗のログレベルを error から warning に修正しました

  • [FIX] ウェブフック送信時にボディを待つ時間に webhook_response_timeout が反映されていない問題を修正しました

  • [FIX] ウェブフック送信時に TCP コネクションの確立を待つ時間に webhook_connect_timeout が反映されていない問題を修正しました

  • [FIX] 録画ファイル書き込みに失敗するとクラッシュログが出力されることがある問題を修正しました

  • [FIX] GetStatsReport API のウェブフック統計情報はウェブフックを送信したときのみカウントされるように修正しました

  • [FIX] GetStatsReport API のウェブフック統計情報が正しくカウントされない問題を修正しました

    • total_ignored_session_webhook が実際よりも少なくカウントされていた問題を修正しました

    • audio-streaming.startedaudio-streaming.stopped のウェブフック統計情報が total_ignored_XXX_webhooktotal_successful_XXX_webhook の両方がカウントされていた問題を修正しました

  • [FIX] サイマルキャスト機能利用時に simulcast_encodingsactive を未指定だと接続が失敗する問題を修正しました

セッション単位での同時接続数制限機能

これは実験的機能です

認証ウェブフックでの接続制限はウェブフックが並列で送信されるため、厳密な同時接続制限ができませんでした。 この機能ではセッション単位での同時接続数を制限することで、厳密に同時接続制限ができるようになります。

この機能を利用することで認証に成功した場合でも、セッションに接続できない場合があります。 その場合は、クライアントには SERVICE-UNAVAILABLE が通知されます。

この機能は実験的機能のトライアル中です。 将来的にロール単位やクライアント ID 単位での接続制限機能などを加えていく予定です。

正式版と明確に区別するため trial_ を prefix として付与しています。

  • [ADD] session.created の払い出しにセッションの同時接続数を制限する trial_max_connections を追加しました

    • デフォルトは未指定で制限がない状態です

    • 指定できる範囲は 0..10000 です

    • trial_max_connections0 の場合は誰も接続することができなくなります

    • セッションが同時接続数制限に達した場合はクライアントに SERVICE-UNAVAILABLE を通知します

統計情報の追加

  • [ADD] GetStatsReport API に SRTP パケットの統計情報を追加しました

    • total_received_srtp

      • 受信した SRTP パケットの合計数

    • total_received_srtp_byte_size

      • 受信した SRTP パケットの合計バイト数

    • total_sent_srtp

      • 送信した SRTP パケットの合計数

    • total_sent_srtp_byte_size

      • 送信した SRTP パケットの合計バイト数

    • total_decrypted_srtp

      • 復号した SRTP パケットの合計数

    • total_decrypted_srtp_byte_size

      • 復号した SRTP パケットの合計バイト数

  • [ADD] GetStatsReport API に DataChannel で利用している SCTP パケットの統計情報を追加しました

    • total_received_sctp

      • DataChannel で受信した SCTP パケットの合計数

    • total_received_sctp_byte_size

      • DataChannel で受信した SCTP パケットの合計バイト数

    • total_sent_sctp

      • DataChannel で送信した SCTP パケットの合計数

    • total_sent_sctp_byte_size

      • DataChannel で送信した SCTP パケットの合計バイト数

  • [ADD] GetStatsReport API に無視されたウェブフックの統計情報を追加しました

    • total_ignored_session_webhook

      • 無視されたセッションウェブフックの合計数

    • total_ignored_event_webhook

      • 無視されたイベントウェブフックの合計数

    • total_ignored_stats_webhook

      • 無視された統計ウェブフックの合計数

Sora 側からのシグナリング切断時のクライアントへの通知改善

  • [CHANGE] WebSocket シグナリング利用時にメッセージサイズが大きすぎる場合の code4490 から 1009 に変更しました

    • メッセージサイズの最大は 5 MiB です

    • WebSocket の仕様に合わせました

  • [CHANGE] WebSocket シグナリング利用時に Sora 側からのクライアントへの通知を改善しました

    • 正常切断

      • code1000 です

      • reason には切断理由が含まれます

        • TYPE-DISCONNECT

        • DISCONNECTED-API

        • LIFETIME-EXPIRED

        • SESSION-DESTROYED

    • 異常切断

      • 異常が発生して Sora 側から切断した場合は code4490 が含まれます

      • reason には切断理由が含まれます

  • [ADD] sora.confdata_channel_signaling_close_message を追加しました

    • デフォルトは false です

    • true の場合は Sora からコネクションを切断する際、 DataChannel シグナリングが有効かつ、 ignore_disconnect_websockettrue な場合 signaling ラベルに "type": "close" メッセージを送信します

    • false の場合は今まで通り、 DataChannel を閉じます

    • "type": "close" メッセージには codereason が含まれます

    • 正常切断

      • 切断 API や期限切れで Sora 側から切断した場合は code1000 が含まれます

      • reason には切断理由が含まれます

        • LIFETIME-EXPIRED

        • SESSION-DESTROYED

        • DISCONNECTED-API

    • 異常切断

      • 異常が発生して Sora 側から切断した場合は code4490 が含まれます

      • reason には切断理由が含まれます

  • [ADD] sora.confsignaling_normal_close_reason を追加しました

    • デフォルトは true です

    • false を指定した場合、正常切断時の reason が空文字になります

    • false を指定した場合でも異常切断時は reason は含まれます

シグナリングエラーの改善

  • [ADD] sora.conf にレガシーシグナリングエラーを有効にする設定を追加しました legacy_signaling_error を追加しました

    • デフォルトは false です

    • この設定は移行用で 2025 年 6 月に廃止します

    • この設定は 2024.1.x までの Sora との後方互換性を維持するための機能です

    • false の場合は log/connection_created_wait_timeout にログが出力されなくなりました

    • false の場合は log/signaling_error.jsonl にシグナリングエラーログが出力されるようになりました

    • false の場合は connection.failed ウェブフックは 認証成功時 かつ connection.created が送信されていない場合のみ送信されるようになりました

    • false の場合は sora.jsonl に認証失敗ログが出力されなくなりました

    • false の場合は sora.jsonl にシグナリング失敗ログが出力されなくなりました

    • true の場合は今まで通り ignore_connection_failed_webhooktrue の場合、 event_webhook.jsonl にシグナリングログが出力されません

  • [CHANGE] クライアントに通知するエラーメッセージを変更しました

    • クライアントへ通知するエラーがあまりにもサーバーよりのメッセージが多く、混乱を招くため整理しました

    • Sora の内部的なエラーは INTERNAL-ERROR を通知するよう変更しました

      • 以下のメッセージはクライアントへは通知されなくなりました

      • SIGNALING-INTERNAL-ERROR

      • AUTH-WEBHOOK-RESPONSE-EMPTY-BODY

      • AUTH-WEBHOOK-RESPONSE-UNEXPECTED-STATUS-CODE

      • INVALID-AUTHZ-MEDIA

      • WHEP-INCOMPATIBLE-UPSTREAM-TRACK

      • DUPLICATED-CONNECTION-ID-ERROR

      • INVALID-SPOTLIGHT-NUMBER

      • DUPLICATED-CHANNEL-ID

      • UNMATCH-CODEC-TYPE-ERROR

    • Sora が一時的に利用できない場合は SERVICE-UNAVAILABLE を通知するように変更しました

      • 以下のメッセージはクライアントへは通知されなくなりました

      • EXCEED-MAX-CONNECTIONS

      • BLOCK-NEW-CONNECTION

      • BLOCK-NEW-SESSION

      • INVALID-MODE

    • Sora でタイムアウトが発生した場合は TIMEOUT を通知するように変更しました

      • 以下のメッセージはクライアントへは通知されなくなりました

      • CONNECTION-CREATED-WAIT-TIMEOUT-ERROR

      • CONNECT-WAIT-TIMEOUT-ERROR

      • ANSWER-TIMEOUT-ERROR

      • PONG-TIMEOUT-ERROR

    • シグナリングメッセージが不正な場合は INVALID-MESSAGE を通知するように変更しました

      • 以下のメッセージはクライアントへは通知されなくなりました

      • INVALID-JSON

      • INVALID-SIGNALING-TYPE

      • MISSING-TYPE

      • BAD-FINGERPRINT

      • TOO-LARGE-JSON

      • TOO-MANY-CANDIDATE

      • INVALID-VIDEO-FORMAT

      • FAILURE-SDP-PARSE

      • MISSING-ICE-SDP

      • INVALID-VIDEO-FORMAT

      • INVALID-AUDIO-FORMAT

      • FAILURE-JSON-DECODE

      • UNEXPECTED-SIGNALING-TYPE

      • UNKNOWN-AUDIO-CODEC-TYPE

      • INVALID-AUDIO-BIT-RATE

      • UNKNOWN-VIDEO-CODEC-TYPE

      • INVALID-VIDEO-BIT-RATE

録画機能

  • [CHANGE] 録画ファイル処理の開始に失敗した場合のログレベルを ERROR から WARNING に変更しました

  • [ADD] イベントウェブフック archive.*split-archive.* に項目を追加しました

    • split_only

      • 指定していない場合は false が入ってきます

    • format

      • mp4 または webm が含まれます

    • expire_time

      • 指定していない場合は項目が含まれません

    • expired_at

      • 指定していない場合は項目が含まれません

    • split_duration

      • 指定していない場合は項目が含まれません

MP4 録画機能

これは実験的機能です

MP4 形式での録画ファイル出力に対応しました。

  • [ADD] MP4 形式での録画に対応しました

  • [ADD] sora.confdefault_recording_format を追加しました

    • デフォルトは webm です

    • webmmp4 が指定できます

    • MP4 録画機能はレガシー録画機能では利用できません

  • [ADD] StartRecording API に format (オプション) を追加しました

    • format には webmmp4 が指定できます

    • format が未指定の場合は default_recording_format の値が利用されます

    • 映像コーデックが H.265 の場合 formatmp4 を指定しない場合、録画が行われません

  • [ADD] session.created の払い出しに recording_format を追加しました

    • recording_format には webmmp4 が指定できます

    • recording_format が未指定の場合は default_recording_format の値が利用されます

    • 映像コーデックが H.265 の場合 formatmp4 を指定しない場合、録画が行われません

  • [ADD] session.updatedrecordingformat を追加しました

    • "format": "webm" または "format": "mp4" が含まれるようになりました

  • [ADD] セッションウェブフック recording.*data.format を追加しました

    • "format": "webm" または "format": "mp4" が含まれるようになりました

  • [ADD] イベントウェブフック archive.*split-archive.*data.format を追加しました

    • "format": "webm" または "format": "mp4" が含まれるようになりました

H.265 録画機能

これは実験的機能です

H.265 コーデックでの録画機能に対応しました。

  • [ADD] H.265 録画機能に対応しました

    • H.265 は formatmp4 が設定されている場合のみ録画ができます

    • WebM 形式を設定した場合 H.265 の録画は行われません

    • H.265 録画機能はレガシー録画では利用できません

ICE コネクションステート変更のシグナリング通知

これは実験的機能です

ICE コネクションステートが変更した際、 同一チャネルに接続している自分を含むクライアント全員へ通知する仕組みを追加しました。

この機能を利用することで、 自分の ICE コネクションステートの変更を 同じセッションに参加している自分を含むクライアント全員 へ通知する事ができます。

他のシグナリング通知機能とは異なり、この設定は有効にした場合、 自分を含むチャネル参加者へ通知を行いますので注意してください。

用途としては 4 人で双方向のビデオ通話をしている際、 特定のクライアントが不安定だという事を知ったり、 1:50 の片方配信の際に配信者の通信状態を視聴者側が知ったりすることができるようになります。

通知されるタイミングは 4 種類あります。

  1. connected から checking になった時

  2. checking から connected になった時

  3. checking から disconnected になった時

  4. disconnected から checking になった時

  • [ADD] sora_confsignaling_notify_ice_connection_state を追加しました

    • デフォルトは false です

    • true に設定すると ICE コネクションステートが変更された際に、同一チャネルに接続しているクライアントへ通知します

    • true にするとチャネル参加時のシグナリング通知 connection.created の既存参加者の dataice_connection_state が含まれるようになります

  • [ADD] 認証成功時の払い出しに signaling_notify_ice_connection_state を追加しました

  • [ADD] ICE コネクションステートを強制的に変更し維持する LockIceConnectionState テスト API を追加しました

転送フィルター機能

  • [CHANGE] 認証成功時の転送フィルターの払い出しがエラーになった場合、接続が失敗するように変更しました

    • INTERNAL-ERROR エラーとなります

  • [CHANGE] セッション生成時の転送フィルターの払い出しがエラーになった場合、セッションを破棄するように変更しました

マルチ転送フィルター機能

これは実験的機能です

マルチ転送フィルター機能は 1 チャネルや 1 コネクションに対して 1 つしか指定できなかった転送フィルターを 名前と優先度を設定し、複数の転送フィルターを指定できるようにする機能です。

  • [ADD] 認証成功時の払い出しに複数の転送フィルターを設定できる forwarding_filters を追加しました

    • 既存の forwarding_filter は 2025 年 12 月リリース予定の Sora にて廃止します

  • [ADD] セッション生成時の払い出しに複数の転送フィルターを設定できる forwarding_filters を追加しました

    • forwarding_filter は 2025 年 12 月リリース予定の Sora にて廃止します

  • [ADD] sora.conf にシグナリング時に複数の転送フィルターを設定できる forwarding_filters を設定できるようになる signaling_forwarding_filters を追加しました

    • sora_config-signaling_forwarding_filter は 2025 年 12 月リリースの Sora にて廃止します

  • [ADD] 転送フィルター API ListForwardingFilters にチャネルの転送フィルターをリストで表示する channel_forwarding_filters を追加しました

    • 既存の channel_forwarding_filter は 2025 年 12 月リリース予定の Sora にて廃止します

  • [ADD] 転送フィルター API CreateChannelForwardingFilterCreateConnectionForwardingFilternamepriority を追加しました

  • [ADD] 転送フィルター API UpdateChannelForwardingFilterUpdateConnectionForwardingFilternamepriority を追加しました

  • [ADD] 転送フィルター API DeleteChannelForwardingFilterDeleteConnectionForwardingFiltername を追加しました

詳細は マルチ転送フィルター機能 をご確認ください。

OBS WHIP

  • [FIX] OBS WHIP で H.264 で一部のエンコーダーを利用した際、録画ファイルの映像が正常に記録されない問題を修正しました

  • [FIX] OBS WHIP で AV1 で録画できない問題を修正しました

メッセージングヘッダー機能

メッセージング機能において、 メッセージに Sora 側でヘッダーを追加する機能です。 sender_connection_id を追加できます。

  • [ADD] data_channels にメッセージングにヘッダーを追加する header 項目を新しく追加しました

    • ヘッダーを付与するかどうかはメッセージを受信する側が指定します

      • {"label": "#spam", "direction": "recvonly", "header": [{"type": "sender_connection_id"}]

      • この設定を行ったクライアントは #spam ラベルのメッセージは常に先頭 26 バイトに sender_connection_id が含まれるようになります

    • ヘッダーは Sora 側で付与します

    • header はオプションです

    • header には [{"type": "sender_connection_id"}] のように指定します

    • typesender_connection_id のみ指定可能です

      • sender_connection_id はメッセージングの送信元の connection_id です

      • 先頭 26 バイトが sender_connection_id になります

      • 将来的に指定できる type を増やして行く予定です

    • "type": "offer" 時の data_channelsheader が含まれる場合、 length 項目を追加します

      • lengthsender_connection_id の長さです

      • length の単位はバイトです

      • sender_connection_id の場合 length は 26 固定です

音声ストリーミングヘッダー機能

音声ストリーミング機能において、HTTP/2 経由で送信する音声パケットに Sora 側でヘッダーを追加する機能です。

  • [ADD] 音声ストリーミング機能利用時に sora.confaudio_streaming_header を追加しました

    • デフォルトは false です

    • true に設定すると音声パケットに Sora 側でヘッダーを追加します

    • ヘッダーのフォーマットは [Timestamp:64 bit, SequenceNumber:64 bit, Length:32 bit] です

    • timestamp は音声パケット送信時の UTC 時間マイクロ秒の整数です

      • RTP のタイムスタンプとは異なります

    • seq_num は音声パケットのシーケンス番号で、 1 から始まります

      • RTP のシーケンス番号とは異なります

    • length はヘッダーを除いた音声パケットの長さです

        ---
title: "音声ストリーミングヘッダーフォーマット"
---
packet-beta
0-63: "Timestamp"
64-127: "SeqNum"
128-159: "Length"
    

プレイアウト遅延機能

実験的機能です

プレイアウト遅延機能の仕様を変更しました。 今までは配信側に影響する設定でしたが、今回のリリースから視聴側に影響する設定に変更しました。

この変更により視聴側毎にプレイアウト遅延を指定できるようになりました。

  • [ADD] sendrecv と recvonly のロールに影響する設定に変更しました

    • sendonly には影響しません

  • [CHANGE] sora.confdefault_playout_delay_min_delay は視聴側のプレイアウト遅延の最小値のデフォルトを指定するように変更しました

    • デフォルトは未指定です

  • [CHANGE] sora.confdefault_playout_delay_max_delay は視聴側のプレイアウト遅延の最大値のデフォルトを指定するように変更しました

    • デフォルトは未指定です

  • [CHANGE] 認証成功時の払い出し playout_delay_min_delay は視聴側の最小値を指定するように変更しました

    • playout_delay_max_delay も一緒に指定する必要があります

  • [CHANGE] 認証成功時の払い出し playout_delay_max_delay は視聴側の最大値を指定するように変更しました

    • playout_delay_min_delay も一緒に指定する必要があります

詳細は プレイアウト遅延機能 をご確認ください。

テスト API

  • [UPDATE] テスト向け API の録画失敗を意図的に起こす FailArchive API をクラスターに対応しました

  • [UPDATE] テスト向け API のシグナリング通知を送信する SendSignalingNotify API をクラスターに対応しました

2024.1.3

バグフィックスアップデート

リリース:

2024 年 8 月 9 日

  • [FIX] 証明書の署名アルゴリズムに SHA1 が利用されている場合でも、許容するように変更しました

  • [FIX] クラスター機能利用時に、アフィニティが有効な場合でもまれにリレーが発生する場合がある問題を修正しました

  • [FIX] 転送フィルター機能利用時に、シグナリング通知の送信がまれに失敗する場合がある問題を修正しました

  • [FIX] イベントウェブフックやシグナリング通知の connection.created のチャネル接続数の値が、まれに実際の値よりも小さくなる場合がある問題を修正しました

  • [FIX] 録画機能利用時に、RTP のシーケンス番号が等しいが RTP ヘッダー拡張 abs-capture-time の値が異なるパケットが短期間に複数送られて来た場合に録画が失敗してしまう問題を修正しました

  • [FIX] 録画機能利用時に、一部の端末で RTP ヘッダー拡張 abs-capture-time に意図しない値が含まれると録画が失敗してしまう事があるため、 rtp_hdrext_abs_capture_time のデフォルトを false に変更しました

2024.1.1

バグフィックスアップデート

リリース:

2024 年 7 月 1 日

  • [FIX] 録画機能利用時、パケットのタイムスタンプに異常がある場合に発生する問題を修正しました

2024.1.0

メジャーアップデート

リリース:

2024 年 6 月 26 日

ハイライト

  • クラスターリレー機能を追加しました

    • いずれのノードからでも同一のチャネルに接続できるようになりました

  • クラスターアフィニティ機能を追加しました

    • リレー機能利用時に、特定のノードに同一セッションの接続を集約する仕組みを追加しました

    • この機能によりノード間通信を極力発生させないようにすることができます

  • ライセンスの同時接続数の合計を維持する機能を追加しました

    • ノードに障害が発生したとしても、クラスター全体の同時接続数を維持できるようになりました

  • テンポラリーノード機能を追加しました

    • クラスターの維持に影響しないノードを手軽に削除できるようになりました

  • OBS WHEP に対応しました

    • OBS の WHEP ソース機能を利用し Sora から映像を取得できるようになりました

    • 2024 年 12 月 現在、OBS 安定版では WHEP に対応していません

  • OBS WHIP/WHEP の TURN に対応しました

    • 2024 年 12 月 現在、OBS 安定版では TURN に対応していません

  • OBS WHIP/WHEP の H.265 (HEVC) に対応しました

    • 2024 年 12 月 現在、OBS 安定版では H.265 に対応していません

  • セッションとコネクションが破棄される時間を指定できるライフタイム機能を追加しました

    • セッションやコネクションで指定した時間が経過すると自動的に破棄されるようになりました

  • 複数のコーデックで、複数の画質が同時に配信できるサイマルキャストマルチコーデック機能を追加しました

    • 2024 年 12 月 現在、ブラウザでは利用できません

  • 音声トラックを削除した後に、再度音声トラックを追加した際に正常に録音されない問題に対応しました

    • Chrome/Edge の不具合により、今まで音声がずれて録画されてしまっていた問題を解決しました

    • Safari でも同様の不具合を確認していますが、本対応では解決できていません

正式版

今回のリリースで以下の機能は実験的機能から正式版になりました。

廃止情報

  • CentOS 7 向けパッケージの提供を終了しました

  • モード機能のイニシャルモードを廃止しました

  • 認証成功時に払い出す h264_profile_level_id を廃止しました

    • 代わりに "video_h264_params": {"profile_level_id": "<profile-level-id>"} を使用してください

  • sora.conf から default_h264_profile_level_id を廃止しました

  • 実験的機能として提供していた sora.confrtp_publish_worker_number を廃止しました

  • 実験的機能として提供していた Lyra を廃止しました

    • Opus 1.5 で Lyra 同様の低ビットレートが利用可能になったこと、Lyra が 2 年間更新がないことが廃止の理由です

  • sora.confcontact_node_name_list を廃止しました

  • sora.confcluster_auto_connect を廃止しました

    • クラスター機能の自動での再接続は常に有効になります

非推奨情報

  • Ubuntu 20.04 の提供を Sora 2024.1.x 系をもって終了します

    • Ubuntu 20.04 は 2025 年 4 月にサポートが終了します

  • multistream: false で利用するレガシーストリームを非推奨にしました

  • JoinCluster API を非推奨にしました

    • JoinCluster API は 2024 年 12 月リリース予定の Sora で廃止します

    • RegisterClusterNode API を利用してください

  • ListClusterNodes API の include_all_known_nodes 指定を非推奨にしました

    • include_all_known_nodes は 2024 年 12 月リリース予定の Sora で廃止します

    • 廃止後は include_all_known_nodes が常に true として動作するようになります

  • 統計エクスポーター機能を非推奨にしました

    • 統計エクスポーター機能は 2025 年 6 月リリース予定の Sora で廃止します

    • 統計ウェブフック を利用してください

  • ユーザエージェント統計を非推奨にしました

    • ユーザエージェント統計は 2025 年 6 月リリース予定の Sora で廃止します

    • RTC 統計情報を利用してください

  • ユーザエージェント統計 API を非推奨にしました

    • ユーザエージェント統計 API は 2025 年 6 月リリース予定の Sora で廃止します

    • RTC 統計情報 API を利用してください

破壊的変更

  • クラッシュを意図的に発生させるテスト用 Sora_20221221.GenerateCrashLog API を Sora_20380119.GenerateCrashLog に変更しました

  • イベントウェブフック connection.destroyedreason に含まれる値を変更しました

    • 2023.2.x までは disconnected_api_reason と同じ、または disconnected_api_reason が無ければ null が含まれていました

    • 2024.1.x からは normal / disconnected_api / session_destroyed / lifetime_expired が含まれるようになります

    • 2023.2.x までの設定を維持する移行用の設定 legacy_event_webhook_connection_destroyed_reason を追加しています

      • この移行用の設定 legacy_event_webhook_connection_destroyed_reason は 2024 年 12 月リリース予定の Sora にて廃止します

    • 詳細は 2023.2.x-to-2024.1.x-connection_destroyed_reason をご確認ください

  • 統計 API の RTP ヘッダー拡張の項目名のプレフィックスを rtp_hdr_ext から rtp_hdrext へ変更しました

  • TerminateSession API を非同期に変更しました

    • セッション破棄の確認は session.destroyed ウェブフックを利用してください

  • ライセンスチェックのタイミングを変更しました

    • 今までは WebSocket 接続時にライセンスチェックを行っていましたが、 "type": "connect" 時にチェックを行うように変更しました

      • WHIPWHEP については変更はありません

    • 詳細についてはサポートまでお問い合わせください

変更履歴

  • [CHANGE] シグナリング "type": "disconnect" 時に指定できる reason の最大値を 128 バイトに制限しました

  • [CHANGE] TerminateSession API を非同期に変更しました

    • セッション破棄の確認は session.destroyed ウェブフックを利用してください

  • [CHANGE] 統計 API の RTP ヘッダー拡張の項目名のプレフィックスを rtp_hdr_ext から rtp_hdrext へ変更しました

  • [CHANGE] モード機能のイニシャルモードを廃止しました

  • [CHANGE] 最大帯域幅指定で利用する SDP を b=TIASb=AS から b=TIAS のみに変更しました

  • [CHANGE] 帯域推定で利用する REMB で送信するビットレートを b=TIAS のみに変更したのに合わせて音声ビットレートを含めないようにしました

  • [CHANGE] 音声コーデック Lyra への対応を廃止しました

  • [CHANGE] SDP の msidappdata を UUIDv4 を BASE32 でエンコードした値から、 connection_id に メディアの種類を追加した値に変更しました

  • [UPDATE] 開発ツール を最新版に更新しました

  • [ADD] Ubuntu 24.04 x86_64 と arm64 版のパッケージ提供を開始しました

  • [ADD] connection.jsonl にコネクションを破棄した理由 destroyed_reason を追加しました

    • destroyed_reason には normal / disconnected_api / session_destroyed / lifetime_expired が含まれます

  • [ADD] sora.conf に VP9 利用時に RTP ヘッダー拡張 dependency_descriptor を払い出す rtp_hdrext_dependency_descriptor_vp9 を追加しました

    • デフォルトは false です

    • この設定を true した場合 Firefox で VP9 が利用できなくなります

  • [ADD] ListConnections API と ListChannelConnections API の戻り値に recording_block 項目を追加しました

  • [FIX] メッセージングオンリー機能利用時に multistream: true の指定を不要にしました

テスト機能

  • [CHANGE] クラッシュを意図的に発生させるテスト用 Sora_20221221.GenerateCrashLog API のバージョンを変更し Sora_20380119.GenerateCrashLog API に変更しました

    • 今後、テスト API はバージョンが全て 20380119 に固定されます

  • [ADD] シグナリング通知を送信するテスト用 SendSignalingNotify API を追加しました

スポットライト機能

  • [ADD] スポットライト機能利用時に、セッションウェブフック session.updatedsession.destroyedspotlight_number 項目が含まれるようにしました

  • [ADD] セッションウェブフック session.created 時に spotlight_number を払い出せるようにしました

    • spotlight_number には 1 から 8 までの値を指定できます

    • セッションウェブフックで spotlight_number を払い出した場合、シグナリング接続時や認証成功時の払い出しの spotlight_number と異なる場合はエラーとなります。

    • シグナリング時と認証成功時の spotlight_number 指定は非推奨になりました

  • [FIX] スポットライト機能利用時に同一セッションで spotlight_number が同時接続数 0 の場合にシグナリング接続時、または認証成功時払い出しで変更できてしまう問題を修正しました

    • セッション破棄までは ChangeSpotlightNumber API 以外ではスポットライト数を変更できないように修正しました

  • [FIX] スポットライト機能利用時に multistream: true の指定を不要にしました

レガシーストリームを非推奨化

今まで multistream: false で利用していた、レガシーストリーム(非マルチストリーム)を非推奨にしました。 レガシーストリームは 2025 年 6 月に廃止します。

  • [CHANGE] sora.conf にレガシーストリームを有効にする legacy_stream を追加しました

    • デフォルトは false です

    • レガシーストリームを利用する場合は true に設定してください

詳細は レガシーストリーム(非マルチストリーム)機能からマルチストリーム機能への移行 をご確認ください。

ウェブフック機能

  • [ADD] sora.conf に認証ウェブフック失敗時に auth_webhook.jsonl にのみログを出力する legacy_auth_webhook_log を追加しました

    • 2023.2.x までの挙動を維持する設定です

    • この設定は 2024 年 12 月リリース予定の Sora にて廃止します

    • デフォルトは false です

    • この設定を false にした場合、認証ウェブフックが失敗した際には auth_webhook_error.jsonl にログを出力します

      • auth_webhook.jsonl にはログを出力しません

    • この設定を true にした場合、認証ウェブフックが失敗した際には 2023.2.x までと同様に auth_webhook.jsonl にログを出力します

      • auth_webhook_error.jsonl にはログを出力しません

  • [ADD] sora.conf にウェブフックの接続確立タイムアウト時間を指定する webhook_connect_timeout を追加しました

    • 今までは固定の 600 s としていましたが、設定を追加するにあたりデフォルトを 30 s と変更しました

    • 範囲は 1 s から 600 s です

  • [ADD] 認証ウェブフックリクエストに Accept ヘッダーを追加しました

    • Accept ヘッダーに application/json が含まれます

  • [ADD] セッションウェブフックリクエストに Accept ヘッダーを追加しました

    • Accept ヘッダーに application/json が含まれます

  • [FIX] 認証ウェブフックでステータスコード 2XX で空ボディを受け取った際の不具合を修正しました

  • [FIX] 認証ウェブフックにシグナリング接続時の転送フィルターが含まれていない問題を修正しました

セッションウェブフック機能

  • [ADD] セッションウェブフック session.created の戻り値が正常では無い場合、エラーとしてセッションを破棄して、セッションウェブフック session.destroyed を送信する設定の session_created_response_validate_warning_as_errorsora.conf に追加しました

    • デフォルトは false です

    • false の場合はバリデーションに失敗した場合、デフォルト値が採用されそのまま処理は継続します

    • true の場合はバリデーションに失敗した場合、エラーとしてセッションを破棄します

      • セッションウェブフック session.destroyedreason には validate_error が含まれます

  • [ADD] セッションウェブフック session.created のウェブフック処理中に問題が発生した際に session.destroyedreasonwebhook_error が含まれるようになりました

  • [ADD] セッションウェブフックがエラーになった理由を、 session_webhook_error.jsonl ログに reason として出力するようにしました

  • [FIX] セッションウェブフックの戻り値の JSON が不正な場合に、センシティブデータの処理をしていた問題を修正しました

  • [FIX] セッションウェブフックの戻り値が JSON オブジェクトではない場合に処理が失敗していた問題を修正しました

録画アーカイブイベントウェブフック機能

  • [ADD] 録画アーカイブ失敗時のウェブフック archive.failedsplitsplit_onlysplit_index を含むようにしました

  • [FIX] 分割録画にもかかわらず、録画アーカイブ失敗時のウェブフック archive.failed に分割録画ファイルが含まれない問題を修正しました

    • 一括と分割録画の両方が有効な場合、 filenamefile_pathsplit_filenamesplit_file_path が含まれるようになります

    • 分割録画が有効な場合、 split_filenamesplit_file_path が含まれるようになります

    • 分割録画のみの場合、 filenamefile_path は含まれなくなります

  • [ADD] テスト向け API として録画失敗を意図的に起こす FailArchive API を追加しました

    • 録画が実行されている指定した client_id の録画を失敗させます

    • イベントウェブフックの録画失敗ウェブフック archive.failed を意図的に発生させることができます

イベントウェブフック connection.destroyed の reason の破壊的変更

  • [CHANGE] イベントウェブフック connection.destroyed に含まれる reason の変更を行いました

    • 今までは disconnected_api_reason と同様、コネクション切断系 API で指定した reason 値、または未指定の場合は null が含まれていましたが、 今回の変更で normal / disconnected_api / session_destroyed / lifetime_expired のいずれかが含まれるようになりました

    • normal は通常のコネクション破棄

    • disconnected_api はコネクション切断系 API でコネクション破棄

    • session_destroyed はセッションライフタイムによりセッションの期限が切れた、または TerminateSession API によってセッション強制破棄されたことでのコネクション破棄

    • lifetime_expired はコネクションライフタイムによりコネクションの期限が切れたことによるコネクション破棄

  • [ADD] sora.conf にイベントウェブフック connection.destroyed に含まれる reason の値を、 disconnected_api_reason に含まれる値と同じにする移行用の設定 legacy_event_webhook_connection_destroyed_reason を追加しました

    • デフォルトは false です

    • 設定を true にした場合、 disconnected_api_reason の項目が無い場合は null が含まれます

      • また、コネクションライフタイム機能で切断したか際の判断ができなくなります

    • この設定は 2024 年 12 月リリース予定の Sora にて廃止します

録画機能音ズレ問題の改善

この問題の改善はレガシー録画、セッション録画の両方で行っています。

Chrome / Edge 側のバグにより、録画機能利用時に replaceTrack などを利用して MediaStreamTrack を削除し、 一定時間経過後に新しく MediaStreamTrack を追加した際に、音声パケットに関連するタイムスタンプと NTP タイムスタンプが正しく出力されない問題あります。

この問題により Chrome / Edge では録音/録画したファイルにて音ズレが発生してしまう場合がありました。

今回、新しく利用できるようになった RTP ヘッダー拡張 abs-capture-timestamp を利用する事で、 音声タイムスタンプを実際の値に推測する機能を導入することでこの問題に対応しました。

この問題は Safari / Safari Technology Preview では RTP ヘッダー拡張 abs-capture-timestamp が音声パケットに含まれてこないため、 改善することができません。

  • [CHANGE] rtp_hdrext_abs_capture_time のデフォルトを true に変更しました

  • [FIX] RTP ヘッダー拡張録画機能の音声タイムスタンプの推測機能を利用し、Chromium ベースのブラウザで録音/録画を行った際、音ズレが発生する問題を修正しました

    • abs-capture-time が利用できない場合は今まで通り音ズレが発生する場合があります

OBS WHIP対応

これは実験的機能です

  • [CHANGE] ウェブフックの sora_client に含まれる typeOBS-Studio から OBS-Studio-WHIP に変更しました

    "sora_client": {
      "raw": "Mozilla/5.0 (OBS-Studio/30.1.0; Mac OS X; ja-JP)",
      "type": "OBS-Studio-WHIP",
      "version": "30.1.0",
      "environment": "environment":"Mozilla/5.0 (OBS-Studio/30.1.0; Mac OS X; ja-JP)"
    },
    
  • [ADD] sora.conf に OBS WHIP で TURN を利用する whip_turn を追加しました

    • この設定は OBS が正式に TURN へ対応したタイミングで廃止します

  • [ADD] OBS WHIP/WHEP で将来的に必須になる rtcp-mux-only に対応しました

  • [ADD] OBS WHIP で H.265 (HEVC) に対応しました

    • OBS 30.1 ではまだ WHIP での H.265 はサポートされていません

OBS WHEP 対応

これは実験的機能です

OBS での WebRTC/WHEP に対応しました。WebRTC で送られてくる音声と映像を WHEP ソースとして利用する事ができます。

  • [ADD] OBS WHEP に対応しました

    • Opus と H.264 の組み合わせのみ利用できます

    • WHEP での接続は複数の配信が発生したタイミングで切断されます

    • WHEP での接続は複数の配信が存在するチャネルには接続できません

    • OBS 30.1 ではまだ WHEP に対応していません

  • [ADD] sora.conf に OBS (WHEP) を有効にする whep を追加しました

  • [ADD] sora.conf に OBS WHEP の Bearer トークンを認証ウェブフックの metadata に対応させるキーを指定する whep_bearer_token_metadata_key を追加しました

    • OBS WHEP からの接続についても Bearer トークンを利用した認証機能が利用できます

    • デフォルトは未指定です

  • [ADD] WHEP 向けエンドポイント URL https://example.com/whep/<channel-id> を追加しました

  • [ADD] WHEP 向けリソース URL https://example.com/whep-resource/<channel-id>/<secret> を追加しました

    • PATCH と DELETE メソッドに対応しています

  • [ADD] WHEP を利用した際、認証ウェブフックに whep: true を追加しました

    • WHEP を利用していない接続の場合はこの項目は含まれません

  • [ADD] OBS WHEP で User-Agent として送られてくる情報を sora_client としてウェブフックで送信するようにしました

    • "raw": "Mozilla/5.0 (OBS-Studio/31.0.0; Mac OS X; ja-JP)"

    • "type": "OBS-Studio-WHEP"

    • "environment": "environment":"Mozilla/5.0 (OBS-Studio/31.0.0; Mac OS X; ja-JP)"

    • "version": "31.0.0"

  • [ADD] sora.conf に OBS WHEP で TURN を利用する whep_turn を追加しました

    • この設定は OBS が正式に TURN へ対応したタイミングで廃止します

詳細は OBS (WHEP) 対応機能 をご確認ください。

クラスター機能

これは実験的機能です

  • [UPDATE] ListClusterNodes API にライセンス情報を追加しました

    • license_type

    • license_serial_code

    • license_max_connections

  • [UPDATE] ListClusterNodes API にエラー情報を追加しました

    • ノードに接続ができなかった場合、そのノード情報に error を含めるようにしました

  • [CHANGE] 最大ノード数ライセンスと通常ライセンスが同一クラスターで混在できなくなりました

  • [CHANGE] sora.confcontact_node_name_list を廃止しました

  • [CHANGE] sora.confcluster_auto_reconnect を廃止しました

    • クラスター機能の自動での再接続は常に有効になります

  • [CHANGE] JoinCluster API の名前だけを変更した RegisterClusterNode API を追加しました

    • RegisterClusterNode API は JoinCluster API とまったく同じ動作をします

    • JoinCluster API は 2024 年 12 月にリリース予定の Sora で廃止します

  • [ADD] クラスター利用時に以下の API でクラスター全体の結果を返せる仕組みを追加しました

  • [FIX] InitCluster API で指定するノードが全て同一バージョンでは無い場合、エラーを返すように修正しました

クラスターテンポラリーノード機能

これは実験的機能です

クラスターの維持に影響しない一時的なノードを追加できるようになりました。 テンポラリーノードを利用する事でスケールアウト/スケールインが容易になります。

  • [ADD] sora.conf にテンポラリーノードとして利用する cluster_temporary_node を追加しました

    • デフォルトは false です

    • この設定は clustertrue の時のみ有効です

    • この機能は 最大ノード数ライセンス のみ有効です

    • テンポラリーノードはクラスター構成を維持するためのノードとしては認識されません

    • テンポラリーノードに障害が発生してもライセンスで決められた最大同時接続数の合計を維持する機能による接続数の維持は行われません

    • テンポラリーノードはクラスターへの登録には RegisterClusterNode API を利用してください

    • テンポラリーノードは停止時にクラスターから消去されます

    • テンポラリーノードを再起動した場合、クラスターには自動で参加しません。再度 RegisterClusterNode API を利用して登録してください

    • テンポラリーノードだけでクラスターを構築する事はできません

    • テンポラリーノードは PurgeClusterNode API でノードを消去することはできません

    • テンポラリーノードは InitCluster API で初期化することはできません

    • テンポラリーノードはクラスターの全てのノードが 2024.1.0 以降である必要があります

  • [UPDATE] ListClusterNodes API に temporary_node: <boolean> 項目を追加しました

詳細は テンポラリーノード機能 をご確認ください。

ライセンスで決められた最大同時接続数の合計を維持する機能

これは実験的機能です

クラスターのノードが離脱した際に、合計接続数を残りのノードで維持する機能を追加しました。

  • [ADD] クラスターでライセンスの同時接続数の合計を維持する機能を追加しました

    • この機能は clustertrue の場合にのみ有効です

    • この機能は 最大ノード数ライセンス のみ有効です

    • 同時接続数が 100 の 3 ノードのクラスターで動作させた場合に、 1 ノードが離脱した際、残りの 2 ノードが最大同時接続数が 150 に一時的に引き上げられ、合計での接続数を維持します その後、障害が発生していたノードが復旧した歳には、最大同時接続数は 100 に戻ります 100 を超えている接続は切断されたりはしません

詳細は ライセンスで決められた最大同時接続数の合計を維持する機能 をご確認ください。

クラスターリレー機能

これは実験的機能です

クラスター利用時に、複数のノードから同一チャネルに参加できる仕組みを追加しました。

  • [ADD] sora.conf にクラスター利用時に複数ノードから同一チャネルに接続できる機能を実現する cluster_relay の設定を追加しました

    • この機能は clustertrue の場合にのみ利用できます

    • デフォルトで true が設定されています

    • クラスターリレー機能は 最大ノード数ライセンス のみで利用できます

    • クラスターリレー機能は "multistream": false では利用できません

    • リレー機能はクラスターの全てのノードが 2024.1.0 以降である必要があります

    • 詳細は リレー機能 をご確認ください

  • [ADD] GetStatsReport API にクラスターリレー機能の統計情報を追加しました

    • この統計データは厳密なデータではないため、参考程度にご利用ください

    • ノードが削除された場合でも再起動するまでは統計情報は残り続けます

    • cluster_relay

      • [{"node_name": "sora-01@192.0.2.100", "total_sent_byte_size": 5000, "total_received_byte_size": 5000, ...]

    • node_name

      • 対象ノード名

    • total_sent_byte_size

      • 対象ノードへリレー機能で送信したバイト数の合計

    • total_received_byte_size

      • 対象ノードからリレー機能で受信したバイト数の合計

    • total_sent

      • 対象ノードからリレー機能で送信したパケット数の合計

    • total_received

      • 対象ノードからリレー機能で受信したパケット数の合計

  • [CHANGE] リレー機能利用時には認証が 2 回発生する場合があります

  • [CHANGE] リレー機能利用時には multistream と spotlight が既存セッションと異なる場合の挙動 の挙動が変わり、接続数が 0 の場合に multistreamspotlight の指定が既存セッションと異なる場合でもセッションが破棄されなくなります

    • この挙動は 2024 年 12 月リリースの Sora にてリレー機能を利用しない場合でも反映される予定です

詳細は リレー機能 をご確認ください。

クラスターリレー機能利用時のアフィニティ機能

これは実験的機能です

クラスターリレー機能利用時に一定の同時接続数まで特定のノードに同一セッションの接続を集約する機能を追加しました。

  • [ADD] sora.conf にリレー機能を利用する際に、アフィニティ機能(同一セッションへの接続を同一ノードに寄せる) かどうかを指定する default_cluster_affinity の設定を追加しました

    • デフォルトで true が設定されています

    • この機能は sora.confclustertrue の場合にのみ利用できます

    • この機能は sora.confcluster_relaytrue の場合にのみ利用できます

    • true の場合は一定数の接続までは特定のノードに接続を集約します

      • 同時接続数がライセンス最大値の場合はリダイレクトが発生します

    • false を指定すると、可能な限りリダイレクトをせずにそのノードでリレーが行われます

      • 同時接続数がライセンス最大値の場合はリダイレクトが発生します

  • [ADD] sora.conf にアフィニティを行う 1 ノード、1 セッションあたりの最大同時接続数を指定する cluster_affinity_threshold を追加しました

    • デフォルトは 10 です

    • 1 ノード、1 セッションあたりの同時接続数が cluster_affinity_threshold 未満のノードがあれば、同じノードに新規接続が割り振られます

  • [ADD] 認証成功時の払い出しで cluster_affinity の払い出し を払い出すことでコネクション単位でのアフィニティ機能を利用するかどうかを指定できる機能を追加しました

音声ストリーミング

音声ストリーミング機能のエラー処理を充実させました。

  • [ADD] audio_streaming_url に接続ができない場合、再接続を試みる機能を追加しました

  • [ADD] audio_streaming_url への接続を諦める機能を追加しました

    • 接続を諦めた場合、再接続を試みるには一度クライアントを切断する必要があります

  • [ADD] audio_streaming_url に接続ができない場合、再接続を試みる回数を指定する audio_streaming_max_retries を追加しました

    • 最大リトライ回数まで再接続を試みても接続ができない場合は接続を諦めます

    • デフォルトは 0 です

    • 0 にした場合は常に再接続を試みます

    • 0..10 の間で指定できます

  • [ADD] audio_streaming_url に接続ができない場合、再接続を試みる間隔を指定する audio_streaming_retry_interval を追加しました

    • デフォルトは 5 s です

    • 0 にした場合は音声パケットが送られてきたタイミングで再接続を試みます

    • 0..60 s の間で指定できます

  • [ADD] audio_streaming_url からステータスコード 5xx が返ってきた場合、再接続を試みる機能を追加しました

  • [ADD] audio_streaming_url への接続を諦めた際、イベントウェブフック audio-streaming.failed を送信する機能を追加しました

    • 諦めるのはコネクション単位のため、イベントウェブフックを送信します

    • このウェブフックは ignore_audio_streaming_webhook の影響は受けません

  • [ADD] イベントウェブフック audio-streaming.failed を送信しない設定 ignore_audio_streaming_failed_webhook を追加しました

    • デフォルトは true です

    • true にした場合は audio-streaming.failed イベントウェブフックを送信しません

  • [ADD] audio_streaming_url から "type": "error" が含まれる JSON が送られてきた際、音声ストリーミングサーバーへの接続を諦める機能を追加しました

  • [ADD] audio_streaming_url への接続を諦めた際、セッションに参加している全てのコネクションにシグナリング通知 audio-streaming.failed を送信する機能を追加しました

  • [FIX] 音声ストリーミング audio-streaming.started のウェブフック処理中にエラーになった場合、セッションが破棄されてしまう問題を修正しました

統計ウェブフック機能

実験的機能です

統計エクスポーター に変わる、 統計ウェブフック機能 を追加しました。

  • [ADD] sora.conf に統計ウェブフックの送信先を指定する stats_webhook_url を追加しました

  • [ADD] sora.conf に統計ウェブフックログを出力するかどうかを指定する stats_webhook_log を追加しました

    • デフォルト false です

    • デフォルトではログを出力しません。ログを出力したい場合は true に設定してください

  • [ADD] sora.conf に統計ウェブフック type: connection.rtc を無視するかどうかを指定する ignore_connection_rtc_webhook を追加しました

    • デフォルト false です

  • [ADD] sora.confstats_webhook_worker_number を追加しました

  • [ADD] 統計ウェブフックにクライアントの RTC 統計情報を送信する type: connection.rtc を追加しました

    • これは統計エクスポーターの "type": "connection.user-agent" と同じデータをウェブフックとしてリクエストを送信します

    • 統計エクスポーターでは HTTP/2 を利用して送信していましたが、統計ウェブフックは HTTP/1.1 で送信します

  • [ADD] GetStatsReport API に統計ウェブフックの成功数の項目 total_successful_stats_webhook を追加しました

  • [ADD] GetStatsReport API に統計ウェブフックの失敗数の項目 total_failed_stats_webhook を追加しました

詳細は 統計ウェブフック機能 をご確認ください。

RTC 統計 (ユーザエージェント機能)

統計ウェブフック機能追加に伴い、ユーザーエージェント統計から RTC 統計へ名前を変更します。 ユーザエージェント機能は 2025 年 6 月リリース予定の Sora で廃止します。

  • [ADD] sora.conf に RTC 統計機能をデフォルトを指定する default_rtc_stats を追加しました

    • デフォルトは true です

    • true の場合、 Sora はクライアントへ RTC 統計の送信を要求します

  • [ADD] 認証成功時の払い出しに rtc_stats の払い出し を追加しました

  • [ADD] ListRtcStats API を追加しました

  • [ADD] ListChannelRtcStats API を追加しました

  • [ADD] GetRtcStats API を追加しました

  • [ADD] 実験的機能として sora.confrtc_stats_log を追加しました

    • デフォルトで false です

    • rtc_stats 項目個別に rtc_stats.jsonl にログを出力します

  • [FIX] ユーザーエージェント統計情報の認証成功時払い出し指定が無視されていた問題を修正しました

  • [FIX] ユーザーエージェント統計情報の GetUserAgentStats の戻り値の statsuser_agent_stats に修正しました

セッションライフタイム機能

実験的機能です

セッションに対してライフタイム (破棄されるまでの時間) を設定する機能を追加しました。

  • [ADD] セッションのライフタイムをセッションウェブフック session.created の戻り値で session_lifetime を指定できるようになりました

    • で指定してください

    • 最大 2,592,000 秒 (30 日) まで指定できます

    • セッション生成後に変更することはできません

    • session_lifetime が未指定の場合は 無制限 です

    • session.destroyedreasonlifetime_expired が入ります

    • connection.destroyedreasonsession_destroyed が入ります

    • セッションのライフタイムが終了すると、セッションが破棄され切断します

    • セッションのライフタイムが終了すると、セッションウェブフック session.destroyed が送信されます

コネクションライフタイム機能

実験的機能です

コネクションに対してライフタイム (破棄されるまでの時間) を設定する機能を追加しました。

  • [ADD] コネクションのライフタイムを認証ウェブフックの払い出しで connection_lifetime の払い出し を指定できるようになりました

    • で指定してください

    • 最大 2,592,000 秒 (30 日) まで指定できます

    • コネクション生成後に変更することはできません

    • connection_lifetime が未指定の場合は 無制限 です

    • connection.destroyedreasonlifetime_expired が入ります

    • コネクションのライフタイムが終了すると、コネクションが破棄され切断します

    • コネクションのライフタイムが終了すると、コネクションウェブフック connection.destroyed が送信されます

    • コネクションのライフタイムよりセッションのライフタイムが優先されます

サイマルキャストマルチコーデック機能

実験的機能です

一つのサイマルキャストで複数のコーデックを利用する事ができる、サイマルキャストマルチコーデックを追加しました。

  • [ADD] 複数の映像コーデックを同時に配信するサイマルキャストマルチコーデック機能に対応しました

    • サイマルキャストマルチコーデックの配信に対応した SDK のみで利用できます

      • 2024 年 12 月 時点で以下の SDK が実験的に対応しています

      • Sora C SDK

      • Sora C++ SDK

    • ブラウザを利用した場合、サイマルキャストマルチコーデック機能を利用して配信することはできません、視聴側は利用できます

  • [ADD] sora.conf にてサイマルキャストコーデック機能を有効にするするかどうかを指定する simulcast_multicodec を追加しました

    • デフォルトは false です

    • simulcast_multicodectrue に設定するとサイマルキャストマルチコーデック機能が利用可能になります

  • [ADD] シグナリング接続時に "simulcast_multicodec" 項目を追加しました

    • "simulcast_multicodec": true を指定する際には "simulcast": true を指定する必要があります

  • [ADD] 認証ウェブフックに "simulcast_multicodec" 項目を追加しました

    • simulcasttrue かつ simulcast_multicodectrue の時のみ含まれます

  • [ADD] 認証成功時の払い出しで simulcast_multicodec を払い出した場合、サイマルキャストマルチコーデックを利用できるようになりました

    • sora.conf にて simulcast_multicodectrue に指定されている必要があります

    • "simulcast": true が指定されている必要があります

  • [ADD] 認証成功時の払い出しで simulcast_codecs を指定できるようになりました

  • [ADD] sora.conf にてサイマルキャストのデフォルトコーデックを設定する simulcast_codecs_file を指定できるようになりました

  • [ADD] イベントウェブフック connection.{created, updated, destroyed} に simulcast_multicodec 項目を追加しました

    • simulcasttrue かつ simulcast_multicodectrue の時のみ含まれます

  • [ADD] コネクションログに simulcast_multicodec 項目を追加しました

    • 項目は必ず含まれます

  • [ADD] "type": "offer" 時に simulcast_multicodec 項目を追加しました

    • 項目は必ず含まれます

詳細は サイマルキャストマルチコーデック をご確認ください。

H.264/H.265 B-frame 対応

実験的機能です

実験的機能として H.264 と H.265 の B-frame 向けの RTP ヘッダー拡張 に対応しました。

B-frame 向けの RTP ヘッダー拡張に対応している場合、 H.264/H.265 で B-frame を利用した配信/視聴が行えるようになります。

B フレームの録画には対応していません。

  • [ADD] H.264 と H.264 で B-frame を利用する RTP ヘッダー拡張に対応しました

  • [ADD] sora.conf に H.264 で B-frame を利用するかどうかを指定する h264_b_frame を追加しました

    • デフォルトは false です

  • [ADD] sora.conf に H.265 で B-frame を利用するかどうかを指定する h265_b_frame を追加しました

    • デフォルトは false です

  • [ADD] シグナリング type: connect 時に H.264 で B-frame を利用するかどうかを指定する h264_params: {"b_frame": true} を追加しました

    • デフォルトは false です

    • sora.conf にて h264_b_frametrue に指定されている必要があります

    • sora.conf にて signaling_h264_paramstrue に指定されている必要があります

  • [ADD] シグナリング type: connect 時に H.265 で B-frame を利用するかどうかを指定する h265_params: {"b_frame": true} を追加しました

    • デフォルトは false です

    • sora.conf にて h265_b_frametrue に指定されている必要があります

    • sora.conf にて signaling_h265_paramstrue に指定されている必要があります

  • [ADD] ウェブフックの video_h264_paramsb_frame を追加しました

    • sora.confh264_b_frametrue に指定されていない場合は b_frame は含まれません

  • [ADD] ウェブフックの video_h265_paramsb_frame を追加しました

    • sora.confh264_b_frametrue に指定されていない場合は b_frame は含まれません

  • [ADD] 認証成功時の払い出しで video_h264_paramsb_frame を追加しました

    • デフォルトは false です

    • 接続時や払い出し時に未指定の場合はデフォルトの false が利用されます

  • [ADD] 認証成功時の払い出しで video_h265_paramsb_frame を追加しました

    • デフォルトは false です

    • 接続時や払い出し時に未指定の場合はデフォルトの false が利用されます

プレイアウト遅延機能

実験的機能です

プレイアウト遅延機能を追加しました。

プレイアウト遅延機能を利用することでフレームをどれくらい速くレンダリングする必要があるかを配信毎に指定できます。

  • [CHANGE] sora.conf の RTP ヘッダー拡張 playout-delay を利用するかどうかを指定する rtp_hdrext_playout_delay のデフォルトを true に変更しました

  • [ADD] sora.conf にプレイアウト遅延の最小値のデフォルトを指定する default_playout_delay_min_delay を追加しました

  • [ADD] sora.conf にプレイアウト遅延の最大値のデフォルトを指定する default_playout_delay_max_delay を追加しました

  • [ADD] 認証成功時の払い出しでプレイアウト遅延の最小値を指定する playout_delay_min_delay を追加しました

    • playout_delay_max_delay も一緒に指定する必要があります

  • [ADD] 認証成功時の払い出しでプレイアウト遅延の最大値を指定する playout_delay_max_delay を追加しました

    • playout_delay_min_delay も一緒に指定する必要があります

詳細は プレイアウト遅延機能 をご確認ください。

メディア配信ワーカー

実験的機能です

配信ワーカー機能をメディア配信ワーカー機能に変更しました。

  • [UPDATE] スポットライト機能をメディア配信ワーカーで利用できるようになりました

  • [CHANGE] sora.confrtp_publish_worker_numbermedia_publish_worker_number に変更しました

WebSocket シグナリング時の HTTP ヘッダーを認証ウェブフックにコピーする機能

実験的機能です

  • [ADD] sora.conf に WebSocket シグナリング接続時の HTTP ヘッダーを認証ウェブフックのヘッダーにコピーする copy_websocket_signaling_header_names を追加しました

    • デフォルトは未指定です

    • 大文字小文字は区別されません

    • copy_websocket_signaling_header_names = X-Forwarded-For, X-Real-IP, Tracestate のように指定してください

  • [ADD] 認証ウェブフックログ auth_webhook.jsonlcopy_headers 項目を追加しました

    • 認証ウェブフックにコピーされたヘッダーを出力します

© Copyright 2024, Shiguredo Inc Created using Sphinx 8.1.3