# 2024.2.x から 2025.1.x への移行

## 概要

2024.2.x から 2025.1.x への移行について変更点や注意点をまとめています。

もし不明点がある場合はサポートまでお問い合わせください。











## Chrome 137 以降の WebRTC の仕様変更に伴う影響

Google Chrome 137 の仕様変更により、
以下の条件を全て満たす場合に、映像が受信できなくなる問題が発生しておりました。

- 1 チャネルで 3 接続以上ある
- 1 チャネルで 2 種類以上の映像コーデックを利用している
- 異なる映像コーデックを送信するクライアント（ロールが sendrecv または sendonly）が 2 接続以上いる

Sora 2025.1.0 では、上記の条件を満たす場合でも映像が受信できるように対応しましたので設定は特に不要です。

## 帯域推定機能の導入による画質への影響について

これまでは回線が不安定になった場合、クライアント側の帯域推定にのみ依存していましたが、
帯域推定機能の導入により、サーバー側でも帯域推定を行えるようになり、
より適切なビットレートを選択できるようになりました。
そのため、回線が不安定な際には、配信される映像の画質がこれまでより低く感じられる場合があります。

これは、これまで適切なビットレートを選択できておらず、
回線状況に対して過剰なビットレートで映像配信を行い、結果的により不安定になっていたためです。

今回の変更により、回線状況に応じた適切なビットレートで配信されるようになり、
結果として、より安定した映像配信が実現できるようになりました。

## レガシーストリーム機能を廃止しました

シグナリング接続時に `"multistream": false` を指定して接続した場合、バリデーションエラーになります。

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

## multistream 項目の廃止

レガシーストリーム廃止に伴い、 `multistream` 項目をウェブフック、ログ、API から削除しました。

## session.vanished ウェブフックを廃止しました

[Sora Exporter](SORA_EXPORTER.html) を利用することで、より柔軟なセッションの監視ができることから、
`session.vanished` ウェブフックを廃止しました。

移行に際する不明点などはサポートまでお問い合わせください。

## legacy_signaling_error の廃止

