リリースノート

CHANGE

後方互換性のない変更

UPDATE

後方互換性がある変更

ADD

後方互換性がある追加

FIX

バグ修正

2024.1.0-canary

メジャーアップデート

リリース予定:

2024 年 6 月 26 日

ハイライト

  • クラスターリレー機能によりクラスター構築時に、どのノードからでも同一のチャネルに接続できるようになりました

  • クラスターリレー機能利用時に、特定のノードに同一セッションの接続を集約するアフィニティ機能を追加しました

  • クラスター機能利用時にノードが離脱した際、残りのノードでライセンスの同時接続数の合計を維持する機能を追加しました

  • クラスター機能利用時にクラスターの維持に影響しないテンポラリーノード機能を追加しました

  • OBS WHEP に対応しました

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

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

  • Chrome/Edge のバグにより音声トラックを削除した後、追加した際に正常に録音されない問題に対応しました

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

  • サイマルキャストマルチコーデック機能を追加しました

  • H.264/H.265 (HEVC) の B-frame 機能に対応しました

正式版

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

廃止情報

  • 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 を非推奨にしました

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

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

    • 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 / lifetime_expired が含まれるようになります

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

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

    • 詳細は connection.destroyed の reason に破壊的変更を行いました をご確認ください

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

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

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

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

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

変更履歴

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • デフォルトは false です

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

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

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

レガシーストリームの非推奨

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

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

    • デフォルトは false です

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

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