2024.1.x までのシグナリングエラー時のログ出力先やウェブフック [connection.failed](EVENT_WEBHOOK.html#5266b6) の通知タイミングを維持する `legacy_signaling_error` を廃止しました。

今後は以下の挙動になります。

- シグナリング時のエラーが `sora.jsonl` に出力されません
- シグナリング時のエラーが `signaling_error.jsonl` に出力されます
- 認証失敗時のエラーが `sora.jsonl` に出力されません
- 認証失敗時のエラーが `signaling_error.jsonl` に出力されます
- イベントウェブフック [connection.failed](EVENT_WEBHOOK.html#5266b6) が認証失敗時には通知されません
- イベントウェブフック [connection.failed](EVENT_WEBHOOK.html#5266b6) が認証成功後に接続に失敗した時のみ通知されます

### 認証失敗時のエラーログの出力

認証失敗時のログを `sora.jsonl` から `signaling_error.jsonl` に出力します。

認証失敗時のエラーはシグナリングエラーと同等として扱います。
`sora.jsonl` に `ERROR` で出力されるシグナリング失敗のエラーメッセージは [connection.created](EVENT_WEBHOOK.html#eef06c) 以降に変更します。

### イベントウェブフック connection.failed の挙動

[connection.failed](EVENT_WEBHOOK.html#5266b6) はシグナリング時にエラーが発生した場合通知する仕組みでしたが、
今後は認証が成功した後に接続が失敗した場合のみ通知されます。

これにより、認証が失敗した場合には [connection.failed](EVENT_WEBHOOK.html#5266b6) ウェブフックは通知されません。

## WHIP/WHEP 時のリソース URL をセッション URL に変更しました

WHIP の RFC 9725 化に伴い WHIP/WHEP 時のリソース URL をセッション URL に変更しました。

- `/whip-session/:channel_id/:secret/` を追加しました
- `/whep-session/:channel_id/:secret/` を追加しました
- `/whip-resource/:channel_id/:secret/` を非推奨にしました
- `/whep-resource/:channel_id/:secret/` を非推奨にしました
- 2025 年 12 月リリース予定の Sora にて `/whip-resource/:channel_id/:secret/` は廃止します
- 2025 年 12 月リリース予定の Sora にて `/whep-resource/:channel_id/:secret/` は廃止します

### NGINX の設定変更

NGINX を利用している場合は Sora 2025.1.0 デプロイ時に `location` の設定を `resource` から `session` に変更してください。

```nginx
location ~ ^/(whip|whip-session|whep|whep-session)/ {
   # ...
}
```

### クラスター利用時のローリングアップデート

クラスター機能を利用している場合、
Sora 2025.1.0 へローリングアップデートを行う前に `whip-session` と `whep-session` を許可するようにしてください。

```nginx
location ~ ^/(whip|whip-resource|whip-session|whep|whep-resource|whep-session)/ {
   # ...
}
```

ローリングアップデートが完了した後、 `whip-resource` と `whep-resource` を削除してください。

```nginx
location ~ ^/(whip|whip-session|whep|whep-session)/ {
   # ...
}
```

## ネットワーク状態のシグナリング通知機能の変更

実験的機能として 2019 年から提供していた、シグナリング経由でのネットワーク状態通知機能を変更しました。

2019 年にリリースした当時は、クライアント側で情報を得ることがほとんどできず、
Sora 側から配信側へ送っている再送要求の頻度を送ることで、
簡易的ではありますが、配信側がどの程度不安定なのかを通知する仕組みとして提供してきました。

しかし、現在はクライアント側で多くの統計情報が取得できるため、形骸化している機能でした。

今回 Sora に帯域推定機能を実装したことにより、
Sora が把握した帯域推定の情報を視聴側に返すようにしました。
この機能はデフォルトで有効になっています。

これにより、視聴側はより詳細なネットワーク状況を知ることができるようになりました。
今回の変更により、送信のみへの通知は行われなくなりますのでご注意ください。

### 変更に伴うレガシー設定の非推奨と廃止

機能変更に伴い、今までの簡易的な不安定度の通知機能の役目は終えたと判断し、
2025 年 6 月リリースの Sora にて非推奨とし、2025 年 12 月リリース予定の Sora にて廃止します。

レガシーなネットワーク状態のシグナリング通知機能はデフォルトで無効になっていますので、
利用される場合は [legacy_signaling_notify_network_status](SORA_CONF.html#3c5702) を `true` にしてください。

## ICE コネクションステート機能のタイムアウトを認証成功時に指定できるようにしました

ICE コネクションステート機能のタイムアウト値を認証成功時に指定できるようにしました。

認証成功時に `ice_connection_state_disconnected_timeout` と `ice_connection_state_failed_timeout` を払い出せるようになりました。

- authz_ice_connection_state_disconnected_timeout
- authz_ice_connection_state_failed_timeout

## ICE コネクションステート機能のタイムアウト値の古い設定を非推奨にしました

ICE コネクションステート機能のタイムアウトの値を認証成功時に払い出せる仕組みを追加したため、
`sora.conf` の [ice_connection_state_disconnected_timeout](SORA_CONF.html#3a2e9b) と [ice_connection_state_failed_timeout](SORA_CONF.html#7484a4) を非推奨にし、
あらたに [default_ice_connection_state_disconnected_timeout](SORA_CONF.html#420a1e) と [default_ice_connection_state_failed_timeout](SORA_CONF.html#d6f965) を追加しました。

- 2025 年 6 月リリースの Sora にて `sora.conf` の [ice_connection_state_disconnected_timeout](SORA_CONF.html#3a2e9b) と [ice_connection_state_failed_timeout](SORA_CONF.html#7484a4) を非推奨にしました
- 2025 年 12 月リリース予定の Sora にて `sora.conf` の [ice_connection_state_disconnected_timeout](SORA_CONF.html#3a2e9b) と [ice_connection_state_failed_timeout](SORA_CONF.html#7484a4) を廃止します

## 組み込み TURN 機能無効の設定を非推奨にしました

組み込み TURN 機能は 2016 年 6 月にリリースされ、長年安定して動作してきたため、
組み込み TURN 機能を無効にする設定を非推奨にし、無効にする設定を 2025 年 12 月リリース予定の Sora にて廃止します。

- 2025 年 6 月リリースの Sora にて組み込み TURN 機能を無効にする [turn](SORA_CONF.html#489c4e) を `false` にする設定を非推奨にしました
- 2025 年 12 月リリース予定の Sora にて組み込み TURN 機能の設定 [turn](SORA_CONF.html#489c4e) を廃止し、組み込み TURN 機能を無効にすることができなくなります

## WHIP/WHEP の TURN 機能をデフォルトで有効にしました

2024 年 7 月リリースの [OBS 30.2](https://github.com/obsproject/obs-studio/releases/tag/30.2.0) で WHIP の TURN に対応したため、 WHIP/WHEP の TURN をデフォルトで有効にしました。

> **注釈**
>
> WHEP はまだ OBS にマージされていません。

## WHIP/WHEP の TURN 機能を無効にする設定を非推奨にしました

WHIP/WHEP の TURN 機能をデフォルトで有効にしたため、無効にする設定を非推奨にしました。

- 2025 年 6 月リリースの Sora にて WHIP/WHEP の TURN を無効にする [whip_turn](SORA_CONF.html#d8d72c) を `false` にする設定を非推奨にしました
- 2025 年 12 月リリース予定の Sora にて WHIP/WHEP の TURN 機能の設定を廃止し、WHIP/WHEP の TURN を無効にすることができなくなります

> **注釈**
>
> 今後、TURN の仕組みを実装していないクライアント向けに、シグナリングの query-string に `turn=false` を追加することで、TURN を無効にすることができるようにすることを検討しています。

## メディア配信ワーカー自動スケール対応

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

Sora 2024.2.x までは事前に配信ワーカー数を設定する仕組みでしたが、
Sora 2025.1.0 から視聴者数に応じて動的にワーカー数を変更する機能になりました。

そのため利用者がワーカー数を意識する必要がなくなりました。

2024.2.x まで指定できた `media_publish_worker_number` は不要になったため廃止しました。

## クラスターリレーのツリー化

クラスターリレー機能を利用した際に、ノード数が増えるとリレー数が増えてノード負荷が高くなる問題を解決するために、リレーをツリー構造化しました。

リレーをツリー構造化することで、ノードあたりのリレー数を削減し、ノード負荷を分散することができるようになりました。

## セッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しに group_id の追加

セッションをグループ化する `group_id` を指定できるようになりました。

[session.created](SESSION_WEBHOOK.html#1d1984) ウェブフックの戻り値に `group_id` 項目でセッションのグループ ID を含めることができます。

[ListSessions](API_SESSION.html#748f19) API で `group_id` を指定することで、指定した `group_id` のセッションのみを表示できるようになりました。

主にマルチテナントで Sora を利用している際に、セッションのグループ化を目的としている機能です。

## セッション単位での最大同時接続数を制限する `max_connections` の追加

[session.created](SESSION_WEBHOOK.html#1d1984) の払い出しで、セッション単位での最大同時接続数を制限する `max_connections` を追加しました。

トライアルでは `trial_max_connections` という項目でしたが、正式版に伴い `max_connections` に変更しました。
`trial_max_connections` は 2025 年 12 月リリース予定の Sora にて廃止します。

詳細は [max_connections](SESSION_WEBHOOK.html#498be9) を確認してください。

- `trial_max_connections` は 2025 年 12 月リリース予定の Sora にて廃止します。
- `trial_max_connections` と `max_connections` を同時に指定した場合は `max_connections` が優先されます
- `trial_max_connections` 廃止後は無視します

## クラスターのローリングアップデートについて

2024.2.x から 2025.1.x へのローリングアップデートができます。

1 台ずつローリングアップデートを行ってください。

2024.1.x から 2025.1.x へのローリングアップデートはできません。
必ず 2024.2.x を経由してから 2025.1.x へアップデートを行ってください。