セッションウェブフック

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

  • [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 / lifetime_expired のどれかが含まれるようになりました

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

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

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

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

    • デフォルトは false です

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

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

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

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

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

Chromium 側のバグにより、 replaceTrack などを利用して MediaStreamTrack を削除し、 一定時間経過後に新しく追加した際、音声のタイムスタンプが正しく出力されない問題あります。

この問題により Chromium ベースのブラウザでは録音/録画したファイルにて音ズレが発生していました。

今回新しく利用可能になった 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.x ではまだ WHIP での H.265 はサポートされていません

OBS WHEP 対応

これは実験的機能です

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

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

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

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

    • 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 としてウェブフックで送信するようにしました

    "sora_client": {
      "raw": "Mozilla/5.0 (OBS-Studio/31.0.0; Mac OS X; ja-JP)",
      "type": "OBS-Studio-WHEP",
      "version": "31.0.0",
      "environment": "environment":"Mozilla/5.0 (OBS-Studio/31.0.0; Mac OS X; ja-JP)"
    },
    
  • [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] 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 でクラスター全体の結果を返せる仕組みを追加しました

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

これは実験的機能です

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

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

    • デフォルトは false です

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

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

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

    • テンポラリーノードはクラスターへ一時的に登録されます

    • テンポラリーノードは離脱時にクラスターから削除されます

    • テンポラリーノードをクラスターから削除する場合、 PurgeClusterNode API の実行をする必要がありません

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

    • テンポラリーノードはクラスターを構築する初期ノードになることはできません

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

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

クラスター機能有効時の合計接続数維持機能

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

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

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

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

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

詳細は 合計接続数維持機能 をご確認ください。

クラスターリレー機能

これは実験的機能です

クラスター利用時に、一定以上の接続になったタイミングで別ノードからの接続を許可する仕組みを追加しました。

  • [ADD] sora.conf にクラスター利用時にどのノードからも特定のチャネルに接続できるリレー機能を利用する cluster_relay の設定を追加しました

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

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

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

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

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

  • [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

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

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

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

これは実験的機能です

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

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

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

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

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

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

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

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

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

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

  • [ADD] sora.conf にアフィニティを行う最大の接続数を指定する cluster_affinity_connections を追加しました

    • デフォルトは 100 です

    • ノードでのセッション同時接続数が cluster_affinity_connections 未満のノードがあれば、そこに新規接続が割り振られます

音声ストリーミング

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

  • [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 を送信する機能を追加しました

  • [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 を送信する機能を追加しました

{
  "type": "notify",
  "event_type": "audio-streaming.failed",
  "failed_connection_id": "<connection_id>"
}

統計ウェブフック機能

実験的機能です

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

  • [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 で送信します

RTC 統計

統計ウェブフック機能追加に伴い、ユーザーエージェント統計から RTC 統計へ名前を変更します。

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

    • デフォルトは true です

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

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

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

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

  • [ADD] 実験的機能として``sora.conf`` に rtc_stats_log を追加しました

    • デフォルトで false です

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

ユーザエージェント機能は 2024 年 12 月リリース予定の Sora で廃止されます。

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

実験的機能です

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

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

    • で指定してください

    • 最大 2_592_000 秒 (30 日) まで指定できます

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

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

    • session.destroyedreasonlifetime_expired が入ります

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

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

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

実験的機能です

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

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

    • で指定してください

    • 最大 2_592_000 秒 (30 日) まで指定できます

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

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

    • connection.destroyedreasonlifetime_expired が入ります

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

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

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

サイマルキャストマルチコーデック対応

実験的機能です

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

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

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

      • 2024 年 6 月 時点で以下の 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 を利用した配信/視聴が行えるようになります。

  • [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 に変更しました

2023.2.7

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

リリース:

2024-04-24

  • [FIX] レガシー録画機能または録画機能(セッション単位)利用時の録画停止処理中に、新規コネクションが参加した際に、そのコネクションが切断されるまで、録画停止処理が完了しない問題を修正しました

  • [FIX] レガシー録画機能にて録画停止処理中に録画の開始および StopRecording API 実行した際 RECORDING-INTERNAL-ERROR が返されていたのを STOPPING-RECORDING を返すように修正しました

  • [FIX] クラスター有効時に、ごく稀にノード起動に失敗することがある問題を修正しました

2023.2.5

ホットフィックスアップデート

リリース:

2024-03-08

  • [FIX] 録画機能で録画中、出力済の分割録画ファイルのファイルディスクリプタを掴み続ける問題を修正しました

2023.2.4

ホットフィックスアップデート

重要

このリリースはクラスターをご利用いただいているお客様にのみ提供しております。

リリース:

2024-02-27

  • [FIX] クラスター利用時にでリーダーノードがダウンした場合に、他のノードのセッションも終了してしまう問題を修正しました

2023.2.3

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

リリース:

2024-02-07

  • [FIX] "multistream": false を指定して接続した場合に、配信/視聴ができない問題を修正しました

  • [FIX] セッションウェブフックが一部の HTTP サーバーで正常に処理できず、エラーになる問題を修正しました

  • [FIX] データチャネルの終了時にクライアント側でワーニングが出力される問題を修正しました

2023.2.2

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

リリース:

2024-01-04

変更履歴

  • [FIX] sora.confevent_webhook_url が未指定の状態で録画を開始した場合、セッションが破棄されない問題を修正しました

  • [FIX] ウェブフックで mTLS 利用時に、特定の条件下でクライアント証明書を送らなくなる問題を修正しました

    • ウェブフックで HTTPS を利用する場合は TLS 1.2 のみを利用するように変更しました

  • [FIX] ウェブフックで mTLS 利用時に、 CA 証明書が指定されていない場合に OS 組み込みの証明書を利用できない問題を修正しました

  • [FIX] 統計エクスポーターで mTLS 利用時に、 CA 証明書が指定されていない場合に OS 組み込みの証明書を利用できない問題を修正しました

  • [FIX] 音声ストリーミングで mTLS 利用時に、 CA 証明書が指定されていない場合に OS 組み込みの証明書を利用できない問題を修正しました

  • [FIX] API ログの書き込みに失敗した場合でも、 API の処理を中断しないように修正しました

  • [FIX] PurgeClusterNode API の API ログ操作名が LeaveCluster となっていたのを PurgeClusterNode に修正しました

  • [FIX] クラスターに参加済のノードが、別クラスターに対する JoinCluster API を受け入れてしまう問題を修正しました

  • [FIX] 録画機能で大幅にパケットの到着が遅れている場合、分割録画に失敗することがある問題を修正しました

2023.2.0

メジャーアップデート

リリース:

2023-12-20

ハイライト

  • セッション単位で録画する新しい録画機能を追加しました

    • 今までの録画機能は レガシー録画機能 と名前を変更しました

    • レガシー録画機能と新しい録画機能は別チャネルであれば同時に利用することができます

    • レガシー録画機能は 2025 年 12 月リリース予定の Sora にて廃止されます

    • 詳細は 録画機能 (セッション単位) をご確認ください

  • 接続単位で録画をブロックできる機能を追加しました

    • 今まではチャネルに参加している全ての接続が録画されていましたが、新しい録画機能では接続単位で録画をブロックできるようになりました

    • 新しい録画機能でのみ利用できます

  • より大規模な配信を可能にする配信ワーカー機能を追加しました

    • 今まで音声や映像をクライアントに配信するワーカーは 1 つでしたが、配信するワーカーを複数にすることで、より多くのユーザーに配信することができるようになりました

  • データチャネルの負荷を下げるために SCTP パケットのチェックサム計算を省略する機能を追加しました

    • 利用するにはクライアント側もチェックサム計算を省略する機能に対応している必要があります

  • ウェブフックで IPv6 アドレスが利用できるようになりました

  • ウェブフックなどでルート CA 証明書に OS 組み込みのものを利用するようにしました

正式版

廃止情報

破壊的変更

変更履歴

  • [CHANGE] ウェブフックなどで利用するルート CA 証明書に OS 組み込みのものを利用するように変更しました

  • [UPDATE] DataChannel を利用したメッセージングのみで接続する場合に rolesendrecv 以外でも接続ができるようになりました

  • [ADD] シグナリング "type": "offer"channel_idsession_id を追加しました

  • [ADD] connection.jsonlice_connection_state に ICE コネクションステート checkingdisconnected だった時間を追加しました

  • [ADD] Sora が利用している Erlang VM の設定を追加できる環境変数 SORA_ADDITIONAL_ERL_ARGS を追加しました

  • [ADD] 認証成功時の払い出しに検証用の RTP パケットロスシミュレーターの設定値、 rtp_packet_loss_simulator_incomingrtp_packet_loss_simulator_outgoing が指定できるようになりました

  • [ADD] sora.jsonlinternal.jsonl に UUIDv4 を Base32 でエンコードしたユニークな ID を含めるようにしました

    • "id": "base32(uuidv4)"

  • [FIX] データチャネルで利用する SCTP のストリーム ID 採番を RFC 8832 に準拠させました

  • [FIX] 録画機能で H.264 利用時に送られてくる分割ペイロードが壊れている場合は処理をスキップするように修正しました

OBS WHIP

これは実験的機能です

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

    "sora_client": {
      "raw": "Mozilla/5.0 (OBS-Studio/30.0.0; Mac OS X; ja-JP)",
      "type": "OBS-Studio",
      "version": "30.0.0",
      "environment": "environment":"Mozilla/5.0 (OBS-Studio/30.0.0; Mac OS X; ja-JP)"
    },
    
  • [ADD] OBS WHIP で AV1 が動作するようにしました

    • OBS WHIP で AV1 を配信する仕組みは 2024 年 6 月 現在、 OBS には組み込まれていません

転送フィルター機能

これは実験的機能です

転送フィルターに versionmetadata が指定できるようになりました。

version を指定することで、転送フィルターの更新 API が並列で実行されても期待した値に変更することができるようになりました。

  • [ADD] 転送フィルターに version を設定できるようになりました

  • [ADD] 転送フィルターに metadata を設定できるようになりました

  • [ADD] 転送フィルター API CreateChannelForwardingFilterCreateConnectionForwardingFilterversion を指定できるようになりました

  • [ADD] 転送フィルター API CreateChannelForwardingFilterUpdateChannelForwardingFiltermetadata を指定できるようになりました

  • [ADD] 転送フィルター API CreateConnectionForwardingFilterUpdateConnectionForwardingFiltermetadata を指定できるようになりました

  • [ADD] 転送フィルター API UpdateChannelForwardingFilterUpdateConnectionForwardingFilter API に指定した expected_version が既存の version と一致していない場合は更新エラーになるようになりました

    • expected_version が既存のバージョンと一致した場合のみ desired_version で指定した値で version の値を更新します

  • [ADD] セッションウェブフックの戻り値に versionmetadata を指定できるようになりました

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

  • [ADD] シグナリング時に versionmetadata を指定できるようになりました

セッション API

  • [ADD] 指定したセッションを取得する GetSession API を追加しました

    • channel_id を指定してセッションを取得します

  • [ADD] セッション一覧を取得する ListSessions API を追加しました

    • 全てのセッション一覧を取得します

録画機能

  • [ADD] sora.conf に単一録画ファイルと分割録画ファイルの両方を出力する機能を有効にするかどうかを指定する recording_dual_output を追加しました

    • デフォルトは true です

    • false に指定した場合は 単一録画ファイルと分割録画ファイルの両方が出力 のパターンを指定できなくなります

  • [ADD] sora.conf に録画期限の最大値を指定する recording_max_expire_time を追加しました

    • デフォルトは 86400 s です

    • 設定できる最大値は 86400 s です

    • レガシー録画機能では一括録画と一括&分割録画で expire_time が指定できます

    • 新しい録画機能(セッション単位)では一括録画、分割録画、一括&分割録画で expire_time が指定できます

  • [ADD] sora.conf に分割録画時の分割時間の最大値を指定する recording_max_split_duration を追加しました

    • デフォルトは 86400 s です

    • 設定できる最大値は 86400 s です

  • [ADD] sora.conf に一括録画を含む場合に録画期限の設定を要求する recording_expire_time_required を追加しました

    • この設定は一括録画時に録画ファイルが大きくなりすぎるのを防ぐための設定です

    • デフォルトは false です

    • この設定を true にした場合、一括録画を含む場合に expire_time が必須になります

    • この設定を true にした場合、レガシー録画機能では expire_time0 以外の値を指定する必要があります

    • この設定を true にした場合、新しい録画機能(セッション単位)では expire_time の値を指定する必要があります

    • この設定を true にした場合でも分割録画のみの場合は expire_time は必須になりません

新しい録画機能 (セッション単位)

今までの録画機能は レガシー録画機能 と名前を変更しました。

レガシー録画機能と新しい録画機能は別チャネルであれば同時に利用することができます。

  • [ADD] sora.conf にレガシー録画を有効にするかどうか指定する legacy_recording を追加しました

    • デフォルトは true です

    • false にした場合、レガシー録画機能が利用できなくなります

    • この設定は移行用の設定で、 2025 年 12 月リリース予定の Sora にて廃止されます。

  • [ADD] セッションウェブフック session.created 時に "recording": true を指定することで録画を開始します

  • [ADD] セッションウェブフック session.created 時に "recording_expire_time" を指定することができるようになりました

    • セッション破棄時に録画は自動で終了します

    • セッション破棄前に期限が来た場合はそこで録画は終了します

  • [ADD] セッションウェブフック session.created 時に "recording_split_duration" を指定することができるようになりました

  • [ADD] セッションウェブフック session.created 時に "recording_split_only" を指定することができるようになりました

  • [ADD] セッションウェブフック session.created 時に "recording_metadata" を指定することができるようになりました

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

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

  • [ADD] 新しい録画用の StartRecording API を追加しました

    • セッション破棄時に自動で録画は終了します

    • expire_time がオプションになっています

    • expire_time デフォルトは未定義です

  • [ADD] 新しい録画用の StopRecording API を追加しました

詳細については 録画機能 (セッション単位) をご確認ください。

移行については レガシー録画機能から新しい録画機能 (セッション単位) への移行 をご確認ください。

新しい録画機能 (セッション単位) における接続単位の録画ブロック機能

これは実験的機能です

この機能は新しい録画機能 (セッション単位) でのみ利用できます。レガシー録画機能では利用できません

  • [ADD] 認証成功時に "recording_block": true を払い出すことで、その接続の録画をブロックし、録画ファイルの出力を拒否できるようになりました

    • これは録画が有効になっていない場合に払い出しても問題ありません

    • この値を途中で変更することはできません

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

    • 認証成功時に "recording_block": true を払い出していれば true に、それ以外は false になります

シグナリング通知メタデータ

sora.confsignaling_notify_metadatafalse にした際の挙動を変更しました。

外部への HTTP リクエストに HTTP ヘッダーを追加

ウェブフックや統計エクスポーター、音声ストリーミングを利用した際の外部への HTTP リクエストに、 x-sora- prefix とは別に sora- prefix の HTTP ヘッダーを追加しました。

これは RFC 6648 による x- prefix の非推奨化に準拠するためです。

今後 x-sora- prefix は非推奨になります。 現時点で具体的な時期は決まっていませんが、将来的に 1 年以上の移行期間を設けて廃止する予定です。

  • [ADD] セッションウェブフックに sora-session-webhook-type ヘッダーを追加しました

    • すでにある x-sora-session-webhook-type ヘッダーは将来的に廃止予定です

  • [ADD] イベントウェブフックに sora-event-webhook-type ヘッダーを追加しました

    • すでにある x-sora-event-webhook-type ヘッダーは将来的に廃止予定です

  • [ADD] 統計エクスポーターに sora-stats-exporter-type ヘッダーを追加しました

    • すでにある x-sora-stats-exporter-type ヘッダーは将来的に廃止予定です

  • [ADD] セッションウェブフックに sora-session-id ヘッダーを追加しました

  • [ADD] イベントウェブフックに sora-connection-id ヘッダーを追加しました

  • [ADD] イベントウェブフックに sora-session-id ヘッダーを追加しました

ウェブフック

  • [CHANGE] セッションウェブフック audio-streaming.startedmax_connectionstotal_connections が含まれなくなりました

  • [CHANGE] セッションウェブフック audio-streaming.stoppedmax_connectionstotal_connections が含まれなくなりました

  • [CHANGE] クラスター機能利用時のセッションウェブフック session.destroyedconnections が含まれなくなりました

  • [ADD] sora.conf にウェブフックで IPv6 利用する webhook_ipv6 を追加しました

    • デフォルトは false です

    • この設定を有効にしない限りウェブフックで IPv6 は利用できません

  • [ADD] sora.conf にイベントウェブフック connection.updated の送信間隔を変更する connection_updated_webhook_interval を追加しました

    • デフォルトは 1 min です

    • 最小は 1 min です

    • 最大は 10 min です

    • 時間単位は min のみが指定できます

  • [ADD] sora.conf に 録画イベントウェブフック split-archive.available を送信しないようにする ignore_split_archive_available_webhook を追加しました

    • デフォルトは false です

  • [ADD] 接続イベントウェブフック connection.{created, updated, destroyed} に ICE コネクションステートが checkingdisconnected だった時間の項目を追加しました

    • data.ice_connection_state.total_checking_duration_mschecking だった合計時間(ミリ秒)が入ります

    • data.ice_connection_state.total_disconnected_duration_msdisconnected だった合計時間(ミリ秒)が入ります

  • [ADD] 認証ウェブフックに spotlight_focus_ridspotlight_unfocus_rid を追加しました

    • spotlighttrue の時だけ追加されます

  • [ADD] 接続イベントウェブフック connection.{created, updated, destroyed} に ICE コネクションステートの checkingdisconnected の時間を通知する項目を追加しました

    • ice_connection_state 項目を追加しました

    • ice_connection_statetotal_checking_duration_mschecking だった合計時間(ミリ秒)が入ります

    • ice_connection_statetotal_disconnected_duration_msdisconnected だった合計時間(ミリ秒)が入ります

    "data": {
      "ice_connection_state": {
        "total_checking_duration_ms": 0,
        "total-disconnected_duration_ms": 0
      }
    }
    
  • [ADD] セッションウェブフック session.updated を追加しました

    • クラスターが有効時には connections は含まれません

    • 録画機能 (セッション単位) 有効時に recording 項目が含まれます

  • [ADD] セッションウェブフック session.destroyedreason が含まれるようになりました

    • reason には以下が含まれます

      • normal

        • 正常終了

      • terminated_api

      • abort

        • 異常終了

  • [ADD] sora.conf にセッションウェブフック session.updated を送信しないようにする ignore_session_updated_webhook を追加しました

    • デフォルトは false です

  • [ADD] sora.conf にセッションウェブフック session.updated の送信間隔を変更する session_updated_webhook_interval を追加しました

    • デフォルトは 1 min です

    • 最小は 1 min です

    • 最大は 10 min です

    • 時間単位は min のみが指定できます

  • [FIX] 認証ウェブフックで simulcast_ridspotlighttrue の場合は追加しないようにしました

    • simulcasttrue かつ spotlightfalse の時だけ追加されます

データチャネル

  • [ADD] データチャネルの SCTP のパケットのチェックサム計算を省略する仕組みを追加しました

    • データチャネルは DTLS レイヤーでデータ保護が行われているため、 SCTP のチェックサムは追加の整合性を得ることができないため省略することができます

    • クライアント側もチェックサム計算を省略する機能に対応している必要があります

    • データチャネル利用時の CPU リソースがクライアント、SFU ともに節約されます

    • https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-sctp-zero-checksum

  • [ADD] SCTP のチェックサムを省略した回数の統計情報を追加しました

    • total_received_sctp_zero_checksum

    • total_sent_sctp_zero_checksum

クラスター機能

これは実験的機能です

Sora 2023.1.x で構築されているクラスターは Sora 2023.2.x へローリングアップデートで移行できます。

警告

2023.2.x から 2023.1.x へのローリングアップデートは行えません。クラスターを再構築する必要があります。

  • [CHANGE] クラスター関連のログは cluster.jsonl に出力するよう変更しました

  • [ADD] 最新のバージョンと 1 世代前のバージョンの Sora ノードが混在する状態でのクラスター運用ができるようになりました

    • 全てのクラスターに参加するノードが同じバージョンになるまでは 1 世代前のバージョンと混在できる仕組みを追加しました

    • Sora 2023.2.x2023.1.x で、特定のノードのアップデートが難しい場合でも、先に他のノードをアップデートすることができるようになります

    • クラスターに 1 世代前のバージョンのノードが混在している場合、新しい接続は全て古いバージョンのクラスターの仕組みを利用します

    • 全てのノードが新しいバージョンのクラスターになったタイミングで、新しいバージョンのクラスターの仕組みを利用しはじめます

詳細については クラスター機能 をご確認ください。

注釈

InitCluster API でクラスターを初期化する際には、新旧バージョンは混在させないでください。また Sora 2023.2.x で構成されたクラスターに JoinCluster API で Sora 2023.1.x のノードを参加させることはできません。

メディア配信ワーカー機能

これは実験的機能です

メディア配信ワーカー機能は音声や映像を配信するワーカーを複数用意することで、 1 チャネルで高ビットレートの映像をより多くのクライアントに配信することができるようになります。

  • [ADD] sora.conf に音声や映像の 1 配信に利用するメディア配信ワーカー数を指定する media_publish_worker_number を追加しました

    • デフォルトのメディア配信ワーカー数は 1 です

    • 同時に 100 クライアント以上へ配信する場合はまず 10 を設定することを推奨します

    • ワーカー数が 10 であれば 1 チャネル 1000 クライアント以上の配信ができるようになります

    • 最小は 1 で、最大は 500 です

ワーカー数の設定を 10 以上で検討している場合はまずサポートにご相談ください。

詳細については メディア配信ワーカー機能 をご確認ください。

シグナリング通知メタデータ拡張機能

これは実験的機能です

  • [ADD] 認証成功時に、シグナリング通知メタデータ拡張の初期値を払い出す signaling_notify_metadata_ext を追加しました。

統計エクスポーター

これは実験的機能です

  • [ADD] sora.conf に統計エクスポーターをデフォルトで有効にするかどうかの default_stats_exporter を追加しました

    • デフォルトは true です

  • [ADD] 認証成功時の払い出しで接続単位で統計エクスポーターを有効にするかどうかを指定する stats_exporter を追加しました

    • false を設定した場合は stats_collector_url が指定されていたとしても統計情報がエクスポートされません

H.265

これは実験的機能です

2024 年 6 月 現在、WebRTC H.265 のプロファイルに対応している WebRTC ライブラリはありません。 現在 仕様策定中 です。

  • [ADD] H.265 サイマルキャストに対応しました

  • [ADD] sora.conf に H.265 のデフォルトレベル ID を指定する default_h265_param_level_id を追加しました

    • デフォルトは 93 (3.1) です

  • [ADD] 認証払い出し時に H.265 のデフォルトレベル ID を指定する video_h265_params を追加しました

    • "video_h265_params": {"level_id": 93} のように指定できます

    • level_id の値は 0 から 255 の間である必要があります

  • [ADD] シグナリング時に H.265 のデフォルトレベル ID を指定する h265_params を追加しました

    • "video": {"codec_type": "H265", "h265_params": {"level_id": 93}} のように指定できます

    • level_id の値は 0 から 255 の間である必要があります

  • [ADD] sora.conf に、シグナリング時に H.265 のパラメータ指定を許可するかどうか設定する signaling_h265_params を追加しました

    • デフォルトは false です

© Copyright 2024, Shiguredo Inc Created using Sphinx 7.3.7