# 古いリリースノート

**UPDATE**
: 後方互換性がある変更

**ADD**
: 後方互換性がある追加

**CHANGE**
: 後方互換性のない変更

**FIX**
: バグ修正

> **重要**
>
> 変更、廃止された一部機能のリンクは無効になっています。


## 2025.2.1

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

**リリース**: 2026 年 04 月 13 日

### 変更履歴

- [FIX] [OBS Studio 32.1.0](https://github.com/obsproject/obs-studio/releases/tag/32.1.0) における WHIP の仕様変更に伴い、Sora 2025.2.0 以前のバージョンで配信ができない問題を修正しました- 詳細については obs_whip_notice をご確認ください


## 2025.2.0

**メジャーアップデート**

**リリース**: 2025 年 12 月 17 日

> **重要**
>
> Sora 2025.1.x から 2025.2.x への移行については 2025.1.x から 2025.2.x への移行 をご確認ください。

### ハイライト

- 環境変数 `SORA_*` で `sora.conf` の設定を上書きできる機能を追加しました
- 実験的機能として、クライアントから Sora の一部の HTTP API を DataChannel 経由で呼び出すことができる [RPC 機能](RPC.html) を追加しました
- 実験的機能として、視聴側の環境に合わせてサイマルキャストのストリームを自動で切り替える機能を追加しました
- 実験的機能として、ノード単位での最大同時接続数制限機能を追加しました
- 実験的機能として、認証ウェブフックで録画を開始する機能を追加しました

### 正式版

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

- [シグナリング通知メタデータ拡張機能](SIGNALING_NOTIFY_METADATA_EXT.html)
- [シグナリング通知 ICE コネクションステート](ICE_CONNECTION_STATE.html#149f7e)
- [マルチ転送フィルター機能](MULTI_FORWARDING_FILTER.html)
- [MP4 形式録画機能](RECORDING.html#65b0fb)
- [プレイアウト遅延機能](PLAYOUT_DELAY.html)

### 破壊的変更

- マルチストリームにおける映像ビットレート自動シェアリング機能のデフォルト設定を **無効** に変更しました- もしビットレート自動シェアリング機能を有効にしたい場合は `sora.conf` の [multistream_auto_sharing_video_bit_rate](SORA_CONF.html#93f542) を `true` に設定してください
- 録画機能(セッション単位)のデフォルト出力フォーマットを MP4 に変更しました- `sora.conf` の `default_recording_format` のデフォルト値を `webm` から `mp4` に変更しました
- `sora.conf` に [テスト API](TEST_API.html) を利用するかどうかを指定する [test_api](SORA_CONF.html#a2f020) を追加して、デフォルト無効にしました- 利用する場合は [test_api](SORA_CONF.html#a2f020) を `true` に設定してください

### 廃止機能

- レガシー録画関連 API を廃止しました- [StartRecording](OBSOLETE_API_LEGACY_RECORDING.html#c5b527) API を廃止しました
  - [StopRecording](OBSOLETE_API_LEGACY_RECORDING.html#fd0de5) API を廃止しました
  - [GetStartedRecording](OBSOLETE_API_LEGACY_RECORDING.html#8095d0) API を廃止しました
  - [ListStartedRecording](OBSOLETE_API_LEGACY_RECORDING.html#838360) API を廃止しました
  - [ListArchiving](OBSOLETE_API_LEGACY_RECORDING.html#d4ba61) API を廃止しました
- RTP ストリーム停止/再開 関連 API を廃止しました- [PauseRtpStream](OBSOLETE_API_RTP_STREAM_PAUSE_RESUME.html#de7a52) API を廃止しました
  - [ResumeRtpStream](OBSOLETE_API_RTP_STREAM_PAUSE_RESUME.html#43002a) API を廃止しました
  - [ListPauseRtpStreams](OBSOLETE_API_RTP_STREAM_PAUSE_RESUME.html#c4de52) API を廃止しました
- 再送要求の頻度を利用した不安定レベルの通知機能を廃止しました- `sora.conf` の `legacy_signaling_notify_network_status` を廃止しました
- `sora.conf` の `turn` を廃止し、 [TURN 機能](TURN.html) を無効化することができなくなりました
- `sora.conf` の `whip_turn` を廃止し、 [WHIP 機能](WHIP.html) の TURN のサポートを無効化することができなくなりました
- `sora.conf` の `whep_turn` を廃止し、 [WHEP 機能](WHEP.html) の TURN のサポートを無効化することができなくなりました
- `sora.conf` の `ice_connection_state_disconnected_timeout` を廃止しました- 今後は [default_ice_connection_state_disconnected_timeout](SORA_CONF.html#420a1e) をご利用ください
- `sora.conf` の `ice_connection_state_failed_timeout` を廃止しました- 今後は [default_ice_connection_state_failed_timeout](SORA_CONF.html#d6f965) をご利用ください
- `sora.conf` の `av1` を廃止し、 AV1 のサポートを無効化することができなくなりました
- `sora.conf` の `h265` を廃止し、 H.265 のサポートを無効化することができなくなりました
- `sora.conf` の `devtools` を廃止し、組み込みの開発ツールが利用できなくなりました- 開発ツールを利用する場合は NGINX のリバースプロキシやホスティングを利用してください
  - 詳細は [開発ツール](DEVTOOLS.html) をご覧ください
- `sora.conf` の `signaling_forwarding_filter` を廃止しました

### 変更履歴

- [CHANGE] [multistream_auto_sharing_video_bit_rate](SORA_CONF.html#93f542) をデフォルト無効にしました- もしビットレート自動シェアリング機能を有効にしたい場合は [multistream_auto_sharing_video_bit_rate](SORA_CONF.html#93f542) を `true` に設定してください
- [CHANGE] `sora.conf` に [テスト API](TEST_API.html) を利用するかどうかを指定する [test_api](SORA_CONF.html#a2f020) を追加し、デフォルトはテスト API を無効にしました- テスト API を利用する場合は [test_api](SORA_CONF.html#a2f020) を `true` に設定してください
- [CHANGE] レガシー録画機能を廃止しました- レガシー録画機能廃止に伴い `sora.conf` の `legacy_recording` を廃止しました
- [CHANGE] コネクションログの `e2ee` を廃止しました- E2EE 機能は 2024.2.0 で廃止されており、ログに出力しても意味がないため廃止しました
  - 認証ウェブフックの `e2ee` 項目は削除しておりません
- [CHANGE] コネクションログの `simulcast_encodings` の出力条件を変更しました- サイマルキャストが有効でかつスポットライトが無効で、ロールが `sendonly` または `sendrecv` の場合に出力されるようになりました
- [CHANGE] コネクションログの `spotlight_encodings` の出力条件を変更しました- サイマルキャストが無効でかつスポットライトが有効で、ロールが `sendonly` または `sendrecv` の場合に出力されるようになりました
- [CHANGE] シグナリングメッセージの `"type": "re-answer"` の受信待ち受け時間を 30 秒に制限しました
- [ADD] スポットライトシグナリング通知を送るかどうかを `sora.conf` の `signaling_notify_spotlight` で指定できるようになりました- デフォルトは `true` です
  - `false` に設定するとスポットライトシグナリング通知 `spotlight.{focused, unfocused}` が送信されなくなります
- [ADD] コネクションログの項目を追加しました- `id`: コネクションログのユニーク ID
  - `version`: Sora のバージョン
  - `label`: Sora のラベル
  - `node_name`: Sora のノード名
- [FIX] [セッション単位での最大同時接続数制限機能](SESSION_MAX_CONNECTIONS.html) と [セッション単位でのクライアント ID 重複時の既存接続の追い出し機能](SESSION_DUPLICATE_CLIENT_ID.html) を同時に有効にした場合に、最大同時接続数に達している状態で追い出しが発生した際、追い出しは成功するが最大同時接続数制限により接続が失敗する問題を修正しました
- [FIX] 音声の SDP に `a=rtcp-fb` の `transport-cc` が付与されていない問題を修正しました
- [FIX] サイマルキャストで特定の `rid` ストリームが復帰した際に、最初のキーフレームの SRTP 復号をスキップしてしまう問題を修正しました
- [FIX] スポットライト機能利用時に `spotlight_number` を超える数のフォーカスが同時に当たり、かつ、次のアンフォーカスイベント発生まで、同時フォーカスが維持され続ける問題を修正しました
- [FIX] スポットライト機能利用時に [sora_conf-default_spotlight_focus_min_interval](SPOTLIGHT.html#9ba866) の値より [sora_conf-default_spotlight_auto_unfocus_interval](SPOTLIGHT.html#fcf07a) の値が短い場合に [sora_conf-default_spotlight_auto_unfocus_interval](SPOTLIGHT.html#fcf07a) が優先される問題を修正しました
- [FIX] サイマルキャスト機能利用時に、認証成功時の払い出しで `simulcast_rid` を指定しても無視されてしまう問題を修正しました

#### `role` が `recvonly` の場合の `codec_type` や `bit_rate` などの指定を無視する変更

マルチストリーム機能のみの提供になっても、
Sora 2025.1.0 で廃止したレガシーストリームとの互換性を維持するために、
`role` が `recvonly` の場合でもシグナリングや認証成功時の払い出しで、
`codec_type` や `bit_rate` などの指定ができていました。

Sora 2025.2.0 からは、下記のように `codec_type` や `bit_rate` などを指定したとしても無視する仕様に変更しました。

- [CHANGE] `role` が `recvonly` の場合、シグナリングや認証成功時に以下の指定が無視されるようになりました- `audio` の `codec_type` 、 `bit_rate` 、 `opus_params`
  - `video` の `codec_type` 、 `bit_rate` 、 `simulcast` 、 `vp9_params` 、 `av1_params` 、 `h264_params` 、 `h265_params`
- [CHANGE] `role` が `recvonly` の場合、connection ログに以下の情報が出力されなくなりました- `audio` の `codec_type` 、 `bit_rate` 、 `opus_params`
  - `video` の `codec_type` 、 `bit_rate` 、 `simulcast` 、 `vp9_params` 、 `av1_params` 、 `h264_params` 、 `h265_params`

#### 環境変数による sora.conf の設定上書き機能

環境変数にて `SORA_<設定項目名>` を指定することで `sora.conf` の設定を上書きできる機能を追加しました。

例えば `SORA_DEFAULT_VIDEO_BIT_RATE=500` という環境変数を指定することで `sora.conf` の `default_video_bit_rate` の設定を上書きできます。もし設定が `default_video_bit_rate = 300` であっても、Sora は起動時に環境変数の値を優先して `500` として動作します。

- [ADD] 環境変数にて `SORA_<設定項目名>` を指定することで `sora.conf` の設定を上書きできるようになりました

詳細は [環境変数による設定上書き機能](SORA_CONF.html#e551e8) をご確認ください。

#### RPC 機能

**これは実験的機能です**

クライアントから、Sora の一部の HTTP API をデータチャネル経由で呼び出すことができる RPC 機能を追加しました。
この機能を利用するにはデータチャネルシグナリングを有効にする必要があります。

- [ADD] `sora.conf` に RPC 機能を指定する [data_channel_rpc](SORA_CONF.html#26f332) を追加しました- デフォルトは `true` です
- [ADD] 認証成功時の払い出しに、利用できる RPC メソッドの一覧を指定する `rpc_methods` を追加しました- `"rpc_methods": ["2025.2.0/RequestSimulcastRid"]` のように指定します
  - 未指定または空リスト `[]` の場合は RPC 機能を利用できません
- [ADD] シグナリングメッセージ `"type": "offer"` に認証成功時に払い出した `rpc_methods` が含まれるようになりました
- [ADD] `connection.jsonl` に `rpc_methods` が含まれるようになりました
- [ADD] メタデータ拡張機能の [PutSignalingNotifyMetadata](API_SIGNALING_NOTIFY_METADATA_EXT.html#a20c95) API を RPC 機能で利用できるようになりました- メソッド名は [2025.2.0/PutSignalingNotifyMetadata](RPC.html#0907eb) です
  - `channel_id` と `connection_id` は省略することができます
- [ADD] メタデータ拡張機能の [PutSignalingNotifyMetadataItem](API_SIGNALING_NOTIFY_METADATA_EXT.html#387c9c) API を RPC 機能で利用できるようになりました- メソッド名は [2025.2.0/PutSignalingNotifyMetadataItem](RPC.html#bd02ac) です
  - `channel_id` と `connection_id` は省略することができます
- [ADD] サイマルキャスト機能の [RequestSimulcastRid](API_SIMULCAST.html#7d26ab) API を RPC 機能で利用できるようになりました- メソッド名は [2025.2.0/RequestSimulcastRid](RPC.html#07fda8) です
  - `channel_id` と `receiver_connection_id` は省略することができます
- [ADD] スポットライト機能の [RequestSpotlightRid](API_SPOTLIGHT.html#5c2650) API を RPC 機能で利用できるようになりました- メソッド名は [2025.2.0/RequestSpotlightRid](RPC.html#3e09d6) です
  - `channel_id` と `recv_connection_id` は省略することができます
- [ADD] スポットライト機能の [ResetSpotlightRid](API_SPOTLIGHT.html#680344) API を RPC 機能で利用できるようになりました- メソッド名は [2025.2.0/ResetSpotlightRid](RPC.html#ac4795) です
  - `channel_id` と `recv_connection_id` は省略することができます

詳細は [RPC 機能](RPC.html) をご確認ください。

#### セッション単位でのクライアント ID 重複時の既存接続の追い出し機能

**これは実験的機能です**

- [ADD] クライアント ID 重複時の既存接続の追い出し機能が有効になっているセッションにおいて、追い出される対象の既存のコネクションが存在する場合に、そのクライアントの `ice_connection_state` を認証ウェブフックに含めるようになりました- シグナリング接続時に、その接続と重複した `client_id` が指定されている追い出し対象のコネクションがすでに存在する場合にのみ `ice_connection_state` が含まれます

#### サイマルキャスト新機能追加に関する設定項目名と API 名の変更

Sora 2025.2.0 から `rid` に `none` を設定できるようになりました。これに伴い `sora.conf` の設定や、接続時、認証成功時の払い出し項目、API の名前をよりわかりやすくしたものを追加しました。

Sora 2025.2.0 より前の古い設定項目名や API 名も引き続き利用できますが、2027 年 12 月リリース予定の Sora にて廃止予定です。新しい設定項目名や API 名をご利用ください。

古い設定項目や API では `rid` に `none` を指定することはできません。

[ResetRtpStream](DEPRECATED_API_SIMULCAST.html#afba6e) API については活用場所が難しく、 [RequestSimulcastRid](API_SIMULCAST.html#7d26ab) で代替できることから 2026 年 12 月にて廃止することにしました。

- [CHANGE] [ResetRtpStream](DEPRECATED_API_SIMULCAST.html#afba6e) API を非推奨にしました- 今後は [RequestSimulcastRid](API_SIMULCAST.html#7d26ab) API をご利用ください
- [ADD] `rid` の切り替えをリクエストする [RequestSimulcastRid](API_SIMULCAST.html#7d26ab) API を追加しました- `rid` は `r0` 、 `r1` 、 `r2`  に加えて `none` が指定できるようになりました
  - [RequestRtpStream](DEPRECATED_API_SIMULCAST.html#6fe0b3) API は 2027 年 12 月リリース予定の Sora にて廃止予定です
  - `send_connection_id` を `sender_connection_id` へ変更しています
  - `recv_connection_id` を `receiver_connection_id` へ変更しています
- [ADD] サイマルキャスト視聴側がどの rid を視聴するかのデフォルトを指定する `sora.conf` の [default_simulcast_request_rid](SORA_CONF.html#9891c8) を追加しました- デフォルトは `r0` です
  - `simulcast` が `true` の場合にのみ有効です
  - `sora.conf` の [default_simulcast_rid](SORA_CONF.html#d95788) は 2027 年 12 月リリース予定の Sora にて廃止予定です
- [ADD] シグナリング接続時に視聴するストリームの rid を指定する `simulcast_request_rid` を追加しました- `simulcast_request_rid` には `none` 、 `r0` 、 `r1` 、 `r2`、 を指定できます
  - `simulcast_request_rid` は `role` が `sendrecv` または `recvonly` の場合にのみ有効です
  - `simulcast` が `true` の場合にのみ有効です
  - シグナリング接続時の `simulcast_rid` は 2027 年 12 月リリース予定の Sora にて廃止予定です
- [ADD] 認証成功時の払い出しにて視聴するストリームの rid を指定する `simulcast_request_rid` を追加しました- `simulcast_request_rid` には `none` 、 `r0` 、 `r1` 、 `r2` を指定できます
  - `simulcast_request_rid` は `role` が `sendrecv` または `recvonly` の場合にのみ有効です
  - `simulcast` が `true` の場合にのみ有効です
  - 認証成功時の `simulcast_rid` は 2027 年 12 月リリース予定の Sora にて廃止予定です
- [ADD] 認証成功時の払い出しにて RPC 機能経由で `2025.2.0/RequestSimulcastRid` で利用できる `rid` を指定する `simulcast_rpc_rids` を追加しました- デフォルトは未指定で、どれも指定できません
  - `simulcast` が `true` の場合にのみ有効です
  - `"simulcast_rpc_rids": ["none", "r0", "r1"]` のように指定します

#### サイマルキャスト機能利用時の視聴環境に合わせたストリーム自動切り替え機能

**これは実験的機能です**

実験的機能として、サイマルキャスト機能に Sora 側で視聴環境に合わせてストリームを自動で切り替える仕組みを追加しました。

例えば、 `rid` が `r2` のストリームが高ビットレート、 `r1` のストリームが低ビットレートの場合、視聴環境が悪化した場合に Sora が自動で `r2` から `r1` に切り替えます。

> **重要**
>
> `simulcast_auto_rids` が指定された場合、 Sora 2025.2.0 ではまだ **視聴環境が悪化した場合に、ビットレートが低い映像に自動的に下げる機能** のみになります。 **視聴環境が改善した場合にビットレートが高い映像に自動的に上げる機能** は 2026 年リリース予定の Sora にて対応予定です。

- [ADD] `sora.conf` にサイマルキャスト機能利用時に、視聴環境に合わせて Sora が自動で配信する `rid` ストリームを切り替える [default_simulcast_auto_rids](SORA_CONF.html#97a674) を追加しました- デフォルトは未指定で、自動では切り替わりません
  - [default_simulcast_auto_rids](SORA_CONF.html#97a674) はサイマルキャストが有効な場合のみ利用できます
  - `default_simulcast_auto_rids = r0, r1` のように複数指定することができます
  - 指定した `rid` の中で視聴環境に合わせて Sora が自動で切り替えます
- [ADD] 認証成功時の払い出しに、サイマルキャスト利用時に、視聴側の環境に合わせて配信する `rid` ストリームを Sora が自動で切り替える [simulcast_auto_rids の払い出し](AUTH_WEBHOOK_RETURN.html#3b4f6a) を追加しました- デフォルトは [default_simulcast_auto_rids](SORA_CONF.html#97a674) の値です
  - [simulcast_auto_rids の払い出し](AUTH_WEBHOOK_RETURN.html#3b4f6a) を払い出す場合は同時に `simulcast` を `true` で払い出す必要があります
  - `rids` には `["r0", "r1"]` のように複数指定できます
  - 指定した `rid` の中で視聴環境に合わせて Sora が自動で切り替えます
  - 空リスト `[]` で指定した場合は自動で切り替わらなくなります
- [ADD] サイマルキャスト機能利用時に視聴側の環境に合わせて Sora が自動で配信する `rid` ストリームを切り替えるように変更できる [ChangeSimulcastAuto](EXPERIMENTAL_API_SIMULCAST.html#81b01b) API を追加しました- デフォルトは [default_simulcast_auto_rids](SORA_CONF.html#97a674) の値です
  - [ChangeSimulcastAuto](EXPERIMENTAL_API_SIMULCAST.html#81b01b) API はサイマルキャストが有効な場合のみ利用できます
  - `rids` には `["r0", "r1"]` のように複数指定できます
  - 指定した `rid` の中で視聴環境に合わせて Sora が自動で切り替えます
  - 空リスト `[]` を指定した場合、自動切り替えは無効になります
- [ADD] `sora.conf` にサイマルキャスト機能利用時に `simulcast_auto_rids` を指定した際、自動で切り替わる最小の間隔を秒数で指定します [simulcast_auto_min_switch_interval](SORA_CONF.html#cbfb69) を追加しました- デフォルトは `5 s` です
  - 範囲は `1..300 s` です
- [ADD] 統計情報にサイマルキャスト機能利用時に視聴環境に自動で切り替わる `simulcast_auto` を追加しました- `target_sender_count`- サイマルキャスト rid 切り替えの対象となった送信ストリーム数
  - `total_switched`- サイマルキャスト rid が自動で切り替わった回数
  - `total_up_trend`- 帯域推定が上昇傾向だった際に切り替えをスキップした回数
  - `total_history_not_ready` - 履歴サイズが十分でないために切り替えをスキップした回数の累計値

#### サイマルキャスト機能利用時の rid 切り替わり時のシグナリング通知機能

**これは実験的機能です**

今まで視聴側で simulcast の `rid` が切り替わったことを知る手段がありませんでした。
今回、サイマルキャストの `rid` が切り替わった際にシグナリング通知が送信される機能を追加しました。

- [ADD] サイマルキャスト機能で rid が切り替わった際に送信するシグナリング通知 `simulcast.switched` を追加しました
- [ADD] `sora.conf` にサイマルキャストの rid が切り替わった際にシグナリング通知を送信するかどうかを指定する [signaling_notify_simulcast_switched](SORA_CONF.html#022113) を追加しました- デフォルトは `true` です

```javascript
{
  "type": "notify",
  "timestamp": "string",
  "event_type": "simulcast.switched",
  "sender_connection_id": "string",
  "priority": "higher | lower",
  "trigger": "api | rpc | sender | receiver",
  // simulcast_rpc_rids を指定した場合に含まれます
  // 未指定の場合は "rpc_rids": [] になります
  "rpc_rids": ["none", "r0", "r1", "r2"],
  // simulcast_auto_rids を指定した場合に含まれます
  // 未指定の場合は "auto_rids": [] になります
  "auto_rids": ["none", "r0", "r1", "r2"],
  "request_rid": "none | r0 | r1 | r2",
  "current_rid": "none | r0 | r1 | r2",
  "previous_rid": "none | r0 | r1 | r2",
}
```

#### 認証ウェブフック経由での録画開始機能

**これは実験的機能です**

録画はセッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) のタイミングで開始するか [StartRecording](API_RECORDING.html#c5b527) API を呼び出すことで開始できますが、ウェブフックを利用して途中から録画を開始する事ができませんでした。

今回、実験的機能として認証ウェブフックの戻り値で録画を開始できる仕組みを追加しました。

- [ADD] `sora.conf` に認証ウェブフック成功時の払い出しで録画を開始できるかどうかを指定する [auth_webhook_recording](SORA_CONF.html#24d27d) を追加しました。
- [ADD] 認証ウェブフックの戻り値に `recording` を追加しました- `recording` に `true` を指定すると録画が既に開始されていない場合は録画を開始します
  - `recording` に `false` を指定した場合は無視します
- [ADD] 認証ウェブフックの戻りに `recording` に `true` を指定した際に利用できる録画用の項目を追加しました- `recording_expire_time`
  - `recording_split_only`
  - `recording_split_duration`
  - `recording_metadata`
  - `recording_format`
  - これらの設定の詳細については [認証ウェブフック](RECORDING.html#cd90e9) をご確認ください。

#### ノード単位での最大同時接続数制限機能

**これは実験的機能です**

Sora は今までノード単位の同時接続数はライセンスでのみ制限をしていましたが、
低スペックのインスタンスを一時的に利用する際、ノード単位での最大同時接続数を制限したいという要望がありました。

今回 `sora.conf` にてノード単位での接続数を制限する仕組みを追加しました。

この機能を利用することで、例えば、ライセンスでは 300 同時接続まで許可されているが、ノード単位で 100 同時接続までに制限するといった運用が可能になります。

- [ADD] `sora.conf` にノード単位での最大同時接続数を制限する `max_connections` を追加しました- デフォルトは未指定で無制限です
  - 0 から 10000 までの値を指定できます
  - この値をチェックする前にライセンスによる最大同時接続数をチェックするため、ライセンスによる最大同時接続数を超えた接続はできません

#### セッション単位での最大同時接続数を無視する機能

**これは実験的機能です**

セッション作成時の `max_connections` にてセッション単位の最大同時接続数を制限できますが、
特定のクライアントは、このセッション単位の最大同時接続数の制限を無視して接続を許可したい場合があります。

今回、認証成功時の払い出しでセッション単位の最大同時接続数を無視して接続を許可する仕組みを追加しました。

- [ADD] 認証成功時の払い出しにて `ignore_max_connections` を指定できるようになりました- セッション単位の最大同時接続数制限が指定されている場合に有効になります
  - `ignore_max_connections` に `true` を指定するとセッション単位での最大同時接続数制限を無視して接続を許可します
- [ADD] コネクションログ `connection.jsonl` に `ignore_max_connections` を追加しました- コネクションログの `ignore_max_connections` が `true` の場合、セッション単位の最大同時接続数制限を無視して接続が許可されたことを示します


## 2025.1.0

**メジャーアップデート**

**リリース**: 2025 年 6 月 25 日

### ハイライト

- クラスターリレー機能のツリー化によりノードの負荷を分散できるようになりました
- クラスターリレー機能が正式版になりました- クラスターアフィニティ機能やテンポラリーノード機能も正式版になりました
- セッション単位で最大同時接続数を制限できる機能が正式版になりました
- セッション単位でのクライアント ID 重複時の既存接続の追い出し機能を追加しました
- 帯域推定機能を追加しました
- メディア配信ワーカー自動スケール機能を追加しました

### 正式版

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

- [リレー機能](CLUSTER.html#4b3bf1)
- [アフィニティ機能](CLUSTER.html#6f4bfb)
- [テンポラリーノード機能](CLUSTER.html#3cb6c8)
- セッション単位での最大同時接続数制限機能の [max_connections](SESSION_WEBHOOK.html#498be9) 払い出し
- [ListSessions](API_SESSION.html#748f19) API
- [GetSession](API_SESSION.html#427a59) API
- [RTC 統計情報 API](API_RTC_STATS.html)
- [統計ウェブフック](STATS_WEBHOOK.html)

### 破壊的変更

- WHIP の TURN 機能をデフォルトで有効にしました- 2024 年 7 月リリースの OBS 30.2 より以前の OBS が接続できなくなります
  - 2025 年 12 月リリース予定の Sora にて WHIP の TURN 機能の設定 `whip_turn` を廃止し、TURN 機能を無効にできなくなります
- WHEP の TURN 機能をデフォルトで有効にしました- WHEP の TURN 機能を無効にする設定は非推奨になりました
  - 2025 年 12 月リリース予定の Sora にて WHEP の TURN 機能の設定 `whep_turn` を廃止し、TURN 機能を無効にできなくなります

### 廃止情報

- レガシーストリームを廃止しました- `multistream` 項目をウェブフック、ログ、API から削除しました
  - `multistream` を `false` にして接続した場合バリデーションエラーになります
- ユーザーエージェント統計機能を廃止しました- 今後は RTC 統計機能をご利用ください
- 統計エクスポーター機能を廃止しました
- モード機能のウェブフック `session.vanished` を廃止しました
- メディア配信ワーカー数を指定する `media_publish_worker_number` を廃止しました- ワーカーは自動でスケールするようになりました
  - 自動スケールの閾値は `sora.conf` の [media_publish_worker_autoscale_threshold](SORA_CONF.html#664e74) を利用してください
  - デフォルトは 50 で、50 接続単位でワーカーを増減させます

### 非推奨情報

- 組み込み TURN 機能を無効にする `turn` を `false` に設定することを非推奨にしました- 2025 年 12 月リリース予定の Sora にて組み込み TURN 機能を無効にする設定 `turn` を廃止し、組み込み TURN 機能を無効にできなくなります
- セッション単位での最大同時接続数制限機能の `trial_max_connections` を非推奨にしました- 今後は [max_connections](SESSION_WEBHOOK.html#498be9) をご利用ください
  - 2025 年 12 月リリース予定の Sora にて廃止します
- `sora.conf` の `ice_connection_state_disconnected_timeout` を非推奨にしました- [default_ice_connection_state_disconnected_timeout](SORA_CONF.html#420a1e) をご利用ください
  - 2025 年 12 月リリース予定の Sora にて廃止します
- `sora.conf` の `ice_connection_state_failed_timeout` を非推奨にしました- [default_ice_connection_state_failed_timeout](SORA_CONF.html#d6f965) をご利用ください
  - 2025 年 12 月リリース予定の Sora にて廃止します
- AV1 を無効にする必要がないと判断したため、 `sora.conf` の `av1` を `false` にする設定を非推奨としました> - 2025 年 12 月リリース予定の Sora にてこの設定は廃止し、AV1 の利用を無効化することはできなくなります
- H.265 を無効にする必要がないと判断したため、 `sora.conf` の `h265` を `false` にする設定を非推奨としました> - 2025 年 12 月リリース予定の Sora にてこの設定は廃止し、H.265 の利用を無効化することはできなくなります
- WHIP の TURN 機能を無効にする `whip_turn` を `false` に設定することを非推奨にしました- 2025 年 12 月リリース予定の Sora にて WHIP の TURN 機能の設定 `whip_turn` を廃止し、TURN 機能を無効にできなくなります
- WHEP の TURN 機能を無効にする `whep_turn` を `false` に設定することを非推奨にしました- 2025 年 12 月リリース予定の Sora にて WHEP の TURN 機能の設定 `whep_turn` を廃止し、TURN 機能を無効にできなくなります
- WHIP の RFC 9725 化に伴い `/whip-resource/:channel_id/:secret/` を非推奨にしました- NGINX の設定を `resource` から `session` に変更してください
  - 2025 年 12 月リリース予定の Sora にて廃止します
- WHEP も WHIP に合わせて `/whep-resource/:channel_id/:secret/` を非推奨にしました- NGINX の設定を `resource` から `session` に変更してください
  - 2025 年 12 月リリース予定の Sora にて廃止します

### 変更履歴

- [CHANGE] スポットライト機能利用時に、フォーカスなしの音声転送の上限レートを指定する `sora.conf` の [sora_conf-default_spotlight_unfocus_audio_rate_limit](SPOTLIGHT.html#27c5ad) のデフォルト値を 2 から 5 に引き上げました- この変更により多人数で同時に発話があった際の音声がより快適になります
- [CHANGE] スポットライト機能利用時に、フォーカスなしの音声転送の上限レートを指定する `sora.conf` の [sora_conf-default_spotlight_unfocus_audio_rate_limit](SPOTLIGHT.html#27c5ad) の上限を 20 に引き上げました
- [CHANGE] RTP ヘッダー拡張 `abs-send-time` の利用を廃止しました- libwebrtc 側でもここ数年利用されていません
  - [Deprecate and remove the abs-send-time extension [398065914] - WebRTC](https://issues.webrtc.org/issues/398065914)
- [FIX] セッション終了と [DisconnectChannel](API_SIGNALING.html#a87366) API の実行が重なった場合、 `SIGNALING-API-INTERNAL-ERROR` エラーが出力されていたのを修正しました
- [FIX] セッション終了と [DisconnectClient](API_SIGNALING.html#e91c0b) API の実行が重なった場合、 `SIGNALING-API-INTERNAL-ERROR` エラーが出力されていたのを修正しました
- [FIX] セッション終了と [DisconnectConnection](API_SIGNALING.html#2ec3a0) API の実行が重なった場合、 `SIGNALING-API-INTERNAL-ERROR` エラーが出力されていたのを修正しました
- [FIX] 同じチャネル ID のセッション破棄と作成が連絡した場合、録画情報がセッションをまたいで使い回される問題を修正しました
- [FIX] パケロスが多い状況で DataChannel が正常に動作せず、メッセージを送信しなくなる問題を修正しました
- [FIX] パケロスが多い状況で OBS WHIP を利用して高いビットレートの配信を録画しようとしたときに、録画が正常に行われない問題を修正しました
- [FIX] OBS WHIP 利用時に H.265 の録画開始後、すぐに終了すると録画が正常に行われない問題を修正しました
- [FIX] SIGTERM で Sora を終了した際に、意図しないログが出力されてしまう問題を修正しました
- [FIX] H.264 録画時に H.264 NAL Unit の SEI をスキップするように修正しました
- [FIX] クラスター機能利用時にスポットライトのアンフォーカスの音声転送の上限レートが正しく設定されない問題を修正しました
- [FIX] クラスターリレー機能利用時にスポットライトのアンフォーカス音声のペース制限の対象となるパケット判定が正しく行われない問題を修正しました

#### パッケージ

- [UPDATE] RHEL 9 x86_64 版のパッケージを 9.6 へ更新しました
- [ADD] RHEL 10 x86_64 版のパッケージを追加しました

#### sora.conf

- [CHANGE] セッションウェブフック `session.vanished` 廃止に伴い `sora.conf` の `ignore_session_vanished_webhook` を廃止しました
- [CHANGE] `sora.conf` の設定コメントをドキュメントの URL のみに変更しました
- [CHANGE] `sora.conf` のコメントの値をデフォルト値に変更しました
- [CHANGE] `sora.conf` のコメントのデフォルト値が存在しない場合、 `key =` のみの表記に変更しました
- [CHANGE] `sora.conf` の設定の並び順をアルファベット順に変更しました
- [ADD] `sora.conf` にコネクションライフタイムのデフォルト値を指定する [default_connection_lifetime](SORA_CONF.html#7ec6a4) を追加しました- デフォルトは未指定です
  - 最小は 0 ms で最大は 720 h です

#### レガシーストリーム廃止

- [CHANGE] レガシーストリーム機能を廃止しました- `multistream` 項目をウェブフック、ログ、API から削除しました
  - `multistream` を `false` にして接続した場合バリデーションエラーになります
- [CHANGE] レガシーストリーム機能廃止に伴い `sora.conf` の `legacy_stream` を廃止しました
- [CHANGE] レガシーストリーム機能廃止に伴い [StartForwardingRtp](EXPERIMENTAL_API_RTP_FORWARDING.html#c734b8) API の `connection_id` を必須にしました
- [CHANGE] レガシーストリーム機能廃止に伴い [StopForwardingRtp](EXPERIMENTAL_API_RTP_FORWARDING.html#729828) API の `connection_id` を必須にしました

#### 統計エクスポーター廃止

今後は [統計ウェブフック](STATS_WEBHOOK.html) をご利用ください。

- [CHANGE] 統計エクスポーター機能を廃止しました- `sora.conf` の `default_stats_exporter` を廃止しました
  - `sora.conf` の `default_stats_collector_url` を廃止しました
  - `sora.conf` の `default_stats_exporter_number` を廃止しました
  - `sora.conf` の `default_stats_exporter_tls_fullchain_file` を廃止しました
  - `sora.conf` の `default_stats_exporter_tls_privatekey_file` を廃止しました
  - `sora.conf` の `default_stats_exporter_tls_verify_cacert_file` を廃止しました

#### ユーザーエージェント統計機能廃止

ユーザーエージェント統計機能を廃止しました。 今後は RTC 統計機能をご利用ください。

- [CHANGE] `sora.conf` の `user_agent_stats` を廃止しました- 今後は [default_rtc_stats](SORA_CONF.html#558c2b) をご利用ください
- [CHANGE] 認証成功払い出しから `user_agent_stats` を廃止しました- 今後は [rtc_stats の払い出し](AUTH_WEBHOOK_RETURN.html#9e5912) を払い出すようにしてください
- [CHANGE] [ListUserAgentStats](OBSOLETE_API_USER_AGENT_STATS.html#f9a4fe) API を廃止しました- 今後は [ListRtcStats](API_RTC_STATS.html#956f4b) API をご利用ください
- [CHANGE] [ListChannelUserAgentStats](OBSOLETE_API_USER_AGENT_STATS.html#df496a) API を廃止しました- 今後は [ListChannelRtcStats](API_RTC_STATS.html#6704c0) API をご利用ください
- [CHANGE] [GetUserAgentStats](OBSOLETE_API_USER_AGENT_STATS.html#a078ba) API を廃止しました- 今後は [GetRtcStats](API_RTC_STATS.html#4e8cb0) API をご利用ください

#### レガシーシグナリングエラー廃止

- [CHANGE] `sora.conf` のレガシーシグナリングを指定する `legacy_signaling_error` を廃止しました- `log/connection_created_wait_timeout` にログが出力されなくなりました
  - `log/signaling_error.jsonl` にシグナリングエラーログが出力されるようになりました
  - `connection.failed` ウェブフックは **認証成功時** かつ **connection.created** が送信されていない場合のみ送信されるようになりました
  - `sora.jsonl` に認証失敗ログが出力されなくなりました
  - `sora.jsonl` にシグナリング失敗ログが出力されなくなりました

#### データチャネル

- [ADD] API やログで取得できるデータチャネル関連の統計情報を追加しました- `total_enqueued_sent_chunk`- SCTP 送信用キュー (sent_queue) に追加されたチャンク数
  - `total_dequeued_sent_chunk`- SCTP 送信用キュー (sent_queue) から取り出されたチャンク数
  - `total_enqueued_outbound_chunk`- SCTP 送信待ちキュー (outbound_queue) に追加されたチャンク数
  - `total_dequeued_outbound_chunk`- SCTP 送信待ちキュー (outbound_queue) から取り出されたチャンク数
  - `total_increased_flight_size`- SCTP フライトサイズの増加量の合計値 (バイト単位)
  - `total_decreased_flight_size`- SCTP フライトサイズの減少量の合計値 (バイト単位)
  - `total_expired_t3_timer`- SCTP T3 タイマーの満了回数

#### ウェブフック

- [CHANGE] イベントウェブフック利用時のワーカー数を指定する [event_webhook_worker_number](SORA_CONF.html#58523d) のデフォルトを 5 から 100 に変更しました
- [ADD] イベントウェブフック利用時にウェブフックがどのワーカーを利用するかを判断する [event_webhook_worker_key](SORA_CONF.html#d73d7a) を追加しました- デフォルトは `channel_id` です
  - `channel_id` の場合はチャネル ID 単位でイベントウェブフックは同一のウェブフックワーカーを利用します- 例えば `channel_id` が `sora` に接続している全てのクライアントは同一ウェブフックを利用します
  - `connection_id` の場合はコネクション ID 単位でイベントウェブフックは同一のウェブフックワーカーを利用します- `connection_id` は接続ごとにユニークなため、同じチャネルに接続しているコネクションでも、それぞれに割り当てられたウェブフックワーカーを利用します
- [ADD] セッションウェブフック [session.destroyed](SESSION_WEBHOOK.html#ccb165) を送信しないようにする [ignore_session_destroyed_webhook](SORA_CONF.html#1ad557) を追加しました- デフォルトは `false` です
  - この設定を `true` にすると [session.destroyed](SESSION_WEBHOOK.html#ccb165) を送信しなくなります
- [ADD] セッションウェブフック [recording.report](SESSION_WEBHOOK.html#920a02) を送信しないようにする [ignore_recording_report_webhook](SORA_CONF.html#1faedc) を追加しました- デフォルトは `false` です
  - この設定を `true` にすると [recording.report](SESSION_WEBHOOK.html#920a02) を送信しなくなります
- [ADD] イベントウェブフック [archive.available](EVENT_WEBHOOK.html#de9132) を送信しないようにする [ignore_archive_available_webhook](SORA_CONF.html#5de946) を追加しました- デフォルトは `false` です
  - この設定を `true` にすると [archive.available](EVENT_WEBHOOK.html#de9132) を送信しなくなります
- [ADD] イベントウェブフック [split-archive.end](EVENT_WEBHOOK.html#31be7a) を送信しないようにする [ignore_split_archive_end_webhook](SORA_CONF.html#c7a923) を追加しました- デフォルトは `false` です
  - この設定を `true` にすると [split-archive.end](EVENT_WEBHOOK.html#31be7a) を送信しなくなります
- [ADD] イベントウェブフック [archive.failed](EVENT_WEBHOOK.html#5006f8) を送信しないようにする [ignore_archive_failed_webhook](SORA_CONF.html#c355b0) を追加しました- デフォルトは `false` です
  - この設定を `true` にすると [archive.failed](EVENT_WEBHOOK.html#5006f8) を送信しなくなります

#### ログ

- [ADD] API ログ `api.jsonl` に `id` を追加しました- `id` は Base32 化した UUIDv4 です
- [ADD] `event_webhook.jsonl` に `connection.updated` を出力しなくする [event_webhook_connection_updated_log](SORA_CONF.html#435f7c) を `sora.conf` に追加しました- デフォルトは `true` です
  - この設定を `false` にすると `event_webhook.jsonl` に `connection.updated` を出力しなくなります
- [ADD] `session_webhook.jsonl` に `session.updated` を出力しなくする [session_webhook_session_updated_log](SORA_CONF.html#0fba6b) を `sora.conf` に追加しました- デフォルトは `true` です
  - この設定を `false` にすると `session_webhook.jsonl` に `session.updated` を出力しなくなります

#### 映像コーデックパラメーター追加

- [ADD] AV1 コーデックパラメーターに `level_idx` を指定できるようにしました- デフォルトは `5` です
  - 範囲は `0` から `31` の整数が指定できます
- [ADD] AV1 コーデックパラメーターに `tier` を指定できるようにしました- デフォルトは `0` です
  - 範囲は `0` か `1` の整数が指定できます
- [ADD] H.265 コーデックパラメーターに `profile_id` を指定できるようにしました- デフォルトは `1` です
  - 範囲は `0` から `31` の整数が指定できます
- [ADD] H.265 コーデックパラメーターに `tier_flag` を指定できるようにしました- デフォルトは `0` です
  - 範囲は `0` か `1` の整数が指定できます
- [ADD] H.265 コーデックパラメーターに `tx_mode` を指定できるようにしました- デフォルトは `SRST` です
  - `SRST` か `MRST` か `MRMT` が指定できます

#### グループ機能

**これは実験的機能です**

セッションをグルーピングする `group_id` をセッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しで指定できるようになりました。

- [ADD] セッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しで `group_id` を指定できるようになりました- `group_id` は 1 バイト以上 255 バイト以下の文字列です
  - `group_id` は未指定の場合は `session_id` が入ります
- [ADD] [ListSessions](API_SESSION.html#748f19) API に `group_id` を指定できるようになりました- `group_id` を指定した場合は指定した `group_id` のセッションのみを返します
  - `group_id` はオプションです
  - `group_id` を指定しない場合は全てのセッションを返します
- [ADD] `session_id` 項目を含むウェブフックのリクエストに `group_id` を含めるようにしました
- [ADD] `session_id` 項目を含む API の戻り値に `group_id` も含めるようにしました
- [ADD] `session_id` 項目を含むログに `group_id` を含めるようにしました
- [ADD] `session_id` 項目を含む録画メタデータに `group_id` を含めるようにしました

> **注釈**
>
> クライアントへの送るシグナリングメッセージには `group_id` は含まれません。

> **注意**
>
> [session.created](SESSION_WEBHOOK.html#1d1984) で `group_id` を指定して、ウェブフックの戻り値を受け取るまでは `group_id` は `session_id` の値になります。

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

セッション単位での最大同時接続数制限機能を正式版としてリリースしました。

- [ADD] [session.created](SESSION_WEBHOOK.html#1d1984) でセッション単位での最大同時接続数を制限する `max_connections` を払い出せるようになりました- 正式版リリースに伴い `trial_max_connections` は 2025 年 12 月リリース予定の Sora にて廃止します- `trial_max_connections` は廃止後には無視します
  - `trial_max_connections` と `max_connections` を同時に指定した場合は `max_connections` が優先されます

#### クラスターリレー機能でツリー構造の採用

今までのクラスターリレー機能は他のノードへの転送はクライアントが配信しているノードが担当していました。
この場合多くのノードにリレーが発生するとそのノードの負荷が高くなってしまいます。

そこで、リレーを [Plumtree](https://asc.di.fct.unl.pt/~jleitao/pdf/srds07-leitao.pdf) という分散アルゴリズムを利用したツリー構造を採用する事で、冗長なリレーを削減し、ノードの負荷分散を実現しました。

#### セッション単位でのクライアント ID 重複時の既存接続の追い出し機能

**これは実験的機能です**

今までのクライアント ID の重複を許可するのに加えて、
既存の同一クライアント ID の接続を破棄することをセッション単位で指定できるようになりました。

この仕組みはセッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しで、
`duplicate_client_id` に `evict` を指定することで有効になります。

- [ADD] `sora.conf` にクライアント ID が重複するコネクションが認証に成功した際の挙動を指定する [default_duplicate_client_id](SORA_CONF.html#c8b57b) を追加しました- デフォルトは `allow` です
  - `allow` は未指定と同じで、今まで通り重複を許容します
  - `evict` は既存の接続を破棄し、新規接続を受け入れます
- [ADD] セッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しにセッション単位での重複するクライアント ID を持つコネクションが認証成功した際の挙動を指定する `duplicate_client_id` を払い出せるようになりました- `duplicate_client_id` には `allow` または `evict` を指定できます
  - 未指定は `sora.conf` の [default_duplicate_client_id](SORA_CONF.html#c8b57b) の値を利用します
  - `allow` は今まで通り重複を許容します
  - `evict` は既存の接続を破棄し、新規接続を受け入れます
- [ADD] クライアント ID の重複によるコネクションを破棄した際 [connection.destroyed](EVENT_WEBHOOK.html#6c02d0) の `data.reason` に `"duplicate_client_id"` を含めるようにしました- この値はセッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しで `duplicate_client_id` に `evict` を指定して既存接続を破棄した場合に `data.reason` に含まれます

#### 統計機能

- [ADD] 実験的機能として [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) に Sora 内部で発生した遅延の累積値 (マイクロ秒単位)  `total_sent_srtp_sfu_delay_us` を追加しました
- [ADD] 実験的機能として [GetStatsConnection](API_STATS.html#e79b61) に Sora 内部で発生した遅延の累積値 (マイクロ秒単位)  `total_sent_rtp_sfu_delay_us` を追加しました
- [ADD] 実験的機能として [GetStatsClient](API_STATS.html#ef69ae) に Sora 内部で発生した遅延の累積値 (マイクロ秒単位)  `total_sent_rtp_sfu_delay_us` を追加しました
- [ADD] 実験的機能として [GetStatsAllConnections](API_STATS.html#ef695a) に Sora 内部で発生した遅延の累積値 (マイクロ秒単位)  `total_sent_rtp_sfu_delay_us` を追加しました

#### 帯域推定機能

帯域推定機能を追加しました、様々な情報を利用し帯域推定を行います。

以下を参考にしています。

- [RFC 8888 - RTP Control Protocol (RTCP) Feedback for Congestion Control](https://datatracker.ietf.org/doc/html/rfc8888)
- [RFC 8869 - Evaluation Test Cases for Interactive Real-Time Media over Wireless Networks](https://datatracker.ietf.org/doc/html/rfc8869)
- [RFC 8868 - Evaluating Congestion Control for Interactive Real-Time Media](https://datatracker.ietf.org/doc/html/rfc8868)
- [RFC 8867 - Test Cases for Evaluating Congestion Control for Interactive Real-Time Media](https://datatracker.ietf.org/doc/html/rfc8867)
- [RFC 8836 - Congestion Control Requirements for Interactive Real-Time Media](https://datatracker.ietf.org/doc/html/rfc8836)
- [RTP Extensions for Transport-wide Congestion Control](https://datatracker.ietf.org/doc/html/draft-holmer-rmcat-transport-wide-cc-extensions-01)
- [A Google Congestion Control Algorithm for Real-Time Communication](https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02)
- [BBR: Congestion-Based Congestion Control - ACM Queue](https://queue.acm.org/detail.cfm?id=3022184)

#### シグナリング通知 network.status に帯域推定結果を追加

**これは実験的機能です**

実験的機能としてシグナリング通知の [ネットワークのシグナリング通知](SIGNALING_NOTIFY.html#58a82d) に帯域推定結果を通知する機能を追加しました。
これは受信者の帯域推定結果を通知するもので、送信者の帯域推定結果は通知しません。
そのため `role` が `sendrecv` または `recvonly` の場合に有効になります。

- [ADD] sora.conf に `legacy_signaling_notify_network_status` を追加しました- デフォルトは `false` です
  - この設定を `true` にするとシグナリング通知 network.status のフォーマットを 2024.2.x までと同様にします
  - この設定は 2025 年 12 月リリースの Sora にて廃止します
- [ADD] sora.conf にシグナリング通知 `network.status` の通知間隔を設定する [signaling_notify_network_status_interval](SORA_CONF.html#e0f78e) を追加しました- デフォルトは `10 s` です
  - 最小は `20 ms` で、最大は `10 min` です
- [ADD] シグナリング通知 [ネットワークのシグナリング通知](SIGNALING_NOTIFY.html#58a82d) に `estimated_bandwidth` を追加しました- sora.conf の `legacy_signaling_notify_network_status` が `false` の場合に有効になります
  - この通知は role が `sendrecv` または `recvonly` の場合に通知します
  - 帯域推定の値が含まれます
- [ADD] シグナリング通知 [ネットワークのシグナリング通知](SIGNALING_NOTIFY.html#58a82d) に `previous_estimated_bandwidth` を追加しました- sora.conf の `legacy_signaling_notify_network_status` が `false` の場合に有効になります
  - この通知は role が `sendrecv` または `recvonly` の場合に通知します
  - 前回通知時の帯域推定の値が含まれます
  - 初回の通知時は 0 が入ります
- [ADD] シグナリング通知 [ネットワークのシグナリング通知](SIGNALING_NOTIFY.html#58a82d) に `unix_timestamp_ms` を追加しました- sora.conf の `legacy_signaling_notify_network_status` が `false` の場合に有効になります
  - この通知は role が `sendrecv` または `recvonly` の場合に通知します
  - Unix タイムのミリ秒が含まれます
- [ADD] シグナリング通知 [ネットワークのシグナリング通知](SIGNALING_NOTIFY.html#58a82d) に `total_sent_rtp_byte_size` を追加しました- sora.conf の `legacy_signaling_notify_network_status` が `false` の場合に有効になります
  - この通知は role が `sendrecv` または `recvonly` の場合に通知します
  - 通知時の RTP (音声と映像) 送信合計バイトサイズが含まれます
- [ADD] シグナリング通知 [ネットワークのシグナリング通知](SIGNALING_NOTIFY.html#58a82d) に `previous_unix_timestamp_ms` を追加しました- sora.conf の `legacy_signaling_notify_network_status` が `false` の場合に有効になります
  - この通知は role が `sendrecv` または `recvonly` の場合に通知します
  - 前回通知時の Unix タイムのミリ秒が含まれます
  - 初回の通知時は 0 が入ります
- [ADD] シグナリング通知 [ネットワークのシグナリング通知](SIGNALING_NOTIFY.html#58a82d) に `previous_total_sent_rtp_byte_size` を追加しました- sora.conf の `legacy_signaling_notify_network_status` が `false` の場合に有効になります
  - この通知は role が `sendrecv` または `recvonly` の場合に通知します
  - 前回通知時の RTP (音声と映像) 送信合計バイトサイズが含まれます
  - 初回の通知時は 0 が入ります

#### ICE コネクションステート機能

- [ADD] 認証成功時の払い出しに ICE コネクションステートの `disconnected` 状態へ遷移するタイムアウトを指定する [ice_connection_state_disconnected_timeout_ms の払い出し](AUTH_WEBHOOK_RETURN.html#38a86f) を追加しました
- [ADD] 認証成功時の払い出しに ICE コネクションステートの `failed` 状態へ遷移するタイムアウトを指定する [ice_connection_state_failed_timeout_ms の払い出し](AUTH_WEBHOOK_RETURN.html#1f5eb9) を追加しました
- [ADD] `sora.conf` に ICE コネクションステート機能の `disconnected` 状態へ遷移するタイムアウトを指定する [default_ice_connection_state_disconnected_timeout](SORA_CONF.html#420a1e) を追加しました- [default_ice_connection_state_disconnected_timeout](SORA_CONF.html#420a1e) と  `ice_connection_state_disconnected_timeout` の値が設定している場合は `ice_connection_state_disconnected_timeout` の値を優先します
  - `sora.conf` の `ice_connection_state_disconnected_timeout` は 2025 年 12 月リリース予定の Sora にて廃止します
- [ADD] `sora.conf` に ICE コネクションステート機能の `failed` 状態へ遷移するタイムアウトを指定する [default_ice_connection_state_failed_timeout](SORA_CONF.html#d6f965) を追加しました- [default_ice_connection_state_failed_timeout](SORA_CONF.html#d6f965) と  `ice_connection_state_failed_timeout` の両方を設定している場合は `ice_connection_state_failed_timeout` の値を優先します
  - `sora.conf` の `ice_connection_state_failed_timeout` は 2025 年 12 月リリース予定の Sora にて廃止します

#### メディア配信ワーカー自動スケール機能

メディア配信ワーカー機能のワーカーを自動で増減する仕組みを追加しました。

- [CHANGE] `sora.conf` の配信ワーカー数を指定する `media_publish_worker_number` を廃止しました
- [ADD] `sora.conf` に配信ワーカー数を自動で増減させる閾値を指定する [media_publish_worker_autoscale_threshold](SORA_CONF.html#664e74) を追加しました- デフォルトは 50 です
- [ADD] メディア配信ワーカーに関する統計情報を追加しました- `media_publish_worker.peak_count`- その接続でこれまでに同時に起動した配信ワーカー数の最大値
  - `media_publish_worker.total_started`- その接続でこれまでに起動した配信ワーカーの総数
  - `media_publish_worker.total_stopped`- その接続でこれまでに停止した配信ワーカーの総数
  - `media_publish_worker.total_unknown_subscriber`- 配信ワーカーとの対応が存在しないサブスクライバー (受信側接続) の数

#### WHIP/WHEP 機能

WHIP が [RFC 9725](https://www.rfc-editor.org/rfc/rfc9725.html) として公開されたため、RFC への準拠を進めています。

- [CHANGE] `sora.conf` の `whip_turn` と `whep_turn` をデフォルト `true` に変更しました
- [CHANGE] WHIP/WHEP 利用時に `offer` の SDP に `a=sendrecv` を指定できるように変更しました
- [CHANGE] WHIP/WHEP 利用時にセッション URL に `PATCH` メソッドでアクセスした場合 `501` ではなく `422` を返すように変更しました
- [CHANGE] WHIP/WHEP 利用時にエンドポイントとセッション URL に `GET` や `HEAD` メソッドでアクセスした場合、 `405` ではなく `200` を返すように変更しました
- [CHANGE] RFC でリソース URL がセッション URL と名前が変わったことにより Location ヘッダーでは `/whip-session/:channel_id/:secret/` を払い出すように変更しました- 2025 年 12 月リリース予定の Sora にて `/whip-resource/:channel_id/:secret/` は廃止します
- [ADD] クラスター利用時に別のノードへのリダイレクトが発生した際に HTTP ステータスコード 307 を返すようにしました- OBS が HTTP ステータスコード 307 に対応していなかったため、Sora 2024.2.x まではノード間通信で認証処理を行うようにしていました
- [ADD] WHIP/WHEP 利用時にエンドポイントとセッション URL に `OPTIONS` メソッドでアクセスした場合 `Accept-Post` ヘッダーで `application/sdp` を返すようにしました

#### TURN-UDP 利用時の認証エラー時のレートリミット

TURN-UDP 時に認証エラーが発生した場合にレートリミットを設けて、
サイレントディスカードする仕組みを追加しました。デフォルトで特に困ることはありません。

- [ADD] GetStatsConnection API に TURN-UDP 利用時の認証エラー時のレートリミットを超えた回数 `total_turn_udp_allocate_request_401_rate_limit_exceeded` を追加しました- この値は TURN-UDP 利用時の認証エラー時のレートリミットを超えた回数を累積した値です
- [ADD] `sora.conf` に TURN-UDP 利用時の認証エラー時のレートリミットウィンドウを指定する [turn_udp_allocate_request_401_rate_limit_window](SORA_CONF.html#56ea52) を追加しました- デフォルトは `60 s` です
  - 最小は `1 s` で、最大は `60 s` です
- [ADD] `sora.conf` に TURN-UDP 利用時の認証エラー時のレートリミット回数を指定する [turn_udp_allocate_request_401_rate_limit_count](SORA_CONF.html#5deefa) を追加しました- デフォルトは `60` です
  - 最小は `0` で、最大は `300` です


## 2024.2.3

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

**リリース**: 2025 年 5 月 19 日

### 変更履歴

- [ADD] 録画機能利用時に Safari 18.4 から Safari 18.5 で H.264/H.265 を利用している場合に発生するタイムスタンプの不具合に対するワークアラウンド機能を追加しました- デフォルトでは未指定です
  - 指定する場合は `sora.conf` に `workaround_20250515 = 18.4,18.4.1,18.5` のように、ワークアラウンドに対応させる Safari のバージョンを `,` で区切って指定してください
  - iOS 版 Chrome でもワークアラウンドが有効になります
  - 詳細は [Safari タイムスタンプバグに対するワークアラウンド](WORKAROUND.html#e73b7a) をご確認ください。
- [FIX] 録画機能で Chrome 136 で特定のハードウェアエンコーダーと組み合わせた際、 H.265 の録画が正常に行えない問題を修正しました


## 2024.2.2

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

**リリース**: 2025 年 4 月 9 日

### 変更履歴

- [FIX] 依存している OpenSSL を 3.4.1 にアップデートしました
- [FIX] ウェブフック機能、音声ストリーミング機能、統計エクスポーター機能で HTTPS を利用する際、証明書の鍵の使用法と拡張された鍵の使用法の互換性チェックが間違っていたため、サポートされていないサーバー証明書と判断して接続に失敗する場合がある問題を修正しました- これは Sora が利用している PKI ライブラリのバグにより発生していた問題で、ライブラリをアップデートすることで解消しました


## 2024.2.1

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

**リリース**: 2025 年 1 月 8 日

### 変更履歴

- [FIX] AV1 コーデック利用時、主にハードウェアエンコーダーなど、 `libwebrtc` が採用している `libaom` 以外のエンコーダーを利用するとキーフレーム判定が失敗する場合がある問題を修正しました
- [FIX] クラスター構成で Sora 2024.1.x からのローリングアップデート中、録画が開始できない場合がある問題を修正しました
- [FIX] クラスター構成で Sora 2024.1.x からのローリングアップデート中、録画を開始すると `recording.report` ウェブフックが送信されない場合がある問題を修正しました


## 2024.2.0

**メジャーアップデート**

**リリース**: 2024 年 12 月 18 日

### ハイライト

- 録画アーカイブファイルの MP4 形式による出力に対応しました
- 録画アーカイブファイルの H.265 コーデックによる出力に対応しました
- リアルタイムメッセージング機能で、メッセージのヘッダーに送信元の connection_id を付与する機能を追加しました
- 実験的機能として、転送フィルター機能で複数のフィルターを設定できる「マルチ転送フィルター機能」を追加しました
- 実験的機能として、 [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しに、セッションの同時接続数を制限する `trial_max_connections` を追加しました
- 指定したコネクションにキーフレームを要求する [RequestKeyFrame](API_CONNECTION.html#716b40) API を追加しました

### 正式版

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

- [クラスター機能](CLUSTER.html)
- [センシティブデータ](SENSITIVE_DATA.html)
- [OBS (WHIP) 対応](WHIP.html)
- `メディア配信ワーカー機能`
- [セッションライフタイム機能](SESSION_WEBHOOK.html#36a751)
- [コネクションライフタイム機能](AUTH_WEBHOOK_RETURN.html#8b77ca)
- [TerminateSession](API_SESSION.html#ba022b) API

### 破壊的変更

- 既存のセッションの同時接続数が `0` の際に、このセッションと異なる `multistream` または `spotlight` 設定の新規接続が来た場合、エラーになるように変更しました
- クライアントに通知されるエラーメッセージを改善しました
- 転送フィルターの認証成功時の払い出しエラーが発生した場合、接続が失敗するようになりました
- 転送フィルターのセッション生成時の払い出しエラーが発生した場合、セッションが破棄されるようになりました- [session_created_response_validate_warning_as_error](SORA_CONF.html#9df65e) が `false` の場合でもエラーとなりセッションを破棄します
- 統計情報に含まれる `total_received_intra_frame` を `total_received_key_frame` に変更しました

### 廃止情報

- [JoinCluster](OBSOLETE_API.html#17f3f5) API を廃止しました- 今後は同じ機能を持つ [RegisterClusterNode](API_CLUSTER.html#09ed96) 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_filter` は 2025 年 12 月リリース予定の Sora で廃止します
  - 代わりに複数の転送フィルターを指定できる `forwarding_filters` をご利用ください
- シグナリング接続時に転送フィルターを指定できる `signaling_forwarding_filter` を非推奨にしました- `signaling_forwarding_filter` は 2025 年 12 月リリース予定の Sora で廃止します
  - 代わりに複数の転送フィルターを指定できる [signaling_forwarding_filters](SORA_CONF.html#bf0e30) をご利用ください
- `mode_session_vanished` を非推奨にしました- `mode_session_vanished` は 2025 年 6 月リリース予定の Sora にて廃止します
  - 代わりに [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API の `total_ongoing_connections` をご利用ください。
  - 値の監視については [Sora Exporter](SORA_EXPORTER.html) の利用をお勧めします
- [RTP ストリーム停止/再開 API](OBSOLETE_API_RTP_STREAM_PAUSE_RESUME.html) を非推奨にしました- [RTP ストリーム停止/再開 API](OBSOLETE_API_RTP_STREAM_PAUSE_RESUME.html) は 2025 年 12 月リリース予定の Sora にて廃止します
  - 代わりに [転送フィルター](FORWARDING_FILTER.html) をご利用ください

### 変更履歴

- [CHANGE] 統計情報に含まれる `total_received_intra_frame` を `total_received_key_frame` に変更しました- [RequestKeyFrame](API_CONNECTION.html#716b40) API に合わせた変更になります
- [CHANGE] `spotlight.focused` と `spotlight.unfocused` イベントウェブフックの送信を行わない場合はログを書き込まないよう変更しました
- [CHANGE] ウェブフックを送信を行わない (ignore) の設定した場合でも以下のウェブフックはログを出力するように変更しました- `recording.started` セッションウェブフック
  - `session.updated` セッションウェブフック
  - `session.vanished` セッションウェブフック
  - `connection.failed` イベントウェブフック- `legacy_signaling_error` が `true` かつ `ignore_connection_failed_webhook` が `true` の場合、ログを出力しません
  - `archive.started` イベントウェブフック
  - `recording.started` イベントウェブフック
- [CHANGE] `E2EE` 機能を廃止しました- `sora.conf` の `e2ee` を廃止しました
  - ウェブフックに含まれる `e2ee` は常に `false` が含まれます
- [ADD] [copy_websocket_signaling_header_names](SORA_CONF.html#db39f3) で指定した WebSocket シグナリングの HTTP ヘッダーを `rtc_stats.jsonl` と `connection.jsonl` に `copy_headers` 項目で出力するようにしました
- [ADD] 特定環境向けに TURN 利用時に 5-TUPLE を無視する設定を追加しました- **この機能を利用する場合は事前にサポートまでご連絡ください**
  - `sora.conf` の [ignore_turn_five_tuple](SORA_CONF.html#14e2aa) を `true` に設定することで、送られてくるパケットの 5-TUPLE を無視するようになります
- [ADD] `"type": "offer"` メッセージに `audio` と `video` 関連項目を追加しました- `audio` は必ず含まれます
  - `audio_codec_type` はオプションで、 `audio` が `true` かつ `role` が `sendrecv` または `sendonly` の場合に含まれます
  - `audio_bit_rate` はオプションで、 `audio` が `true` かつ `role` が `sendrecv` または `sendonly` で `audio_bit_rate` が指定された場合に含まれます
  - `video` は必ず含まれます
  - `video_codec_type` はオプションで、 `video` が `true` かつ `role` が `sendrecv` または `sendonly` の場合に含まれます
  - `video_bit_rate` はオプションで、 `video` が `true` かつ `role` が `sendrecv` または `sendonly` の場合に含まれます
- [ADD] サイマルキャスト機能の設定項目に `scaleResolutionDownTo` を追加しました- `{"maxHeight": 1080, "maxWidth": 1920}` のように解像度を指定することができるようになります
  - この機能は Chrome/Edge 131 以降で利用できます
- [ADD] `connection.jsonl` に `simulcast_encodings` と `simulcast_codecs` 項目を追加しました- `simulcast` のみ `true` の場合は `simulcast_encodings` を出力します
  - `simulcast` と `simulcast_multicodec` が `true` の場合は `simulcast_codecs` も出力します
- [FIX] Safari や Chrome Canary で H.265 の配信ができない問題を修正しました
- [FIX] コネクションの切断が発生しない録画失敗のログレベルを `error` から `warning` に修正しました
- [FIX] 録画ファイル書き込みに失敗するとクラッシュログが出力されることがある問題を修正しました
- [FIX] サイマルキャスト機能利用時に `simulcast_encodings` に `active` を未指定だと接続が失敗する問題を修正しました
- [FIX] H.264 の RTP ペイロードヘッダーが不正な場合、サイレントディスカードするように修正しました

#### sora.conf

- [CHANGE] `sora.conf` の `legacy_recording` のデフォルトを `true` から `false` に変更しました
- [CHANGE] `sora.conf` の移行用の設定 `legacy_auth_webhook_log` 設定を廃止しました
- [CHANGE] `sora.conf` の移行用の設定 `legacy_event_webhook_connection_destroyed_reason` 設定を廃止しました
- [CHANGE] `sora.conf` の [default_h264_param_profile_level_id](SORA_CONF.html#1581db) のデフォルト値を `42e01f` から `42e02a` へ変更しました- Chrome / Edge がデフォルト値を変更した事への追従です
- [UPDATE] `sora.conf` の [connection_created_wait_timeout](SORA_CONF.html#0509af) の最小値を `1 s` から `0 s` へ変更しました- 挙動確認などで意図的にエラーを発生させられるように変更しました
- [FIX] ウェブフック送信時にボディを待つ時間に [webhook_response_timeout](SORA_CONF.html#e81d13) が反映されていない問題を修正しました
- [FIX] ウェブフック送信時に TCP コネクションの確立を待つ時間に [webhook_connect_timeout](SORA_CONF.html#7a0122) が反映されていない問題を修正しました

#### API

- [UPDATE] [ListConnections](API_SIGNALING.html#d3da2a) API の戻り値に `node_name` を追加しました
- [UPDATE] [ListChannelConnections](API_SIGNALING.html#d388f3) API の戻り値に `node_name` を追加しました
- [UPDATE] [GetStatsAllConnections](API_STATS.html#ef695a) API の戻り値に `session_id` を追加しました
- [UPDATE] [GetStatsConnection](API_STATS.html#e79b61) API の戻り値に `session_id` を追加しました
- [UPDATE] [GetStatsClient](API_STATS.html#ef69ae) API の戻り値に `session_id` を追加しました
- [ADD] 指定したクライアントにキーフレームを要求する [RequestKeyFrame](API_CONNECTION.html#716b40) API を追加しました- レガシーストリームでは利用できません
- [FIX] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API のウェブフック統計情報はウェブフックを送信したときのみカウントされるように修正しました
- [FIX] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API のウェブフック統計情報が正しくカウントされない問題を修正しました- `total_ignored_session_webhook` が実際よりも少なくカウントされていた問題を修正しました
  - [audio-streaming.started](SESSION_WEBHOOK.html#e7b17a) と [audio-streaming.stopped](SESSION_WEBHOOK.html#13e583) のウェブフック統計情報が `total_ignored_XXX_webhook` と `total_successful_XXX_webhook` の両方がカウントされていた問題を修正しました

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

**これは実験的機能です**

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

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

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

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

- [ADD] [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しにセッションの同時接続数を制限する `trial_max_connections` を追加しました- デフォルトは未指定で制限がない状態です
  - 指定できる範囲は 0..10000 です
  - `trial_max_connections` が `0` の場合は誰も接続することができなくなります
  - セッションが同時接続数制限に達した場合はクライアントに `SERVICE-UNAVAILABLE` を通知します

#### 統計情報の追加

- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) 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](EXPERIMENTAL_API_STATS.html#bbbfca) 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](EXPERIMENTAL_API_STATS.html#bbbfca) API に無視されたウェブフックの統計情報を追加しました- `total_ignored_session_webhook`- 無視されたセッションウェブフックの合計数
  - `total_ignored_event_webhook`- 無視されたイベントウェブフックの合計数
  - `total_ignored_stats_webhook`- 無視された統計ウェブフックの合計数

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

- [CHANGE] WebSocket シグナリング利用時にメッセージサイズが大きすぎる場合の `code` を `4490` から `1009` に変更しました- メッセージサイズの最大は 5 MiB です
  - WebSocket の仕様に合わせました
- [CHANGE] WebSocket シグナリング利用時に Sora 側からのクライアントへの通知を改善しました- 正常切断- `code` は `1000` です
    - `reason` には切断理由が含まれます- `TYPE-DISCONNECT`
      - `DISCONNECTED-API`
      - `LIFETIME-EXPIRED`
      - `SESSION-DESTROYED`
  - 異常切断- 異常が発生して Sora 側から切断した場合は `code` に `4490` が含まれます
    - `reason` には切断理由が含まれます
- [ADD] `sora.conf` に [data_channel_signaling_close_message](SORA_CONF.html#058a1e) を追加しました- デフォルトは `false` です
  - `true` の場合は Sora からコネクションを切断する際、 DataChannel シグナリングが有効かつ、`ignore_disconnect_websocket` が `true` な場合 `signaling` ラベルに `"type": "close"` メッセージを送信します
  - `false` の場合は今まで通り、 DataChannel を閉じます
  - `"type": "close"` メッセージには `code` と `reason` が含まれます
  - 正常切断- 切断 API や期限切れで Sora 側から切断した場合は `code` に `1000` が含まれます
    - `reason` には切断理由が含まれます- `LIFETIME-EXPIRED`
      - `SESSION-DESTROYED`
      - `DISCONNECTED-API`
  - 異常切断- 異常が発生して Sora 側から切断した場合は `code` に `4490` が含まれます
    - `reason` には切断理由が含まれます
- [ADD] `sora.conf` に [signaling_normal_close_reason](SORA_CONF.html#4486a4) を追加しました- デフォルトは `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_webhook` が `true` の場合、 `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`
    - `INVALID-SIGNALING-PARAMS`
    - `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`- 指定していない場合は項目が含まれません
- [FIX] AV1 サイマルキャスト使用時に録画が正常に行われない問題を修正しました

#### MP4 録画機能

**これは実験的機能です**

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

- [ADD] MP4 形式での録画に対応しました- **MP4 録画機能はレガシー録画機能では利用できません**
  - OBS が提唱する Hybrid MP4 形式に対応しています
- [ADD] `sora.conf` に [default_recording_format](SORA_CONF.html#f9fa7d) を追加しました- デフォルトは `webm` です
  - `webm` と `mp4` が指定できます
  - MP4 録画機能はレガシー録画機能では利用できません
- [ADD] [StartRecording](API_RECORDING.html#c5b527) API に `format` (オプション) を追加しました- `format` には `webm` と `mp4` が指定できます
  - `format` が未指定の場合は [default_recording_format](SORA_CONF.html#f9fa7d) の値が利用されます
  - 映像コーデックが H.265 の場合 `format` に `mp4` を指定しない場合、録画が行われません
- [ADD] [session.created](SESSION_WEBHOOK.html#1d1984) の払い出しに `recording_format` を追加しました- `recording_format` には `webm` と `mp4` が指定できます
  - `recording_format` が未指定の場合は [default_recording_format](SORA_CONF.html#f9fa7d) の値が利用されます
  - 映像コーデックが H.265 の場合 `format` に `mp4` を指定しない場合、録画が行われません
- [ADD] [session.updated](SESSION_WEBHOOK.html#2a5b1b) の `recording` に `format` を追加しました- `"format": "webm"` または `"format": "mp4"` が含まれるようになりました
- [ADD] セッションウェブフック `recording.*` に `data.format` を追加しました- `"format": "webm"` または `"format": "mp4"` が含まれるようになりました
- [ADD] イベントウェブフック `archive.*` と `split-archive.*` に `data.format` を追加しました- `"format": "webm"` または `"format": "mp4"` が含まれるようになりました
- [ADD] `sora.conf` に録画機能(セッション単位) 利用時に MP4 形式を利用した場合、クライアントへ送るキーフレーム要求 (PLI) の間隔を指定できる [default_recording_mp4_pli_interval](SORA_CONF.html#874e5b) を追加しました- デフォルトは `20 s` です
  - 最小は `1 s` で、最大は `240 s` です
  - WebM 形式ではキーフレームの間隔が最大でも 31 秒までという制約がありましたが、 MP4 形式ではこの制約がなくなりました

#### H.265 録画機能

**これは実験的機能です**

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

- [ADD] H.265 録画機能に対応しました- H.265 は `format` に `mp4` が設定されている場合のみ録画ができます
  - WebM 形式を設定した場合 H.265 の録画は行われません
  - H.265 録画機能はレガシー録画では利用できません

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

**これは実験的機能です**

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

この機能を利用することで、
自分の ICE コネクションステートの変更を **同じセッションに参加している自分を含むクライアント全員** へシグナリング通知が送信されます。
また、接続時に **既にチャネルに参加しているクライアント全員の ICE コネクションステート** を取得できるようになります。

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

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

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

1. connected から checking になった時
2. checking から connected になった時
3. checking から disconnected になった時
4. disconnected から checking になった時

- [ADD] `sora_conf` に [signaling_notify_ice_connection_state](SORA_CONF.html#e65192) を追加しました- デフォルトは `false` です
  - `true` に設定すると ICE コネクションステートが変更された際に、同一チャネルに接続しているクライアントへシグナリング通知 `ice-connection-state.changes` を送信します
  - `true` にするとチャネル参加時のシグナリング通知 `connection.created` の既存参加者の `data` に `ice_connection_state` が含まれるようになります
- [ADD] 認証成功時の払い出しに `signaling_notify_ice_connection_state` を追加しました- デフォルトは [signaling_notify_ice_connection_state](SORA_CONF.html#e65192) の値が採用されます
  - `false` を払い出すことで自身の ICE コネクションステートの状態を他のチャネルに参加しているクライアントへシグナリング通知が送信されなくなります
- [ADD] ICE コネクションステートを強制的に変更し維持する [LockIceConnectionState](TEST_API.html#8b5622) テスト API を追加しました

#### 転送フィルター機能

- [CHANGE] 認証成功時の転送フィルターの払い出しがエラーになった場合、接続が失敗するように変更しました- `INTERNAL-ERROR` エラーとなります
- [CHANGE] セッション生成時の転送フィルターの払い出しがエラーになった場合、セッションを破棄するように変更しました- `INTERNAL-ERROR` エラーとなります
  - [session_created_response_validate_warning_as_error](SORA_CONF.html#9df65e) が `false` の場合でもエラーとなりセッションを破棄します

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

**これは実験的機能です**

マルチ転送フィルター機能は 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_CONF.html#bf0e30) を追加しました- `signaling_forwarding_filter` は 2025 年 12 月リリースの Sora にて廃止します
- [ADD] 転送フィルター設定時に `name` と `priority` を指定できるようになりました
- [ADD] 転送フィルター API [ListForwardingFilters](API_FORWARDING_FILTER.html#a1dd75) にチャネルの転送フィルターをリストで表示する `channel_forwarding_filters` を追加しました- 既存の `channel_forwarding_filter` は 2025 年 12 月リリース予定の Sora にて廃止します
- [ADD] 転送フィルター API [CreateChannelForwardingFilter](API_FORWARDING_FILTER.html#fe98d1) と [CreateConnectionForwardingFilter](API_FORWARDING_FILTER.html#d80a51) に `name` と `priority` を追加しました
- [ADD] 転送フィルター API [UpdateChannelForwardingFilter](API_FORWARDING_FILTER.html#36fc45) と [UpdateConnectionForwardingFilter](API_FORWARDING_FILTER.html#23ed63) に `name` と `priority` を追加しました
- [ADD] 転送フィルター API [DeleteChannelForwardingFilter](API_FORWARDING_FILTER.html#9410fd) と [DeleteConnectionForwardingFilter](API_FORWARDING_FILTER.html#0d65da) に `name` を追加しました

詳細は [マルチ転送フィルター機能](MULTI_FORWARDING_FILTER.html) をご確認ください。

#### 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"}]` のように指定します
  - `type` は `sender_connection_id` のみ指定できます- `sender_connection_id` はメッセージングの送信元の connection_id です
    - 先頭 26 バイトが `sender_connection_id` になります
    - 将来的に指定できる `type` を増やして行く予定です
  - `"type": "offer"` 時の `data_channels` に `header` が含まれる場合、 `length` 項目を追加します- `length` は `sender_connection_id` の長さです
    - `length` の単位はバイトです
    - `sender_connection_id` の場合 `length` は 26 固定です

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

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

- [ADD] 音声ストリーミング機能利用時に `sora.conf` に [audio_streaming_header](SORA_CONF.html#3edcef) を追加しました- デフォルトは `false` です
  - `true` に設定すると音声パケットに Sora がヘッダーを追加します
  - ヘッダーのフォーマットは `[Timestamp:64 bit, SequenceNumber:64 bit, Length:32 bit]` です
  - `timestamp` は音声パケット送信時の UTC 時間マイクロ秒の整数です- RTP のタイムスタンプとは異なります
  - `seq_num` は音声パケットのシーケンス番号で、 1 から始まります- RTP のシーケンス番号とは異なります
  - `length` はヘッダーを除いた音声パケットの長さです

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

#### プレイアウト遅延機能

**実験的機能です**

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

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

- [ADD] sendrecv と recvonly のロールに影響するよう設定を変更しました- sendonly には影響しません
- [CHANGE] `sora.conf` の [default_playout_delay_min_delay](SORA_CONF.html#194218) は視聴側のプレイアウト遅延の最小値のデフォルトを指定するように変更しました- デフォルトは未指定です
- [CHANGE] `sora.conf` の [default_playout_delay_max_delay](SORA_CONF.html#c1b0ab) は視聴側のプレイアウト遅延の最大値のデフォルトを指定するように変更しました- デフォルトは未指定です
- [CHANGE] 認証成功時の払い出し `playout_delay_min_delay` は視聴側の最小値を指定するように変更しました- `playout_delay_max_delay` も一緒に指定する必要があります
- [CHANGE] 認証成功時の払い出し `playout_delay_max_delay` は視聴側の最大値を指定するように変更しました- `playout_delay_min_delay` も一緒に指定する必要があります

詳細は [プレイアウト遅延機能](PLAYOUT_DELAY.html) をご確認ください。

#### テスト API

- [UPDATE] テスト API がクラスターで利用できるようになりました
- [UPDATE] テスト向け API の録画失敗を意図的に起こす [FailArchive](TEST_API.html#80c0b0) API をクラスターに対応しました
- [UPDATE] テスト向け API のシグナリング通知を送信する [SendSignalingNotify](TEST_API.html#c9b5c5) 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](SORA_CONF.html#6cf562) のデフォルトを `false` に変更しました- 詳細については [Chrome/Edge の不具合による録画機能利用時の音ズレ問題について](KNOWN_ISSUES.html#e85482) をご確認ください


## 2024.1.1

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

**リリース**: 2024 年 7 月 1 日

### 変更履歴

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


## 2024.1.0

**メジャーアップデート**

**リリース**: 2024 年 6 月 26 日

### ハイライト

- クラスターリレー機能を追加しました- いずれのノードからでも同一のチャネルに接続できるようになりました
- クラスターアフィニティ機能を追加しました- リレー機能利用時に、特定のノードに同一セッションの接続を集約する仕組みを追加しました
  - この機能によりノード間通信を極力発生させないようにすることができます
- ライセンスの同時接続数の合計を維持する機能を追加しました- ノードに障害が発生したとしても、クラスター全体の同時接続数を維持できるようになりました
- テンポラリーノード機能を追加しました- クラスターの維持に影響しないノードを手軽に削除できるようになりました
- OBS WHEP に対応しました- OBS の WHEP ソース機能を利用し Sora から映像を取得できるようになりました
  - 2026 年 6 月 現在、OBS 安定版では WHEP に対応していません
- OBS WHIP/WHEP の TURN に対応しました- 2026 年 6 月 現在、OBS 安定版では TURN に対応していません
- OBS WHIP/WHEP の H.265 (HEVC) に対応しました- 2026 年 6 月 現在、OBS 安定版では H.265 に対応していません
- セッションとコネクションが破棄される時間を指定できるライフタイム機能を追加しました- セッションやコネクションで指定した時間が経過すると自動的に破棄されるようになりました
- 複数のコーデックで、複数の画質が同時に配信できるサイマルキャストマルチコーデック機能を追加しました- 2026 年 6 月 現在、ブラウザでは利用できません
- 音声トラックを削除した後に、再度音声トラックを追加した際に正常に録音されない問題に対応しました- Chrome/Edge の不具合により、今まで音声がずれて録画されてしまっていた問題を解決しました
  - Safari でも同様の不具合を確認していますが、本対応では解決できていません

### 正式版

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

- [モード機能](MODE.html)
- [転送フィルター機能](FORWARDING_FILTER.html)
- [音声ストリーミング機能](AUDIO_STREAMING.html)
- [録画ブロック機能の払い出し](AUTH_WEBHOOK_RETURN.html#0c4e64)
- SDP 再利用機能- [recycle_media_section](SORA_CONF.html#d3e2b5)

### 廃止情報

- CentOS 7 向けパッケージの提供を終了しました
- モード機能のイニシャルモードを廃止しました
- 認証成功時に払い出す `h264_profile_level_id` を廃止しました- 代わりに `"video_h264_params": {"profile_level_id": "<profile-level-id>"}` を使用してください
- `sora.conf` から `default_h264_profile_level_id` を廃止しました- 代わりに [default_h264_param_profile_level_id](SORA_CONF.html#1581db) を使用してください
- 実験的機能として提供していた `sora.conf` の `rtp_publish_worker_number` を廃止しました- 代わりに `media_publish_worker_number` を使用してください
- 実験的機能として提供していた Lyra を廃止しました- Opus 1.5 で Lyra 同様の低ビットレートが利用可能になったこと、Lyra が 2 年間更新がないことが廃止の理由です
- `sora.conf` の `contact_node_name_list` を廃止しました- 今後は [RegisterClusterNode](API_CLUSTER.html#09ed96) API を利用してください
- `sora.conf` の `cluster_auto_connect` を廃止しました- クラスター機能の自動での再接続は常に有効になります

### 非推奨情報

- Ubuntu 20.04 の提供を Sora 2024.1.x 系をもって終了します- Ubuntu 20.04 は 2025 年 4 月にサポートが終了します
- `multistream: false` で利用するレガシーストリームを非推奨にしました- `multistream: false` は 2025 年 6 月リリース予定の Sora で廃止します
  - マルチストリームを利用してください
- `JoinCluster` API を非推奨にしました- `JoinCluster` API は 2024 年 12 月リリース予定の Sora で廃止します
  - [RegisterClusterNode](API_CLUSTER.html#09ed96) API を利用してください
- [ListClusterNodes](API_CLUSTER.html#a70901) API の `include_all_known_nodes` 指定を非推奨にしました- `include_all_known_nodes` は 2024 年 12 月リリース予定の Sora で廃止します
  - 廃止後は `include_all_known_nodes` が常に `true` として動作するようになります
- 統計エクスポーター機能を非推奨にしました- 統計エクスポーター機能は 2025 年 6 月リリース予定の Sora で廃止します
  - [統計ウェブフック](STATS_WEBHOOK.html) を利用してください
- ユーザエージェント統計を非推奨にしました- ユーザエージェント統計は 2025 年 6 月リリース予定の Sora で廃止します
  - RTC 統計情報を利用してください
- ユーザエージェント統計 API を非推奨にしました- ユーザエージェント統計 API は 2025 年 6 月リリース予定の Sora で廃止します
  - [RTC 統計情報](API_RTC_STATS.html) API を利用してください

### 破壊的変更

- クラッシュを意図的に発生させるテスト用 `Sora_20221221.GenerateCrashLog` API を [Sora_20380119.GenerateCrashLog](TEST_API.html#26eea6) に変更しました
- イベントウェブフック [connection.destroyed](EVENT_WEBHOOK.html#6c02d0) の `reason` に含まれる値を変更しました- 2023.2.x までは `disconnect_api_reason` と同じ、または `disconnect_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 にて廃止します
- 統計 API の RTP ヘッダー拡張の項目名のプレフィックスを `rtp_hdr_ext` から `rtp_hdrext` へ変更しました
- [TerminateSession](API_SESSION.html#ba022b) API を非同期に変更しました- セッション破棄の確認は [session.destroyed](SESSION_WEBHOOK.html#ccb165) ウェブフックを利用してください
- ライセンスチェックのタイミングを変更しました- 今までは WebSocket 接続時にライセンスチェックを行っていましたが、 `"type": "connect"` 時にチェックを行うように変更しました- `WHIP` と `WHEP` については変更はありません
  - 詳細についてはサポートまでお問い合わせください

### 変更履歴

- [CHANGE] シグナリング ["type": "disconnect"](WEBSOCKET_SIGNALING.html#306b81) 時に指定できる `reason` の最大値を 128 バイトに制限しました
- [CHANGE] [TerminateSession](API_SESSION.html#ba022b) API を非同期に変更しました- セッション破棄の確認は [session.destroyed](SESSION_WEBHOOK.html#ccb165) ウェブフックを利用してください
- [CHANGE] 統計 API の RTP ヘッダー拡張の項目名のプレフィックスを `rtp_hdr_ext` から `rtp_hdrext` へ変更しました
- [CHANGE] モード機能のイニシャルモードを廃止しました
- [CHANGE] 最大帯域幅指定で利用する SDP を `b=TIAS` と `b=AS` から `b=TIAS` のみに変更しました
- [CHANGE] 帯域推定で利用する `REMB` で送信するビットレートを `b=TIAS` のみに変更したのに合わせて音声ビットレートを含めないようにしました
- [CHANGE] 音声コーデック Lyra への対応を廃止しました
- [CHANGE] SDP の `msid` の `appdata` を UUIDv4 を BASE32 でエンコードした値から、 `connection_id` に メディアの種類を追加した値に変更しました- [RFC 8830 WebRTC MediaStream Identification in the Session Description Protocol](https://www.rfc-editor.org/rfc/rfc8830.html)
  - この変更により MediaStreamTrack の id から `connection_id` を取得できるようになりました
  - この変更により WebRTC 統計情報の `inbound-rtp` の `trackIdentifier` から `connection_id` を取得できるようになりました
  - **Firefox では利用できません**
- [UPDATE] [開発ツール](DEVTOOLS.html) を最新版に更新しました
- [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](SORA_CONF.html#ead2c0) を追加しました- デフォルトは `false` です
  - この設定を `true` した場合 **Firefox で VP9 が利用できなくなります**
- [ADD] [ListConnections](API_SIGNALING.html#d3da2a) API と [ListChannelConnections](API_SIGNALING.html#d388f3) API の戻り値に `recording_block` 項目を追加しました
- [FIX] メッセージングオンリー機能利用時に `multistream: true` の指定を不要にしました

#### テスト機能

- [CHANGE] クラッシュを意図的に発生させるテスト用 `Sora_20221221.GenerateCrashLog` API のバージョンを変更し  [Sora_20380119.GenerateCrashLog](TEST_API.html#26eea6) API に変更しました- 今後、テスト API はバージョンが全て `20380119` に固定されます
- [ADD] シグナリング通知を送信するテスト用 [SendSignalingNotify](TEST_API.html#c9b5c5) API を追加しました

#### スポットライト機能

- [ADD] スポットライト機能利用時に、セッションウェブフック [session.updated](SESSION_WEBHOOK.html#2a5b1b) と [session.destroyed](SESSION_WEBHOOK.html#ccb165) に `spotlight_number` 項目が含まれるようにしました
- [ADD] セッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) 時に `spotlight_number` を払い出せるようにしました- `spotlight_number` には `1` から `8` までの値を指定できます
  - セッションウェブフックで `spotlight_number` を払い出した場合、シグナリング接続時や認証成功時の払い出しの `spotlight_number` と異なる場合はエラーとなります。
  - シグナリング時と認証成功時の `spotlight_number` 指定は非推奨になりました
- [FIX] スポットライト機能利用時に同一セッションで `spotlight_number` が同時接続数 `0` の場合にシグナリング接続時、または認証成功時払い出しで変更できてしまう問題を修正しました - セッション破棄までは [ChangeSpotlightNumber](API_SPOTLIGHT.html#17e930) API 以外ではスポットライト数を変更できないように修正しました
- [FIX] スポットライト機能利用時に `multistream: true` の指定を不要にしました

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

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

- [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](SORA_CONF.html#7a0122) を追加しました- 今までは固定の `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_WEBHOOK.html#1d1984) の戻り値が正常では無い場合、エラーとしてセッションを破棄して、セッションウェブフック [session.destroyed](SESSION_WEBHOOK.html#ccb165) を送信する設定の [session_created_response_validate_warning_as_error](SORA_CONF.html#9df65e) を `sora.conf` に追加しました- デフォルトは `false` です
  - `false` の場合はバリデーションに失敗した場合、デフォルト値が採用されそのまま処理は継続します
  - `true` の場合はバリデーションに失敗した場合、エラーとしてセッションを破棄します- セッションウェブフック [session.destroyed](SESSION_WEBHOOK.html#ccb165) の `reason` には `validate_error` が含まれます
- [ADD] セッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) のウェブフック処理中に問題が発生した際に [session.destroyed](SESSION_WEBHOOK.html#ccb165) の `reason` に `webhook_error` が含まれるようになりました
- [ADD] セッションウェブフックがエラーになった理由を、 `session_webhook_error.jsonl` ログに `reason` として出力するようにしました
- [FIX] セッションウェブフックの戻り値の JSON が不正な場合に、センシティブデータの処理をしていた問題を修正しました
- [FIX] セッションウェブフックの戻り値が JSON オブジェクトではない場合に処理が失敗していた問題を修正しました

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

- [ADD] 録画アーカイブ失敗時のウェブフック [archive.failed](EVENT_WEBHOOK.html#5006f8) に `split` と `split_only` と `split_index` を含むようにしました
- [FIX] 分割録画にもかかわらず、録画アーカイブ失敗時のウェブフック [archive.failed](EVENT_WEBHOOK.html#5006f8) に分割録画ファイルが含まれない問題を修正しました- 一括と分割録画の両方が有効な場合、 `filename` と `file_path` と `split_filename` と `split_file_path` が含まれるようになります
  - 分割録画が有効な場合、 `split_filename` と `split_file_path` が含まれるようになります
  - 分割録画のみの場合、 `filename` と `file_path` は含まれなくなります
- [ADD] テスト向け API として録画失敗を意図的に起こす [FailArchive](TEST_API.html#80c0b0) API を追加しました- 録画が実行されている指定した `client_id` の録画を失敗させます
  - イベントウェブフックの録画失敗ウェブフック [archive.failed](EVENT_WEBHOOK.html#5006f8)  を意図的に発生させることができます

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

- [CHANGE] イベントウェブフック `connection.destroyed` に含まれる reason の変更を行いました- 今までは `disconnect_api_reason` と同様、コネクション切断系 API で指定した `reason` 値、または未指定の場合は `null` が含まれていましたが、今回の変更で `normal` / `disconnected_api` / `session_destroyed` / `lifetime_expired` のいずれかが含まれるようになりました
  - `normal` は通常のコネクション破棄
  - `disconnected_api` はコネクション切断系 API でコネクション破棄
  - `session_destroyed` はセッションライフタイムによりセッションの期限が切れた、または [TerminateSession](API_SESSION.html#ba022b) API によってセッション強制破棄されたことでのコネクション破棄
  - `lifetime_expired` はコネクションライフタイムによりコネクションの期限が切れたことによるコネクション破棄
- [ADD] `sora.conf` にイベントウェブフック `connection.destroyed` に含まれる `reason` の値を、 `disconnect_api_reason` に含まれる値と同じにする移行用の設定 `legacy_event_webhook_connection_destroyed_reason` を追加しました- デフォルトは `false` です
  - 設定を `true` にした場合、 `disconnect_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](SORA_CONF.html#6cf562) のデフォルトを `true` に変更しました
- [FIX] RTP ヘッダー拡張録画機能の音声タイムスタンプの推測機能を利用し、Chromium ベースのブラウザで録音/録画を行った際、音ズレが発生する問題を修正しました- `abs-capture-time` が利用できない場合は今まで通り音ズレが発生する場合があります

#### OBS WHIP対応

**これは実験的機能です**

- [CHANGE] ウェブフックの `sora_client` に含まれる `type` を `OBS-Studio` から `OBS-Studio-WHIP` に変更しました```javascript
  "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](SORA_CONF.html#5a91bb) を追加しました- デフォルトは `false` です
- [ADD] `sora.conf` に OBS WHEP の Bearer トークンを認証ウェブフックの `metadata` に対応させるキーを指定する [whep_bearer_token_metadata_key](SORA_CONF.html#f857c6) を追加しました- 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) 対応機能](WHEP.html) をご確認ください。

#### クラスター機能

**これは実験的機能です**

- [UPDATE] [ListClusterNodes](API_CLUSTER.html#a70901) API にライセンス情報を追加しました- `license_type`
  - `license_serial_code`
  - `license_max_connections`
- [UPDATE] [ListClusterNodes](API_CLUSTER.html#a70901) API にエラー情報を追加しました- ノードに接続ができなかった場合、そのノード情報に `error` を含めるようにしました
- [CHANGE] 最大ノード数ライセンスと通常ライセンスが同一クラスターで混在できなくなりました
- [CHANGE] `sora.conf` の `contact_node_name_list` を廃止しました- 今後は [RegisterClusterNode](API_CLUSTER.html#09ed96) API を利用してください
- [CHANGE] `sora.conf` の `cluster_auto_reconnect` を廃止しました- クラスター機能の自動での再接続は常に有効になります
- [CHANGE] `JoinCluster` API の名前だけを変更した [RegisterClusterNode](API_CLUSTER.html#09ed96) API を追加しました- [RegisterClusterNode](API_CLUSTER.html#09ed96) API は `JoinCluster` API とまったく同じ動作をします
  - `JoinCluster` API は 2024 年 12 月にリリース予定の Sora で廃止します
- [ADD] クラスター利用時に以下の API でクラスター全体の結果を返せる仕組みを追加しました- API に `local` を追加し `false` を指定した場合はクラスター全体の結果を返します
  - `local` のデフォルトは `true` です
  - [ListConnections](API_SIGNALING.html#d3da2a) API
  - [ListChannels](EXPERIMENTAL_API_SIGNALING.html#b27c42) API
  - [GetStatsAllConnections](API_STATS.html#ef695a) API
  - [ListRtcStats](API_RTC_STATS.html#956f4b) API
  - [ListUserAgentStats](OBSOLETE_API_USER_AGENT_STATS.html#f9a4fe) API
  - クラスターのローリングアップデート中に `local=false` は利用できません
- [FIX] [InitCluster](API_CLUSTER.html#621990) API で指定するノードが全て同一バージョンでは無い場合、エラーを返すように修正しました

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

**これは実験的機能です**

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

- [ADD] `sora.conf` にテンポラリーノードとして利用する [cluster_temporary_node](SORA_CONF.html#30cb14) を追加しました- デフォルトは `false` です
  - この設定は [cluster](SORA_CONF.html#b2cd99) が `true` の時のみ有効です
  - この機能は [最大ノード数ライセンス](LICENSE.html#aee259) のみ有効です- [最大ノード数ライセンス](LICENSE.html#aee259) を利用していない場合は [cluster_temporary_node](SORA_CONF.html#30cb14) が `true` の場合、起動できません
  - テンポラリーノードはクラスター構成を維持するためのノードとしては認識されません
  - テンポラリーノードに障害が発生してもライセンスで決められた最大同時接続数の合計を維持する機能による接続数の維持は行われません
  - テンポラリーノードはクラスターへの登録には [RegisterClusterNode](API_CLUSTER.html#09ed96) API を利用してください
  - テンポラリーノードは停止時にクラスターから消去されます
  - テンポラリーノードを再起動した場合、クラスターには自動で参加しません。再度 [RegisterClusterNode](API_CLUSTER.html#09ed96) API を利用して登録してください
  - テンポラリーノードだけでクラスターを構築する事はできません
  - テンポラリーノードは [PurgeClusterNode](API_CLUSTER.html#13b35a) API でノードを消去することはできません
  - テンポラリーノードは [InitCluster](API_CLUSTER.html#621990) API で初期化することはできません
  - テンポラリーノードはクラスターの全てのノードが `2024.1.0` 以降である必要があります
- [UPDATE] [ListClusterNodes](API_CLUSTER.html#a70901) API に `temporary_node: <boolean>` 項目を追加しました

詳細は [テンポラリーノード機能](CLUSTER.html#3cb6c8) をご確認ください。

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

**これは実験的機能です**

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

- [ADD] クラスターでライセンスの同時接続数の合計を維持する機能を追加しました- この機能は `cluster` が `true` の場合にのみ有効です
  - この機能は [最大ノード数ライセンス](LICENSE.html#aee259) のみ有効です
  - 同時接続数が 100 の 3 ノードのクラスターで動作させた場合に、1 ノードが離脱した際、残りの 2 ノードが最大同時接続数が 150 に一時的に引き上げられ、合計での接続数を維持しますその後、障害が発生していたノードが復旧した歳には、最大同時接続数は 100 に戻ります100 を超えている接続は切断されたりはしません

詳細は [ライセンスで決められた最大同時接続数の合計を維持する機能](CLUSTER.html#7bc873) をご確認ください。

#### クラスターリレー機能

**これは実験的機能です**

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

- [ADD] `sora.conf` にクラスター利用時に複数ノードから同一チャネルに接続できる機能を実現する `cluster_relay` の設定を追加しました- この機能は `cluster` が `true` の場合にのみ利用できます
  - デフォルトで `true` が設定されています
  - クラスターリレー機能は [最大ノード数ライセンス](LICENSE.html#aee259) のみで利用できます- [最大ノード数ライセンス](LICENSE.html#aee259) を利用していない場合は `cluster_relay` が `true` になっていても、リレー機能は利用できません
  - クラスターリレー機能は `"multistream": false` では利用できません
  - リレー機能はクラスターの全てのノードが `2024.1.0` 以降である必要があります
  - 詳細は [リレー機能](CLUSTER.html#4b3bf1) をご確認ください
- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) 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 回発生する場合があります- 詳細は [クラスターリレー機能利用時に認証が 2 回行われる場合がある](AUTH_WEBHOOK.html#a1fc2c) をご確認ください
- [CHANGE] リレー機能利用時には [spotlight が既存セッションと異なる場合の挙動](SESSION_WEBHOOK.html#b67a91) の挙動が変わり、接続数が `0` の場合に `multistream` と `spotlight` の指定が既存セッションと異なる場合でもセッションが破棄されなくなります- この挙動は 2024 年 12 月リリースの Sora にてリレー機能を利用しない場合でも反映される予定です

詳細は [リレー機能](CLUSTER.html#4b3bf1) をご確認ください。

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

**これは実験的機能です**

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

- [ADD] `sora.conf` にリレー機能を利用する際に、アフィニティ機能(同一セッションへの接続を同一ノードに寄せる) かどうかを指定する [default_cluster_affinity](SORA_CONF.html#95466d) の設定を追加しました- デフォルトで `true` が設定されています
  - この機能は `sora.conf` の [cluster](SORA_CONF.html#b2cd99) が `true` の場合にのみ利用できます
  - この機能は `sora.conf` の [cluster_relay](SORA_CONF.html#0ef660) が `true` の場合にのみ利用できます- [最大ノード数ライセンス](LICENSE.html#aee259) を利用していない場合は `sora.conf` の [cluster_relay](SORA_CONF.html#0ef660) が `true` になっていても、リレー機能やアフィニティ機能は利用できません
  - `true` の場合は一定数の接続までは特定のノードに接続を集約します- 同時接続数がライセンス最大値の場合はリダイレクトが発生します
  - `false` を指定すると、可能な限りリダイレクトをせずにそのノードでリレーが行われます- 同時接続数がライセンス最大値の場合はリダイレクトが発生します
- [ADD] `sora.conf` にアフィニティを行う 1 ノード、1 セッションあたりの最大同時接続数を指定する [cluster_affinity_threshold](SORA_CONF.html#2abc6a) を追加しました- デフォルトは 10 です
  - 1 ノード、1 セッションあたりの同時接続数が `cluster_affinity_threshold` 未満のノードがあれば、同じノードに新規接続が割り振られます
- [ADD] 認証成功時の払い出しで [cluster_affinity の払い出し](AUTH_WEBHOOK_RETURN.html#f156a1) を払い出すことでコネクション単位でのアフィニティ機能を利用するかどうかを指定できる機能を追加しました- 払い出しをしない場合は `sora.conf` の [default_cluster_affinity](SORA_CONF.html#95466d) の値が利用されます

#### 音声ストリーミング

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

- [ADD] [audio_streaming_url](SORA_CONF.html#6b5dd6) に接続ができない場合、再接続を試みる機能を追加しました
- [ADD] [audio_streaming_url](SORA_CONF.html#6b5dd6) への接続を諦める機能を追加しました- 接続を諦めた場合、再接続を試みるには一度クライアントを切断する必要があります
- [ADD] [audio_streaming_url](SORA_CONF.html#6b5dd6) に接続ができない場合、再接続を試みる回数を指定する [audio_streaming_max_retries](SORA_CONF.html#9fd67a) を追加しました- **最大リトライ回数まで再接続を試みても接続ができない場合は接続を諦めます**
  - デフォルトは `0` です
  - `0` にした場合は常に再接続を試みます
  - `0..10` の間で指定できます
- [ADD] [audio_streaming_url](SORA_CONF.html#6b5dd6) に接続ができない場合、再接続を試みる間隔を指定する [audio_streaming_retry_interval](SORA_CONF.html#15f73d) を追加しました- デフォルトは `5 s` です
  - `0` にした場合は音声パケットが送られてきたタイミングで再接続を試みます
  - `0..60 s` の間で指定できます
- [ADD] [audio_streaming_url](SORA_CONF.html#6b5dd6) からステータスコード 5xx が返ってきた場合、再接続を試みる機能を追加しました- **最大リトライ回数まで再接続を試みても接続ができない場合は接続を諦めます**
  - 再接続の回数は [audio_streaming_max_retries](SORA_CONF.html#9fd67a) を利用します
  - 再接続の間隔は [audio_streaming_retry_interval](SORA_CONF.html#15f73d) を利用します
- [ADD] [audio_streaming_url](SORA_CONF.html#6b5dd6) への接続を諦めた際、イベントウェブフック `audio-streaming.failed` を送信する機能を追加しました- 諦めるのはコネクション単位のため、イベントウェブフックを送信します
  - このウェブフックは [ignore_audio_streaming_webhook](SORA_CONF.html#8f086b) の影響は受けません
- [ADD] イベントウェブフック `audio-streaming.failed` を送信しない設定 [ignore_audio_streaming_failed_webhook](SORA_CONF.html#80d7fb) を追加しました- デフォルトは `true` です
  - `true` にした場合は `audio-streaming.failed` イベントウェブフックを送信しません
- [ADD] [audio_streaming_url](SORA_CONF.html#6b5dd6) から `"type": "error"` が含まれる JSON が送られてきた際、音声ストリーミングサーバーへの接続を諦める機能を追加しました
- [ADD] [audio_streaming_url](SORA_CONF.html#6b5dd6) への接続を諦めた際、セッションに参加している全てのコネクションにシグナリング通知 `audio-streaming.failed` を送信する機能を追加しました- デフォルトは `false` です
  - [signaling_notify_audio_streaming_failed](SORA_CONF.html#d13e38) を `true` にすることで有効になります
- [FIX] 音声ストリーミング [audio-streaming.started](SESSION_WEBHOOK.html#e7b17a) のウェブフック処理中にエラーになった場合、セッションが破棄されてしまう問題を修正しました

#### 統計ウェブフック機能

**実験的機能です**

[統計エクスポーター](OBSOLETE_STATS_EXPORTER.html) に変わる、 [統計ウェブフック機能](STATS_WEBHOOK.html) を追加しました。

- [ADD] `sora.conf` に統計ウェブフックの送信先を指定する [stats_webhook_url](SORA_CONF.html#1f750f) を追加しました
- [ADD] `sora.conf` に統計ウェブフックログを出力するかどうかを指定する [stats_webhook_log](SORA_CONF.html#2fa540) を追加しました- デフォルト `false` です
  - デフォルトではログを出力しません。ログを出力したい場合は `true` に設定してください
- [ADD] `sora.conf` に統計ウェブフック [type: connection.rtc](STATS_WEBHOOK.html#645901) を無視するかどうかを指定する [ignore_connection_rtc_webhook](SORA_CONF.html#83bc00) を追加しました- デフォルト `false` です
- [ADD] `sora.conf` に [stats_webhook_worker_number](SORA_CONF.html#00e194) を追加しました
- [ADD] 統計ウェブフックにクライアントの RTC 統計情報を送信する [type: connection.rtc](STATS_WEBHOOK.html#645901) を追加しました- これは統計エクスポーターの `"type": "connection.user-agent"` と同じデータをウェブフックとしてリクエストを送信します
  - 統計エクスポーターでは HTTP/2 を利用して送信していましたが、統計ウェブフックは HTTP/1.1 で送信します
- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API に統計ウェブフックの成功数の項目 `total_successful_stats_webhook` を追加しました
- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API に統計ウェブフックの失敗数の項目 `total_failed_stats_webhook` を追加しました

詳細は [統計ウェブフック機能](STATS_WEBHOOK.html) をご確認ください。

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

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

- [ADD] `sora.conf` に RTC 統計機能をデフォルトを指定する [default_rtc_stats](SORA_CONF.html#558c2b) を追加しました- デフォルトは `true` です
  - `true` の場合、 Sora はクライアントへ RTC 統計の送信を要求します
- [ADD] 認証成功時の払い出しに [rtc_stats の払い出し](AUTH_WEBHOOK_RETURN.html#9e5912) を追加しました- 未指定の場合は [default_rtc_stats](SORA_CONF.html#558c2b) の値が利用されます
- [ADD] [ListRtcStats](API_RTC_STATS.html#956f4b) API を追加しました
- [ADD] [ListChannelRtcStats](API_RTC_STATS.html#6704c0) API を追加しました
- [ADD] [GetRtcStats](API_RTC_STATS.html#4e8cb0) API を追加しました
- [ADD] 実験的機能として `sora.conf` に [rtc_stats_log](SORA_CONF.html#2fc848) を追加しました- デフォルトで `false` です
  - `rtc_stats` 項目個別に `rtc_stats.jsonl` にログを出力します
- [FIX] ユーザーエージェント統計情報の認証成功時払い出し指定が無視されていた問題を修正しました
- [FIX] ユーザーエージェント統計情報の [GetUserAgentStats](OBSOLETE_API_USER_AGENT_STATS.html#a078ba) の戻り値の `stats` を `user_agent_stats` に修正しました

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

**実験的機能です**

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

- [ADD] セッションのライフタイムをセッションウェブフック [session.created](SESSION_WEBHOOK.html#1d1984) の戻り値で [session_lifetime](SESSION_WEBHOOK.html#36a751) を指定できるようになりました- **秒** で指定してください
  - 最大 2,592,000 秒 (30 日) まで指定できます
  - セッション生成後に変更することはできません
  - `session_lifetime` が未指定の場合は **無制限** です
  - `session.destroyed` の `reason` に `lifetime_expired` が入ります
  - `connection.destroyed` の `reason` に `session_destroyed` が入ります
  - セッションのライフタイムが終了すると、セッションが破棄され切断します
  - セッションのライフタイムが終了すると、セッションウェブフック `session.destroyed` が送信されます

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

**実験的機能です**

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

- [ADD] コネクションのライフタイムを認証ウェブフックの払い出しで [connection_lifetime の払い出し](AUTH_WEBHOOK_RETURN.html#8b77ca) を指定できるようになりました- **秒** で指定してください
  - 最大 2,592,000 秒 (30 日) まで指定できます
  - コネクション生成後に変更することはできません
  - `connection_lifetime` が未指定の場合は **無制限** です
  - `connection.destroyed` の `reason` に `lifetime_expired` が入ります
  - コネクションのライフタイムが終了すると、コネクションが破棄され切断します
  - コネクションのライフタイムが終了すると、コネクションウェブフック `connection.destroyed` が送信されます
  - コネクションのライフタイムよりセッションのライフタイムが優先されます

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

**実験的機能です**

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

- [ADD] 複数の映像コーデックを同時に配信するサイマルキャストマルチコーデック機能に対応しました- サイマルキャストマルチコーデックの配信に対応した SDK のみで利用できます- 2026 年 6 月 時点で以下の SDK が実験的に対応しています
    - Sora C SDK
    - Sora C++ SDK
  - ブラウザを利用した場合、サイマルキャストマルチコーデック機能を利用して配信することはできません、視聴側は利用できます
- [ADD] `sora.conf` にてサイマルキャストコーデック機能を有効にするするかどうかを指定する [simulcast_multicodec](SORA_CONF.html#a8cf0f) を追加しました- デフォルトは `false` です
  - [simulcast_multicodec](SORA_CONF.html#a8cf0f) を `true` に設定するとサイマルキャストマルチコーデック機能が利用可能になります
- [ADD] シグナリング接続時に `"simulcast_multicodec"` 項目を追加しました- `"simulcast_multicodec": true` を指定する際には `"simulcast": true` を指定する必要があります
- [ADD] 認証ウェブフックに `"simulcast_multicodec"` 項目を追加しました- `simulcast` が `true` かつ `simulcast_multicodec` が `true` の時のみ含まれます
- [ADD] 認証成功時の払い出しで `simulcast_multicodec` を払い出した場合、サイマルキャストマルチコーデックを利用できるようになりました- `sora.conf` にて [simulcast_multicodec](SORA_CONF.html#a8cf0f) が `true` に指定されている必要があります
  - `"simulcast": true` が指定されている必要があります
- [ADD] 認証成功時の払い出しで `simulcast_codecs` を指定できるようになりました
- [ADD] `sora.conf` にてサイマルキャストのデフォルトコーデックを設定する [simulcast_codecs_file](SORA_CONF.html#cc4473) を指定できるようになりました
- [ADD] イベントウェブフック `connection.{created, updated, destroyed}` に simulcast_multicodec 項目を追加しました- `simulcast` が `true` かつ `simulcast_multicodec` が `true` の時のみ含まれます
- [ADD] コネクションログに `simulcast_multicodec` 項目を追加しました- 項目は必ず含まれます
- [ADD] `"type": "offer"` 時に `simulcast_multicodec` 項目を追加しました- 項目は必ず含まれます

詳細は [サイマルキャストマルチコーデック](SIMULCAST_MULTICODEC.html) をご確認ください。

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

**実験的機能です**

実験的機能として H.264 と H.265 の [B-frame 向けの RTP ヘッダー拡張](https://datatracker.ietf.org/doc/html/draft-deping-avtcore-video-bframe) に対応しました。

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](SORA_CONF.html#f546aa) を追加しました- デフォルトは `false` です
- [ADD] `sora.conf` に H.265 で B-frame を利用するかどうかを指定する [h265_b_frame](SORA_CONF.html#a9a8f8) を追加しました- デフォルトは `false` です
- [ADD] シグナリング `type: connect` 時に H.264 で B-frame を利用するかどうかを指定する `h264_params: {"b_frame": true}` を追加しました- デフォルトは `false` です
  - `sora.conf` にて [h264_b_frame](SORA_CONF.html#f546aa) が `true` に指定されている必要があります
  - `sora.conf` にて [signaling_h264_params](SORA_CONF.html#b32e49) が `true` に指定されている必要があります
- [ADD] シグナリング `type: connect` 時に H.265 で B-frame を利用するかどうかを指定する `h265_params: {"b_frame": true}` を追加しました- デフォルトは `false` です
  - `sora.conf` にて [h265_b_frame](SORA_CONF.html#a9a8f8) が `true` に指定されている必要があります
  - `sora.conf` にて [signaling_h265_params](SORA_CONF.html#8ed4e9) が `true` に指定されている必要があります
- [ADD] ウェブフックの `video_h264_params` に `b_frame` を追加しました- `sora.conf` の [h264_b_frame](SORA_CONF.html#f546aa) が `true` に指定されていない場合は `b_frame` は含まれません
- [ADD] ウェブフックの `video_h265_params` に `b_frame` を追加しました- `sora.conf` の [h264_b_frame](SORA_CONF.html#f546aa) が `true` に指定されていない場合は `b_frame` は含まれません
- [ADD] 認証成功時の払い出しで `video_h264_params` に `b_frame` を追加しました- デフォルトは `false` です
  - 接続時や払い出し時に未指定の場合はデフォルトの `false` が利用されます
- [ADD] 認証成功時の払い出しで `video_h265_params` に `b_frame` を追加しました- デフォルトは `false` です
  - 接続時や払い出し時に未指定の場合はデフォルトの `false` が利用されます

#### プレイアウト遅延機能

**実験的機能です**

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

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

- [CHANGE] `sora.conf` の RTP ヘッダー拡張 playout-delay を利用するかどうかを指定する [rtp_hdrext_playout_delay](SORA_CONF.html#d34a4b) のデフォルトを `true` に変更しました
- [ADD] `sora.conf` にプレイアウト遅延の最小値のデフォルトを指定する [default_playout_delay_min_delay](SORA_CONF.html#194218) を追加しました
- [ADD] `sora.conf` にプレイアウト遅延の最大値のデフォルトを指定する [default_playout_delay_max_delay](SORA_CONF.html#c1b0ab) を追加しました
- [ADD] 認証成功時の払い出しでプレイアウト遅延の最小値を指定する `playout_delay_min_delay` を追加しました- `playout_delay_max_delay` も一緒に指定する必要があります
- [ADD] 認証成功時の払い出しでプレイアウト遅延の最大値を指定する `playout_delay_max_delay` を追加しました- `playout_delay_min_delay` も一緒に指定する必要があります

詳細は [プレイアウト遅延機能](PLAYOUT_DELAY.html) をご確認ください。

#### メディア配信ワーカー

**実験的機能です**

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

- [UPDATE] スポットライト機能をメディア配信ワーカーで利用できるようになりました
- [CHANGE] `sora.conf` の `rtp_publish_worker_number` を `media_publish_worker_number` に変更しました

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

**実験的機能です**

- [ADD] `sora.conf` に WebSocket シグナリング接続時の HTTP ヘッダーを認証ウェブフックのヘッダーにコピーする [copy_websocket_signaling_header_names](SORA_CONF.html#db39f3) を追加しました- デフォルトは未指定です
  - 大文字小文字は区別されません
  - `copy_websocket_signaling_header_names = X-Forwarded-For, X-Real-IP, Tracestate` のように指定してください
- [ADD] 認証ウェブフックログ `auth_webhook.jsonl` に `copy_headers` 項目を追加しました- 認証ウェブフックにコピーされたヘッダーを出力します


## 2023.2.7

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

**リリース**: 2024-04-24

- [FIX] レガシー録画機能または録画機能(セッション単位)利用時の録画停止処理中に、新規コネクションが参加した際に、そのコネクションが切断されるまで、録画停止処理が完了しない問題を修正しました
- [FIX] レガシー録画機能にて録画停止処理中に録画の開始および [StopRecording](OBSOLETE_API_LEGACY_RECORDING.html#fd0de5) 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.conf` の [event_webhook_url](SORA_CONF.html#e1a4d2) が未指定の状態で録画を開始した場合、セッションが破棄されない問題を修正しました
- [FIX] ウェブフックで mTLS 利用時に、特定の条件下でクライアント証明書を送らなくなる問題を修正しました- ウェブフックで HTTPS を利用する場合は TLS 1.2 のみを利用するように変更しました
- [FIX] ウェブフックで mTLS 利用時に、 CA 証明書が指定されていない場合に OS 組み込みの証明書を利用できない問題を修正しました
- [FIX] 統計エクスポーターで mTLS 利用時に、 CA 証明書が指定されていない場合に OS 組み込みの証明書を利用できない問題を修正しました
- [FIX] 音声ストリーミングで mTLS 利用時に、 CA 証明書が指定されていない場合に OS 組み込みの証明書を利用できない問題を修正しました
- [FIX] API ログの書き込みに失敗した場合でも、 API の処理を中断しないように修正しました
- [FIX] [PurgeClusterNode](API_CLUSTER.html#13b35a) API の API ログ操作名が `LeaveCluster` となっていたのを `PurgeClusterNode` に修正しました
- [FIX] クラスターに参加済のノードが、別クラスターに対する [JoinCluster](OBSOLETE_API.html#17f3f5) API を受け入れてしまう問題を修正しました
- [FIX] 録画機能で大幅にパケットの到着が遅れている場合、分割録画に失敗することがある問題を修正しました


## 2023.2.0

**メジャーアップデート**

**リリース**: 2023-12-20

### ハイライト

- セッション単位で録画する新しい録画機能を追加しました- 今までの録画機能は [レガシー録画機能](OBSOLETE_LEGACY_RECORDING.html) と名前を変更しました
  - レガシー録画機能と新しい録画機能は別チャネルであれば同時に利用することができます
  - レガシー録画機能は 2025 年 12 月リリース予定の Sora にて廃止します
  - 詳細は [録画機能 (セッション単位)](RECORDING.html) をご確認ください
- 接続単位で録画をブロックできる機能を追加しました- 今まではチャネルに参加している全ての接続が録画されていましたが、新しい録画機能では接続単位で録画をブロックできるようになりました
  - 新しい録画機能でのみ利用できます
- より大規模な配信を可能にする配信ワーカー機能を追加しました- 今まで音声や映像をクライアントに配信するワーカーは 1 つでしたが、配信するワーカーを複数にすることで、より多くのユーザーに配信することができるようになりました
- データチャネルの負荷を下げるために SCTP パケットのチェックサム計算を省略する機能を追加しました- 利用するにはクライアント側もチェックサム計算を省略する機能に対応している必要があります
- ウェブフックで IPv6 アドレスが利用できるようになりました
- ウェブフックなどでルート CA 証明書に OS 組み込みのものを利用するようにしました

### 正式版

- [セッションウェブフック](SESSION_WEBHOOK.html) が正式版になりました
- [DataChannel 経由のシグナリング](DATA_CHANNEL_SIGNALING.html) が正式版になりました
- [リアルタイムメッセージング機能](MESSAGING.html) が正式版になりました

### 廃止情報

- `sora.conf` の `legacy_log_format` を廃止しました- 詳細は [sora.conf の legacy_log_format の廃止](OBSOLETE.html#daeabd) をご確認ください
- `sora.conf` の `legacy_log_extension` を廃止しました- 詳細は [sora.conf の legacy_log_extension の廃止](OBSOLETE.html#c35c81) をご確認ください
- `sora.conf` の `legacy_webhook_audio_video_json_structure` を廃止しました- 詳細は [sora.conf の legacy_webhook_audio_video_json_structure の廃止](OBSOLETE.html#a7613b) をご確認ください

### 破壊的変更

- `sora.conf` の [signaling_notify_metadata](SORA_CONF.html#2d9340) を `false` にした場合でもシグナリング通知の `data` が含まれるようになりました
- `sora.conf` の以下の設定を全て `false` にした場合、シグナリング通知の `data` が含まれなくなりました- [signaling_notify_metadata](SORA_CONF.html#2d9340)
  - [signaling_notify_client_id](SORA_CONF.html#fc78ca)
  - [signaling_notify_bundle_id](SORA_CONF.html#f2a58f)
  - [signaling_notify_connection_id](SORA_CONF.html#7882d6)
  - [signaling_notify_connection_created_timestamp](SORA_CONF.html#7fe7b3)
- 実験的機能のクラスター機能利用時のセッションウェブフック [session.destroyed](SESSION_WEBHOOK.html#ccb165) に `connections` が含まれなくなりました
- 実験的機能のクラスター機能のログを `cluster.jsonl` に出力するよう変更しました
- 実験的機能のセッションウェブフック [audio-streaming.started](SESSION_WEBHOOK.html#e7b17a) に `max_connections` と `total_connections` が含まれなくなりました
- 実験的機能のセッションウェブフック [audio-streaming.started](SESSION_WEBHOOK.html#e7b17a) に `max_connections` と `total_connections` が含まれなくなりました

### 変更履歴

- [CHANGE] ウェブフックなどで利用するルート CA 証明書に OS 組み込みのものを利用するように変更しました- Ubuntu の場合は `apt install ca-certificates` でインストールされる証明書を利用します
  - RHEL の場合は `dnf install ca-certificates` でインストールされる証明書を利用します
  - 詳細は [ウェブフックリクエストなどの送信先サーバー証明書の検証に利用する OS 組み込みのルート CA 証明書について](WEBHOOK.html#e8a845) をご確認ください
- [UPDATE] DataChannel を利用したメッセージングのみで接続する場合に `role` が `sendrecv` 以外でも接続ができるようになりました
- [ADD] シグナリング `"type": "offer"` に `channel_id` と `session_id` を追加しました
- [ADD] `connection.jsonl` の `ice_connection_state` に ICE コネクションステート `checking` と `disconnected` だった時間を追加しました
- [ADD] Sora が利用している Erlang VM の設定を追加できる環境変数 `SORA_ADDITIONAL_ERL_ARGS` を追加しました
- [ADD] 認証成功時の払い出しに検証用の RTP パケットロスシミュレーターの設定値、 `rtp_packet_loss_simulator_incoming` と `rtp_packet_loss_simulator_outgoing` が指定できるようになりました
- [ADD] `sora.jsonl` と `internal.jsonl` に UUIDv4 を Base32 でエンコードしたユニークな ID を含めるようにしました- `"id": "base32(uuidv4)"`
- [FIX] データチャネルで利用する SCTP のストリーム ID 採番を RFC 8832 に準拠させました
- [FIX] 録画機能で H.264 利用時に送られてくる分割ペイロードが壊れている場合は処理をスキップするように修正しました

#### OBS WHIP

**これは実験的機能です**


- [ADD] OBS WHIP で User-Agent として送られてくる情報を sora_client としてウェブフックで送信するようにしました```javascript
  "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 を配信する仕組みは 2026 年 6 月 現在、 OBS には組み込まれていません
- [FIX] WHIP 利用時に認証ウェブフックの項目に `ignore_disconnect_websocket` が含まれない問題を修正しました- 常に `false` が含まれます

#### 転送フィルター機能

**これは実験的機能です**

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

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

- [ADD] 転送フィルターに `version` を設定できるようになりました
- [ADD] 転送フィルターに `metadata` を設定できるようになりました
- [ADD] 転送フィルター API [CreateChannelForwardingFilter](API_FORWARDING_FILTER.html#fe98d1) と [CreateConnectionForwardingFilter](API_FORWARDING_FILTER.html#d80a51) に `version` を指定できるようになりました
- [ADD] 転送フィルター API [CreateChannelForwardingFilter](API_FORWARDING_FILTER.html#fe98d1) と [UpdateChannelForwardingFilter](API_FORWARDING_FILTER.html#36fc45) に `metadata` を指定できるようになりました
- [ADD] 転送フィルター API [CreateConnectionForwardingFilter](API_FORWARDING_FILTER.html#d80a51) と [UpdateConnectionForwardingFilter](API_FORWARDING_FILTER.html#23ed63) に `metadata` を指定できるようになりました
- [ADD] 転送フィルター API [UpdateChannelForwardingFilter](API_FORWARDING_FILTER.html#36fc45) と [UpdateConnectionForwardingFilter](API_FORWARDING_FILTER.html#23ed63) API に指定した `expected_version` が既存の `version` と一致していない場合は更新エラーになるようになりました- `expected_version` が既存のバージョンと一致した場合のみ `desired_version` で指定した値で  `version` の値を更新します
- [ADD] セッションウェブフックの戻り値に `version` と `metadata` を指定できるようになりました
- [ADD] 認証成功の払い出し時に `version` と `metadata` を指定できるようになりました
- [ADD] シグナリング時に `version` と `metadata` を指定できるようになりました

#### セッション API

- [ADD] 指定したセッションを取得する [GetSession](API_SESSION.html#427a59) API を追加しました- `channel_id` を指定してセッションを取得します
- [ADD] セッション一覧を取得する [ListSessions](API_SESSION.html#748f19) API を追加しました- 全てのセッション一覧を取得します

#### 録画機能

- [ADD] `sora.conf` に一括録画ファイルと分割録画ファイルの両方を出力する機能を有効にするかどうかを指定する [recording_dual_output](SORA_CONF.html#4cc9c0) を追加しました- デフォルトは `true` です
  - `false` に指定した場合は `一括録画ファイルと分割録画ファイルの両方が出力` のパターンを指定できなくなります
- [ADD] `sora.conf` に録画期限の最大値を指定する [recording_max_expire_time](SORA_CONF.html#f3ff8d) を追加しました- デフォルトは `86400 s` です
  - 設定できる最大値は `86400 s` です
  - レガシー録画機能では一括録画と一括＆分割録画で `expire_time` が指定できます
  - 新しい録画機能(セッション単位)では一括録画、分割録画、一括＆分割録画で `expire_time` が指定できます
- [ADD] `sora.conf` に分割録画時の分割時間の最大値を指定する [recording_max_split_duration](SORA_CONF.html#927da9) を追加しました- デフォルトは `86400 s` です
  - 設定できる最大値は `86400 s` です
- [ADD] `sora.conf` に一括録画を含む場合に録画期限の設定を要求する [recording_expire_time_required](SORA_CONF.html#fcfa2d) を追加しました- **この設定は一括録画時に録画ファイルが大きくなりすぎるのを防ぐための設定です**
  - デフォルトは `false` です
  - この設定を `true` にした場合、一括録画を含む場合に `expire_time` が必須になります
  - この設定を `true` にした場合、レガシー録画機能では `expire_time` に `0` 以外の値を指定する必要があります
  - この設定を `true` にした場合、新しい録画機能(セッション単位)では `expire_time` の値を指定する必要があります
  - この設定を `true` にした場合でも分割録画のみの場合は `expire_time` は必須になりません

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

今までの録画機能は [レガシー録画機能](OBSOLETE_LEGACY_RECORDING.html) と名前を変更しました。

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

- [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_RECORDING.html#c5b527) API を追加しました- セッション破棄時に自動で録画は終了します
  - `expire_time` がオプションになっています
  - `expire_time` デフォルトは未定義です
- [ADD] 新しい録画用の [StopRecording](API_RECORDING.html#fd0de5) API を追加しました

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

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

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

**これは実験的機能です**

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

- [ADD] 認証成功時に `"recording_block": true` を払い出すことで、その接続の録画をブロックし、録画ファイルの出力を拒否できるようになりました- これは録画が有効になっていない場合に払い出しても問題ありません
  - この値を途中で変更することはできません
- [ADD] イベントウェブフック `connection.{created, updated, destroyed}` の `data` に `"recording_block"` の項目を追加しました- 認証成功時に `"recording_block": true` を払い出していれば `true` に、それ以外は `false` になります

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

`sora.conf` で `signaling_notify_metadata` を `false` にした際の挙動を変更しました。

- [CHANGE] `sora.conf` の `signaling_notify_metadata` を `false` にした際でも `data` 項目が含まれるようになりました- `data` の `metadata` と `authn_metadata` と `authz_metadata` は含まれません
- [CHANGE] `sora.conf` で以下の設定を全て `false` にした場合、シグナリング通知の `data` が含まれなくなりました- [signaling_notify_metadata](SORA_CONF.html#2d9340)
  - [signaling_notify_client_id](SORA_CONF.html#fc78ca)
  - [signaling_notify_bundle_id](SORA_CONF.html#f2a58f)
  - [signaling_notify_connection_id](SORA_CONF.html#7882d6)
  - [signaling_notify_connection_created_timestamp](SORA_CONF.html#7fe7b3)
- [FIX] `sora.conf` で `signaling_notify_metadata` を `false` にした際にも、シグナリング通知の `data` 項目の `authn_metadata` と `authz_metadata` が含まれてしまう問題を修正しました

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

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

これは [RFC 6648](https://datatracker.ietf.org/doc/html/rfc6648) による `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.started` に `max_connections` と `total_connections` が含まれなくなりました
- [CHANGE] セッションウェブフック `audio-streaming.stopped` に `max_connections` と `total_connections` が含まれなくなりました
- [CHANGE] クラスター機能利用時のセッションウェブフック `session.destroyed` に `connections` が含まれなくなりました
- [ADD] `sora.conf` にウェブフックで IPv6 利用する [webhook_ipv6](SORA_CONF.html#6c895b) を追加しました- デフォルトは `false` です
  - この設定を有効にしない限りウェブフックで IPv6 は利用できません
- [ADD] `sora.conf` にイベントウェブフック `connection.updated` の送信間隔を変更する [connection_updated_webhook_interval](SORA_CONF.html#e67c3b) を追加しました- デフォルトは `1 min` です
  - 最小は `1 min` です
  - 最大は `10 min` です
  - 時間単位は `min` のみが指定できます
- [ADD] `sora.conf` に 録画イベントウェブフック `split-archive.available` を送信しないようにする [ignore_split_archive_available_webhook](SORA_CONF.html#a62b1e) を追加しました- デフォルトは `false` です
- [ADD] 接続イベントウェブフック `connection.{created, updated, destroyed}` に ICE コネクションステートが `checking` と `disconnected` だった時間の項目を追加しました- `data.ice_connection_state.total_checking_duration_ms` に `checking` だった合計時間(ミリ秒)が入ります
  - `data.ice_connection_state.total_disconnected_duration_ms` に `disconnected` だった合計時間(ミリ秒)が入ります
- [ADD] 認証ウェブフックに `spotlight_focus_rid` と `spotlight_unfocus_rid` を追加しました- `spotlight` が `true` の時だけ追加されます
- [ADD] 接続イベントウェブフック `connection.{created, updated, destroyed}` に ICE コネクションステートの `checking` と `disconnected` の時間を通知する項目を追加しました- `ice_connection_state` 項目を追加しました
  - `ice_connection_state` に `total_checking_duration_ms` に `checking` だった合計時間(ミリ秒)が入ります
  - `ice_connection_state` に `total_disconnected_duration_ms` に `disconnected` だった合計時間(ミリ秒)が入ります
  ```javascript
  "data": {
    "ice_connection_state": {
      "total_checking_duration_ms": 0,
      "total-disconnected_duration_ms": 0
    }
  }
  ```
- [ADD] セッションウェブフック [session.updated](SESSION_WEBHOOK.html#2a5b1b) を追加しました- クラスターが有効時には `connections` は含まれません
  - 録画機能 (セッション単位) 有効時に `recording` 項目が含まれます
- [ADD] セッションウェブフック `session.destroyed` に `reason` が含まれるようになりました- `reason` には以下が含まれます- `normal`- 正常終了
    - `terminated_api`- [TerminateSession](API_SESSION.html#ba022b) API を利用した終了
    - `abort`- 異常終了
- [ADD] `sora.conf` にセッションウェブフック [session.updated](SESSION_WEBHOOK.html#2a5b1b) を送信しないようにする [ignore_session_updated_webhook](SORA_CONF.html#0901a0) を追加しました- デフォルトは `false` です
- [ADD] `sora.conf` にセッションウェブフック [session.updated](SESSION_WEBHOOK.html#2a5b1b) の送信間隔を変更する [session_updated_webhook_interval](SORA_CONF.html#4612dc) を追加しました- デフォルトは `1 min` です
  - 最小は `1 min` です
  - 最大は `10 min` です
  - 時間単位は `min` のみが指定できます
- [FIX] 認証ウェブフックで `simulcast_rid` は `spotlight` が `true` の場合は追加しないようにしました- `simulcast` が `true` かつ `spotlight` が `false` の時だけ追加されます

#### データチャネル

- [ADD] データチャネルの SCTP のパケットのチェックサム計算を省略する仕組みを追加しました- データチャネルは DTLS レイヤーでデータ保護が行われているため、 SCTP のチェックサムは追加の整合性を得ることができないため省略することができます
  - クライアント側もチェックサム計算を省略する機能に対応している必要があります
  - データチャネル利用時の CPU リソースがクライアント、SFU ともに節約されます
- [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.x` と `2023.1.x` で、特定のノードのアップデートが難しい場合でも、先に他のノードをアップデートすることができるようになります
  - クラスターに 1 世代前のバージョンのノードが混在している場合、新しい接続は全て古いバージョンのクラスターの仕組みを利用します
  - 全てのノードが新しいバージョンのクラスターになったタイミングで、新しいバージョンのクラスターの仕組みを利用しはじめます

詳細については [クラスター機能](CLUSTER.html) をご確認ください。

> **注釈**
>
> [InitCluster](API_CLUSTER.html#621990) API でクラスターを初期化する際には、新旧バージョンは混在させないでください。また `Sora 2023.2.x` で構成されたクラスターに [JoinCluster](OBSOLETE_API.html#17f3f5) API で `Sora 2023.1.x` のノードを参加させることはできません。

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

**これは実験的機能です**

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

- [ADD] `sora.conf` に音声や映像の 1 配信に利用するメディア配信ワーカー数を指定する `sora_conf-media_publish_worker_number` を追加しました- デフォルトのメディア配信ワーカー数は 1 です
  - 同時に 100 クライアント以上へ配信する場合はまず 10 を設定することを推奨します
  - ワーカー数が 10 であれば 1 チャネル 1000 クライアント以上の配信ができるようになります
  - 最小は 1 で、最大は 500 です

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

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

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

**これは実験的機能です**

- [ADD] 認証成功時に、シグナリング通知メタデータ拡張の初期値を払い出す `signaling_notify_metadata_ext` を追加しました。- sora.conf にて [signaling_notify_metadata_ext](SORA_CONF.html#e94720) を有効にしている必要があります
  - デフォルトは `{}` です

#### 統計エクスポーター

**これは実験的機能です**

- [ADD] `sora.conf` に統計エクスポーターをデフォルトで有効にするかどうかの `default_stats_exporter` を追加しました- デフォルトは `true` です
- [ADD] 認証成功時の払い出しで接続単位で統計エクスポーターを有効にするかどうかを指定する `stats_exporter` を追加しました- `false` を設定した場合は `stats_collector_url` が指定されていたとしても統計情報がエクスポートされません

#### H.265

**これは実験的機能です**

2026 年 6 月 現在、WebRTC H.265 のプロファイルに対応している WebRTC ライブラリはありません。
現在 [仕様策定中](https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-hevc-webrtc) です。

- [ADD] H.265 サイマルキャストに対応しました
- [ADD] `sora.conf` に H.265 のデフォルトレベル ID を指定する [default_h265_param_level_id](SORA_CONF.html#d15808) を追加しました- デフォルトは `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](SORA_CONF.html#8ed4e9) を追加しました- デフォルトは `false` です


## 2023.1.3

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

**リリース**: 2023-10-17

### 変更履歴

- [FIX] 録画機能利用時、分割録画に失敗かつ分割録画ファイルが一つ以上生成されている場合に、終了処理に失敗する問題を修正しました- 終了中の失敗のため、録画処理自体には影響はありません
- [FIX] サイマルキャスト機能の `simulcast_encodings` と `spotlight_encodings` の `scalabilityMode` のデフォルト値を `L1T1` に修正しました- AV1 サイマルキャスト利用時に `L1T1` 以外の `scalabilityMode` を利用すると録画ができない問題があります
- [FIX] データチャネルを利用したメッセージング機能利用時に、パケロスが発生すると一定期間パケットを破棄してしまうことがある問題を修正しました- この問題は `ordered` が `true` で `max_retransmits` や `max_packet_life_time` が設定されている場合に発生します
- [FIX] クラスター機能利用時に、ノードの起動・停止と新規チャネルへの接続が重なると接続に失敗することがある問題を修正しました
- [FIX] `sora.conf` の `default_simulcast_rid` の設定値が設定に反映されない問題を修正しました
- [FIX] 依存している OpenSSL を 3.1.3 にアップデートしました


## 2023.1.2

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

**リリース**: 2023-08-10

### 変更履歴

- [FIX] Safari 側の問題により Safari 14 系および Safari 15 系の一部で Sora に接続できない問題を修正しました- Safari 15.6 以降では問題が修正されていることを確認しています


## 2023.1.1

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

**リリース**: 2023-07-14

### 変更履歴

- [ADD] connection ログに `ice_connection_state` という ICE コネクション機能の統計情報を追加しました- サポートにて問題をより素早く解決しやすくするための追加です
- [ADD] connection ログに `network_status` に不安定レベルごとの統計情報を追加しました- サポートにて問題をより素早く解決しやすくするための追加です
- [ADD] [GetStatsConnection](API_STATS.html#e79b61) API に `ice_connection_state` の統計情報を追加しました
- [ADD] [GetStatsConnection](API_STATS.html#e79b61) API に `network_status` にレベルごとの統計情報を追加しました
- [FIX] CentOS 7 x86_64 利用時にセグメンテーション違反で Sora が落ちてしまう問題を修正しました
- [FIX] DTLS 再ネゴシエーションの挙動を修正しました
- [FIX] スポットライト機能利用時に OBS での WHIP が利用できない問題を修正しました- 新しく WHIP エンドポイント URL 指定時に `spotlight=true` を指定することで利用できるようにしました
  - ただし、音声がそのままでは配信されないため [FocusSpotlightFixed](API_SPOTLIGHT.html#beaf88) API を利用して音声を配信する必要があります
- [FIX] ICE コネクションステート機能で `disconnected` 時のクライアント状態確認の挙動を修正しました
- [FIX] [PutSignalingNotifyMetadata](API_SIGNALING_NOTIFY_METADATA_EXT.html#a20c95) API の結果の誤字を修正しました
- [FIX] [JoinCluster](OBSOLETE_API.html#17f3f5) API のエラー応答の誤字を修正しました


## 2023.1.0

**メジャーアップデート**

**リリース**: 2023-06-28

### サポート期間変更

- Sora 2023.1.0 より、サポート提供期間をメジャーアップデートがリリースされた日から **12 ヶ月後の月末最終日まで** に変更しました
- 2023年 6 月リリースの Sora 2023.1.0 およびその後リリースされる可能性のある Sora 2023.1.x は、2024 年 6 月 30 日までサポート対象となります

詳細は [サポートライフサイクル](SUPPORT_LIFECYCLE.html) をご確認ください。

### ハイライト

- OBS で WebRTC を利用した配信を実現する WHIP に対応しました- 詳細は [OBS (WHIP) 機能](WHIP.html) をご確認ください
- VP9 / AV1 でのサイマルキャストに対応しました- 詳細は [VP9 と AV1 でのサイマルキャスト](SIMULCAST.html#860410) をご確認ください
- メディアストリームを柔軟に制御するための [転送フィルター機能](FORWARDING_FILTER.html) を追加しました
- 音声ストリーミング機能に自動開始/停止機能を追加しました- 詳細は [自動開始/停止機能](AUDIO_STREAMING.html#1492a6) をご確認ください
- IPv6 のみの環境での動作に対応しました- 詳細は [ipv6_only](SORA_CONF.html#5e9e68) をご確認ください

### 互換なしの変更情報

- 移行用の設定である `sora_conf-legacy_webhook_audio_video_json_structure` の設定のデフォルトを `false` に変更しました- 詳細は [sora.conf の legacy_webhook_audio_video_json_structure の廃止](OBSOLETE.html#a7613b) をご確認ください
- 移行用の設定である `legacy_log_format` の設定のデフォルトを `false` に変更しました- 詳細は [sora.conf の legacy_log_format の廃止](OBSOLETE.html#daeabd) をご確認ください
- 移行用の設定である `legacy_log_extension` の設定のデフォルトを `false` に変更しました- 詳細は [sora.conf の legacy_log_extension の廃止](OBSOLETE.html#c35c81) をご確認ください

### 廃止情報

- Ubuntu 18.04 向けパッケージのサポートを終了しました- 詳細は [Ubuntu 18.04 サポートの終了](OBSOLETE.html#afde12) をご確認ください
- `sora.conf` の `split_archive_legacy_prefix` を廃止しました- 詳細は [sora.conf の split_archive_legacy_prefix の廃止](OBSOLETE.html#050276) をご確認ください
- `sora.conf` の `default_multistream` を廃止しました- 詳細は [sora.conf の default_multistream の廃止](OBSOLETE.html#615559) をご確認ください
- `sora.conf` の `dcsctp_heartbeat_interval` を廃止しました- 詳細は [DataChannel で利用している SCTP 関連の実験的な設定の廃止](OBSOLETE.html#0af146) をご確認ください
- `sora.conf` の `dcsctp_slow_start_tcp_style` を廃止しました- 詳細は [DataChannel で利用している SCTP 関連の実験的な設定の廃止](OBSOLETE.html#0af146) をご確認ください

### 変更履歴

- [CHANGE] データチャネル関連の設定である `dcsctp_heartbeat_interval` を廃止しました
- [CHANGE] データチャネル関連の設定である `dcsctp_slow_start_tcp_style` を廃止しました
- [CHANGE] サイマルキャスト利用時に `"active": false` を指定したストリームは、 `~r0` といった SDP が生成されます- r1 と r2 が false の場合は `a=simulcast:recv r0;~r1;~r2` のような SDP が生成されます
  - これは [RFC 8853: Using Simulcast in SDP and RTP Sessions](https://www.rfc-editor.org/rfc/rfc8853.html) に準拠しています
- [CHANGE] `sora.conf` のウェブフックの audio と video 項目のレガシーな入れ子構造を利用する `sora_conf-legacy_webhook_audio_video_json_structure` のデフォルト値を `false` に変更しました- これは移行用設定です
- [CHANGE] `sora.conf` のログフォーマットのレガシー形式を維持する `legacy_log_format` のデフォルト値を `false` に変更しました- これは移行用設定です
- [CHANGE] `sora.conf` の JSONL 形式で出力しているログのレガシー拡張子を `.log` に維持する `legacy_log_extension` のデフォルト値を `false` に変更しました- これは移行用設定です
- [UPDATE] RHEL 9.2 に対応しました
- [UPDATE] RHEL 8.8 に対応しました
- [ADD] 録画イベントウェブフック `recording.started` に `data.start_timestamp` を追加しました
- [ADD] 録画イベントウェブフック `recording.started` に `data.split_duration` を追加しました
- [ADD] `sora.conf` に IPv6 アドレスのみを利用する [ipv6_only](SORA_CONF.html#5e9e68) の設定を追加しました
- [ADD] クラスター機能が有効な際、セッションウェブフックに `external_signaling_url` 項目を追加しました- `sora.conf` の [external_signaling_url](SORA_CONF.html#d6bf68) に指定されている値がそのまま入ります
- [ADD] モードが `block_new_connection` の場合は、接続に失敗する仕組みを追加しました
- [ADD] イベントウェブフックにログの書き込みが成功したかどうかを示す `log_written` フラグを追加しました- イベントウェブフックログの書き込みが成功した場合は `"log_written": true` が含まれます
  - イベントウェブフックログの書き込みが失敗した場合は `"log_written": false` が含まれます
  - イベントウェブフックログには常に `log_written` が含まれます
- [ADD] 録画機能で録画ファイル生成に失敗したファイル情報を `recording.report` ウェブフックやファイルに `failed_archives` という項目で追加しました
- [ADD] 録画機能の `recording.report` イベントウェブフックに `"file_written"` フラグを追加しました- `report-*.json` ファイルの書き込みに成功した場合 `"file_written": true` が含まれます
  - `report-*.json` ファイルの書き込みに失敗した場合 `"file_written": false` が含まれます
  - `report-*.json` ファイルには常に `file_written` が含まれます
- [ADD] 認証ウェブフックに `id` を追加しました
- [FIX] IPv6 のみの環境で Firefox が正常に動作しない問題を修正しました
- [FIX] Sora 終了中に HTTP API が呼ばれるとクラッシュログが出力される問題を修正しました
- [FIX] 認証ウェブフックで `simulcast` が `false` の場合でも `simulcast_rid` が含まれていた問題を修正しました- `simulcast` が `false` の場合は `simulcast_rid` は含まれなくなります
- [FIX] 録画機能で H.264 でまれに録画が失敗してしまう問題を修正しました
- [FIX] スポットライト機能でフォーカスが当たっていない場合でも、無音の音声パケットが配信されてしまう問題を修正しました

#### パッケージファイル名の変更

OS 名とバージョンの間に `-` を入れるようにし、x86_64 もアーキテクチャを追加しました。
展開後のディレクトリにアーキテクチャは含まれません。

- [CHANGE] `sora-2023.1.0-ubuntu22.04-arm64v8.tar.gz` から `sora-2023.1.0-ubuntu-22.04-arm64v8.tar.gz` に変更しました- `ubuntu22.04` を `ubuntu-22.04` に変更しました
- [CHANGE] `sora-2023.1.0-ubuntu20.04-arm64v8.tar.gz` から `sora-2023.1.0-ubuntu-20.04-arm64v8.tar.gz` に変更しました- `ubuntu20.04` を `ubuntu-20.04` に変更しました
- [CHANGE] `sora-2023.1.0-ubuntu22.04.tar.gz` から `sora-2023.1.0-ubuntu-22.04-x86_64.tar.gz` に変更しました- `ubuntu22.04` を `ubuntu-22.04` に変更しました
  - ファイル名に `-x86_64` を追加しました
- [CHANGE] `sora-2023.1.0-ubuntu20.04.tar.gz` から `sora-2023.1.0-ubuntu-20.04-x86_64.tar.gz` に変更しました- `ubuntu20.04` を `ubuntu-20.04` に変更しました
  - ファイル名に `-x86_64` を追加しました
- [CHANGE] `sora-2023.1.0-ubuntu20.04.tar.gz` から `sora-2023.1.0-ubuntu-20.04-x86_64.tar.gz` に変更しました- `ubuntu20.04` を `ubuntu-20.04` に変更しました
  - ファイル名に `-x86_64` を追加しました
- [CHANGE] `sora-2023.1.0-rhel9.2.tar.gz` から `sora-2023.1.0-rhel-9.2-x86_64.tar.gz` に変更しました- `rhel9.2` を `rhel-9.2` に変更しました
  - ファイル名に `-x86_64` を追加しました
- [CHANGE] `sora-2023.1.0-rhel8.8.tar.gz` から `sora-2023.1.0-rhel-8.8-x86_64.tar.gz` に変更しました- `rhel8.8` を `rhel-8.8` に変更しました
  - ファイル名に `-x86_64` を追加しました
- [CHANGE] `sora-2023.1.0-centos7.9.tar.gz` から `sora-2023.1.0-centos-7.9-x86_64.tar.gz` に変更しました- `centos7.9` を `centos-7.9` に変更しました
  - ファイル名に `-x86_64` を追加しました

#### セッション破棄 API

- [ADD] 指定したセッションを終了させる [TerminateSession](API_SESSION.html#ba022b) API を追加しました- `channel_id` の指定は必須で、 `session_id` がオプションで指定できます

#### ヘルスチェック

- [ADD] `http://<IP アドレス>:5000/.ok` で Sora のヘルスチェックができるようになりました- 単体利用時には問題が無ければ常に 200 OK を返します
  - クラスター利用時には `block_new_connection` モード時には `503 Service Unavailable` を返します

詳細は [ヘルスチェック機能](OK.html) をご確認ください。

#### シグナリング通知

- [ADD] シグナリング通知の `"event_type": "connection.created"` に `timestamp` を追加しました- data にも `"data": [{"timestamp": "2023-06-28T10:00:00.999999", ...}, .. ]` のように `timestamp` が含まれるようになります
- [ADD] シグナリング通知の `"event_type": "connection.created"` に `timestamp` を含める設定 [signaling_notify_connection_created_timestamp](SORA_CONF.html#7fe7b3) を `sora.conf` に追加しました- デフォルトは `true` です

#### 映像コーデックパラメーター指定機能

- [ADD] ウェブフックに映像コーデックパラメーター `"video_vp9_params": {"profile_id": 0}` を追加しました- この設定を利用する場合 `legacy_webhook_audio_video_json_structure` が `false` である必要があります
- [ADD] ウェブフックに映像コーデックパラメーター `"video_av1_params": {"profile": 0}` を追加しました- この設定を利用する場合 `sora_conf-legacy_webhook_audio_video_json_structure` が `false` である必要があります
- [ADD] ウェブフックに映像コーデックパラメーター `"video_h264_params": {"profile_level_id": ""}` を追加しました- この設定を利用する場合 `sora_conf-legacy_webhook_audio_video_json_structure` が `false` である必要があります
- [ADD] シグナリング接続時に H.264 のプロファイルレベル ID を `"video": {"codec_type": "H264", "h264_params": {"profile_level_id": "42e01f"}` のように指定できるようになりました- この指定を利用する場合は [signaling_h264_params](SORA_CONF.html#b32e49) が `true` である必要があります
  - `h264_params` を指定する場合は、 `codec_type` は `H264` である必要があります
- [ADD] シグナリング接続時に VP9 のプロファイル ID を `"video": {"codec_type": "VP9", "vp9_params": {"profile_id": 0}}` のように指定できるようになりました- この指定を利用する場合は [signaling_vp9_params](SORA_CONF.html#3261ea) が `true` である必要があります
  - `vp9_params` を指定する場合は、 `codec_type` は `VP9` である必要があります
  - profile_id には 0 から 3 までの値を指定できます
- [ADD] シグナリング接続時に AV1 のプロファイルを `"video": {"codec_type": "AV1", "av1_params": {"profile": 0}}` のように指定できるようになりました- この指定を利用する場合は [signaling_av1_params](SORA_CONF.html#91f3b8) が `true` である必要があります
  - `av1_params` を指定する場合は、 `codec_type` は `AV1` である必要があります
  - profile には 0 から 2 までの値を指定できます
- [ADD] 認証成功時払い出しに VP9 のプロファイル ID を指定できる `"video_vp9_params": {"profile_id": 0}` を追加しました- この設定を利用する場合 `sora_conf-legacy_webhook_audio_video_json_structure` が `false` である必要があります
  - profile_id には 0 から 3 までの値を指定できます
- [ADD] 認証成功時払い出しに AV1 のプロファイルを指定できる `"video_av1_params": {"profile": 0}` を追加しました- この設定を利用する場合 `sora_conf-legacy_webhook_audio_video_json_structure` が `false` である必要があります
  - profile には 0 から 2 までの値を指定できます
- [ADD] 認証成功時払い出しに H.264 のプロファイルを指定できる `"video_h264_params": {"profile_level_id": "42e01f"}` を追加しました- この設定を利用する場合 `sora_conf-legacy_webhook_audio_video_json_structure` が `false` である必要があります
  - `h264_profile_level_id` は 2024 年 6 月リリース予定の Sora にて廃止します
- [ADD] `sora.conf` に VP9 のプロファイル ID のデフォルト値を指定する [default_vp9_param_profile_id](SORA_CONF.html#ab0de9) を追加しました- デフォルトは 0 が設定されています
  - 0 から 3 までの値を指定できます
- [ADD] `sora.conf` に AV1 のプロファイルのデフォルト値を指定する [default_av1_param_profile](SORA_CONF.html#319e30) を追加しました- デフォルトは 0 が設定されています
  - 0 から 2 までの値を指定できます
- [ADD] `sora.conf` に H.264 のプロファイルレベル ID のデフォルト値を指定する [default_h264_param_profile_level_id](SORA_CONF.html#1581db) を追加しました- 既存の default_h264_profile_level_id は 2024 年 6 月リリース予定の Sora にて廃止します

#### OBS (WHIP) 対応

OBS が対応予定の WebRTC (WHIP) で配信ができるようになりました。

- [ADD] `sora.conf` に OBS (WHIP) を有効にする  [whip](SORA_CONF.html#615414) を追加しました- デフォルトは `false` です
- [ADD] `sora.conf` に OBS (WHIP) の Bearer トークンを認証ウェブフックの `metadata` に対応させるキーを指定する [whip_bearer_token_metadata_key](SORA_CONF.html#699f57) を追加しました- OBS (WHIP) からの接続についても Bearer トークンを利用した認証機能が利用できます
  - デフォルトは未指定です
- [ADD] WHIP 向けエンドポイント URL `https://example.com/whip/<channel-id>` を追加しました- クエリー文字列で `client_id` と `bundle_id` を指定できるようになりました
- [ADD] WHIP 向けリソース URL `https://example.com/whip-resource/<channel-id>/<secret>` を追加しました- PATCH と DELETE メソッドに対応しています
- [ADD] WHIP を利用した際、認証ウェブフックに `whip: true` を追加しました- WHIP を利用していない接続の場合はこの項目は含まれません

詳細は [OBS (WHIP) 対応機能](WHIP.html) をご確認ください。

#### VP9 / AV1 サイマルキャスト対応

- [UPDATE] VP9 と AV1 でのサイマルキャスト機能に対応しました- Chrome 113 以降でスポットライト機能にて VP9 と AV1 が利用できるようになりました
  - Edge 113 以降でスポットライト機能にて VP9 が利用できるようになりました
- [UPDATE] 認証成功時の払い出し `simulcast_encodings` と `spotlight_encodings` で `scalabilityMode` を指定できるようになりました- デフォルトでは `scalabilityMode` に `L1T3` が設定されています
- [UPDATE] [simulcast_encodings_file](SORA_CONF.html#dead73) と  [spotlight_encodings_file](SORA_CONF.html#6115fb) で `scalabilityMode` を指定できるようになりました

詳細は [scalabilityMode](SIMULCAST.html#918c4d) をご確認ください。

#### Lyra 録音機能

- [ADD] 録画機能に Lyra コーデックを利用した際に WebM ファイルで録音する仕組みを追加しました

詳細は recording-lyra をご確認ください。

#### 転送フィルター機能

今まで [PauseRtpStream](OBSOLETE_API_RTP_STREAM_PAUSE_RESUME.html#de7a52) / [ResumeRtpStream](OBSOLETE_API_RTP_STREAM_PAUSE_RESUME.html#43002a) API で実現していたメディアストリームの停止/再開をより細かく、柔軟に設定をできるようにした、
転送フィルター機能を追加しました。

- [ADD] セッション生成時 `forwarding_filter` を指定することでチャネル単位の転送フィルターを追加できるようになりました
- [ADD] シグナリング接続時に `forwarding_filter` を指定することで接続単位の転送フィルターを追加できるようになりました
- [ADD] 認証成功時に `forwarding_filter` を指定することで接続単位の転送フィルターを追加できるようになりました
- [ADD] チャネル単位でチャネルとコネクションの転送フィルターを確認できる [ListForwardingFilters](API_FORWARDING_FILTER.html#a1dd75) API を追加しました
- [ADD] チャネル単位の転送フィルターを作成する [CreateChannelForwardingFilter](API_FORWARDING_FILTER.html#fe98d1) API を追加しました
- [ADD] チャネル単位の転送フィルターを更新する [UpdateChannelForwardingFilter](API_FORWARDING_FILTER.html#36fc45) API を追加しました
- [ADD] チャネル単位の転送フィルターを削除する [DeleteChannelForwardingFilter](API_FORWARDING_FILTER.html#9410fd) API を追加しました
- [ADD] コネクション単位の転送フィルターを作成する [CreateConnectionForwardingFilter](API_FORWARDING_FILTER.html#d80a51) API を追加しました
- [ADD] コネクション単位の転送フィルターを更新する [UpdateConnectionForwardingFilter](API_FORWARDING_FILTER.html#23ed63) API を追加しました
- [ADD] コネクション単位の転送フィルターを削除する [DeleteConnectionForwardingFilter](API_FORWARDING_FILTER.html#0d65da) API を追加しました
- [ADD] 転送フィルターで転送がブロックされたタイミングでシグナリング通知する機能を追加しました
- [ADD] 転送フィルターで転送がブロックが解除されたタイミングでシグナリング通知する機能を追加しました
- [ADD] `sora.conf` に転送フィルターをシグナリング経由で指定できるかどうかを設定する `signaling_forwarding_filter` を追加しました- デフォルト は `false` です
- [ADD] `sora.conf` に転送フィルターのブロックの状態が変わったタイミングでシグナリング通知を飛ばすかどうかを設定する [signaling_notify_forwarding_filter](SORA_CONF.html#338e96) を追加しました- デフォルト は `true` です

詳細は [転送フィルター機能](FORWARDING_FILTER.html) をご確認ください。

#### SDP 再利用機能

今までマルチストリーム利用した際に、クライアント切断してもその SDP が残ってしまう問題がありました。
今回のリリースで、SDP を再利用する仕組みにより SDP が残る問題を解決しました。

- [CHANGE] `recycle_media_section` が `true` の際に、SDP を再利用する仕組みを追加しました
- [ADD] `sora.conf` に SDP の再利用を行う [recycle_media_section](SORA_CONF.html#d3e2b5) 設定を追加しました- デフォルトは `true` です

#### 音声ストリーミング機能

- [ADD] 音声ストリーミングの結果通知の状態を確認する [ListAudioStreamingResultPushState](API_AUDIO_STREAMING.html#70450f) API を追加しました
- [ADD] 音声ストリーミング機能にサブスクライブが 0 になると音声ストリーミングを停止し、サブスクライブが 1 以上になると音声ストリーミングを開始する機能を追加しました- この機能はセッション生成時に指定できます
  - この機能が有効になっている場合は音声ストリーミング開始/終了 API は利用できません
- [ADD] セッションウェブフックの払い出しに音声ストリーミングの自動開始と停止を有効にする `audio_streaming_auto` を追加しました- この設定を利用する場合は必ず `audio_streaming` を `true` で払い出す必要があります
- [ADD] `sora.conf` に音声ストリーミングのウェブフックを送信するかどうかを設定する [ignore_audio_streaming_webhook](SORA_CONF.html#8f086b) を追加しました- デフォルトは `true` で、送信しません
- [ADD] 音声ストリーミング機能の開始のウェブフック `audio-streaming.started` を追加しました- `sora.conf` にて [ignore_audio_streaming_webhook](SORA_CONF.html#8f086b) を `false` にすることで送信します
- [ADD] 音声ストリーミング機能の終了のウェブフック `audio-streaming.stopped` を追加しました- `sora.conf` にて [ignore_audio_streaming_webhook](SORA_CONF.html#8f086b) を `false` にすることで送信します

#### WebSocket 経由シグナリングでの ping / pong / stats のインターバルやタイムアウトの設定

WebSocket 経由でのシグナリングにおいて、 `"type": "ping"` や `"type": "pong"` のインターバルやタイムアウトを設定できるようになりました。
また `"type": "ping"` 送信時の `"stats": true` にする間隔を指定できるようになりました。

- [CHANGE] `"type": "ping"` 時におくる `"stats": true` の間隔を 5 秒から 30 秒に変更しました
- [ADD] `sora.conf` に ping を送信する間隔を指定する [websocket_signaling_ping_interval](SORA_CONF.html#27aae2) 設定を追加しました- デフォルトは `5 s` です
  - 最小は `5 s` です
  - 最大は `300 s` です
- [ADD] `sora.conf` に pong のタイムアウト時間を指定する [websocket_signaling_pong_timeout](SORA_CONF.html#140464) 設定を追加しました- デフォルトは `60 s` です
  - 最小は `60 s` です
  - 最大は `600 s` です
- [ADD] `sora.conf` に ping 送信時に `"stats": true` にする間隔を指定する [websocket_stats_timer_interval](SORA_CONF.html#67a631) 設定を追加しました- デフォルトは `30 s` です
  - 最小は `30 s` です
  - 最大は `600 s` です

#### クラスター機能利用時のディスク障害時の対応を追加

- [CHANGE] クラスター利用時に `block_new_connection` モードへ遷移した場合には新規接続のリダイレクトを行わないように変更しました
- [ADD] クラスター利用時にディスク障害が発生した際に、 `block_new_connection` モードへ遷移する機能を追加しました


## 2022.2.3

**リリース**: 2023-02-08

### 変更履歴

- [FIX] 依存している OpenSSL を 3.0.8 にアップデートしました
- [FIX] 2023 年 4 月 4 日リリース予定の Chrome 112 でシグナリング時に接続が必ず失敗してしまう問題を修正しました
- [FIX] ディスク障害が発生してログの書き込みに失敗した際に、障害が復旧した後でもログが書き込めなくなることがある問題を修正しました


## 2022.1.4

**リリース**: 2023-02-08

### 変更履歴

- [FIX] 2023 年 4 月 4 日リリース予定の Chrome 112 でシグナリング時に接続が必ず失敗してしまう問題を修正しました


## 2022.2.2

**リリース**: 2023-01-05

### 変更履歴

- [FIX] 音声ストリーミング機能で `sora.conf` の [default_audio_streaming_result_push](SORA_CONF.html#0b4a07) が `true` の際、プッシュ通知が行われない問題を修正しました
- [FIX] 音声ストリーミング機能でロールが `recvonly` の場合にプッシュ通知が受信できない問題を修正しました
- [FIX] 音声ストリーミング機能で API を利用して音声ストリーミングを開始した際、通知が正常に行われない問題を修正しました


## 2022.2.1

**リリース**: 2022-12-21

### 変更履歴

- [FIX] 開発ツールが Safari / Mobile Safari / Firefox で動作しない問題を修正しました


## 2022.2.0

**リリース**: 2022-12-21

### ハイライト

- sora ログと internal ログを JSONL 形式で出力するようになりました
- Google が公開した超低ビットレートコーデック Lyra に対応しました
- 音声パケットを HTTP/2 経由で出力する音声ストリーミング機能を追加しました
- 録画開始ととアーカイブ開始のウェブフックを追加しました
- ウェブフックが mTLS と CA 証明書の指定に対応しました

### 互換なしの変更情報

- 実験的機能であるセッションウェブフックのログ出力を req/res 形式に変更しました
- 実験的機能であるセンシティブデータ向け設定 `redact_archive_metadata_sensitive_data` と `redact_api_sensitive_data` を廃止しました- 録画メタデータファイルと API はセンシティブなデータがあっても編集を行わないようにしました
- クラスター機能の仕組みを変更したため互換性がなくなりました、クラスターの再構築をお願いします

### 変更履歴

- [FIX] DTLS 処理終了時に起きていた問題を修正しました
- [FIX] 録画ウェブフックの `expired_at` が秒単位の UNIX Time ではなくマイクロ秒になっていたのを修正しました
- [FIX] 録画ウェブフックの `split-archive.available` と `split-archive-*.json` に offset が含まれていなかったのを修正しました
- [FIX] ULPFEC が有効でな状態でパケロス発生時に録画に失敗することがある問題を修正しました
- [FIX] 録画機能のウェブフックやファイルに含まれる統計値の名前 total_audio_discarded が間違っていたのを修正しました

#### JSONL 形式でのログ出力

- [ADD] `sora.conf` にログフォーマットのレガシー形式を維持する `legacy_log_format` を追加しました- デフォルトは `true` です
  - これは移行用設定です
- [ADD] `sora.conf` に JSONL 形式で出力しているログのレガシー拡張子を `.log` に維持する `legacy_log_extension` を追加しました- デフォルトは `true` です
  - これは移行用設定です
- [ADD] `sora.conf` の `legacy_log_format` を `false` にすることで以下のログは JSONL 形式で出力されます- sora ログ
  - internal ログ
  - signaling ログ
  - api ログ
  - auth_webhook ログ
  - session_webhook ログ
  - session_webhook_error ログ
  - event_webhook ログ
  - event_webhook_error ログ
  - connection ログ
- [ADD] `sora.conf` の `legacy_log_extension` を `false` にすることでJSONL 形式で出力されているログファイルの拡張子が `.log` から `.jsonl` に変更されます- `sora.log` が `sora.jsonl` に変更されます
  - `internal.log` が `internal.jsonl` に変更されます
  - `signaling.log` が `signaling.jsonl` に変更されます
  - `api.log` が `api.jsonl` に変更されます
  - `auth_webhook.log` が `auth_webhook.jsonl` に変更されます
  - `session_webhook.log` が `session_webhook.jsonl` に変更されます
  - `session_webhook_error.log` が `session_webhook_error.jsonl` に変更されます
  - `event_webhook.log` が `event_webhook.jsonl` に変更されます
  - `event_webhook_error.log` が `event_webhook_error.jsonl` に変更されます
  - `connection.log` が `connection.jsonl` に変更されます
- [CHANGE] サポート用ログファイルである `connection_created_wait_timeout_error/<timestamp>_<connection_id>.json`の拡張子を `.json` から `.jsonl` に変更しました

#### クラスター機能

- [CHANGE] クラスターの仕組みを変更したため、2022.1 系までのクラスターの仕組みとは互換性がありません- クラスターの初期化が必要になります
- [ADD] クラスター初期化に利用する [InitCluster](API_CLUSTER.html#621990) API を追加しました
- [CHANGE] クラスター機能の [ListClusterNodes](API_CLUSTER.html#a70901) API の `member_since` を廃止しました
- [CHANGE] クラスター機能の [ListClusterChannels](API_CLUSTER.html#0a4459) API の戻り値を変更しました- `owners` を追加し、その下にリストで `node_name` `epoch` `epoch_latest` `connected` を持つようにしました
  - `node_in_charge` を `node_name` に変更しました
  - `node_in_charge_epoch` を `epoch` に変更しました
  - `node_in_charge_epoch_stale` を `epoch_latest` に変更しました
  - `node_in_charge_connected` を `connected` に変更しました

#### Lyra コーデックへの対応

**これは実験的機能です**

- [ADD] `sora.conf` に Google が公開した音声圧縮用超低ビットレートコーデック[Lyra](https://github.com/google/lyra) を有効にする設定 `lyra` を追加しました- デフォルトは `false` です
  - `lyra = true` のように設定してください






- [ADD] シグナリング接続時の音声コーデックタイプに Lyra を指定できるようになりました- 指定する際は大文字の `LYRA` で指定する必要があります
  - Lyra を利用する際は lyra_params を指定する必要があります- `lyra_params` には lyra のバージョンを指定する `version` とビットレートを指定する `bit_rate` が指定できます
    - `{"audio": "codec_type": "LYRA", "lyra_params": {"version": "1.3.0", "bit_rate": 9200}}`
- [ADD] 認証成功時に `{"audio": true, "audio_codec_type": "LYRA", "audio_lyra_params": {"version": "1.3.0", "bitrate": 9200}` のように指定できるようになりました- この指定を利用する場合は `sora_conf-legacy_webhook_audio_video_json_structure` を `false` にする必要があります

#### 音声ストリーミング機能

**これは実験的機能です**

- [ADD] `sora.conf` に音声ストリーミングのリクエスト先の URL を指定する [audio_streaming_url](SORA_CONF.html#6b5dd6) を追加しました
- [ADD] `sora.conf` に音声ストリーミングで利用するデフォルトのランゲージコードを指定する [default_audio_streaming_language_code](SORA_CONF.html#856531) を追加しました
- [ADD] `sora.conf` に音声ストリーミングでデフォルトで結果をプッシュ通知で行うかどうかを指定する [default_audio_streaming_result_push](SORA_CONF.html#0b4a07) を追加しました
- [ADD] `sora.conf` に音声ストリーミングで mTLS を利用する秘密鍵を指定する [audio_streaming_tls_privkey_file](SORA_CONF.html#5f8e61) を追加しました
- [ADD] `sora.conf` に音声ストリーミングで mTLS を利用する証明書を指定する [audio_streaming_tls_fullchain_file](SORA_CONF.html#e5459b) を追加しました
- [ADD] `sora.conf` に音声ストリーミングで利用する CA ルート証明書を指定する [audio_streaming_tls_verify_cacert_file](SORA_CONF.html#feef99) を追加しました
- [ADD] 音声ストリーミングを開始する [StartAudioStreaming](API_AUDIO_STREAMING.html#0f1087) API を追加しました
- [ADD] 音声ストリーミングを終了する [StopAudioStreaming](API_AUDIO_STREAMING.html#bad1bb) API を追加しました
- [ADD] 音声ストリーミングの解析結果を購読する [SubscribeAudioStreamingResultPush](API_AUDIO_STREAMING.html#d26262) API を追加しました
- [ADD] 音声ストリーミングの解析結果を購読解除する [UnsubscribeAudioStreamingResultPush](API_AUDIO_STREAMING.html#b63656) API を追加しました

詳細は [音声ストリーミング機能](AUDIO_STREAMING.html) をご確認ください。

#### 音声冗長化機能

- [CHANGE] `sora.conf` の `audio_red` のデフォルト値を `false` に変更しました

#### センシティブデータ

- [ADD] `sora.conf` にセンシティブなデータが含まれる可能性がある項目を `"REDACTED"` という文字列への書き換えをスキップする [skip_redact_sensitive_data](SORA_CONF.html#00d209) を追加しました- デフォルトでは `false` です
- [CHANGE] `sora.conf` の `redact_archive_metadata_sensitive_data` を廃止しました- 録画メタデータファイルの `event_metadata` はセンシティブなデータの書き換え対象外としました
- [CHANGE] `sora.conf` の `redact_api_sensitive_data` を廃止しました- API の `event_metadata` はセンシティブなデータの書き換え対象外としました

詳細は [センシティブデータ](SENSITIVE_DATA.html) をご確認ください。

#### ウェブフックの audio と video 項目の JSON 構造のフラット化

- [ADD] `sora.conf` にウェブフックの audio と video 項目のレガシーな JSON 構造する `sora_conf-legacy_webhook_audio_video_json_structure` を追加しました- デフォルトでは `true` です
  - これは移行用設定です

詳細は `ウェブフックの audio と video 項目の JSON 構造のフラット化` をご確認ください

#### セッションウェブフックログを req/res 形式に変更

- [CHANGE] `session_webhook.jsonl` の出力形式を req/res 形式に変更しました
- [CHANGE] `session_webhook_error.jsonl` の出力形式を req 形式に変更しました

#### 録画とアーカイブ開始ウェブフックを追加

- [ADD] 録画開始ウェブフック `recording.started` を追加しました
- [ADD] アーカイブ開始ウェブフック [archive.started](EVENT_WEBHOOK.html#462c97) を追加しました
- [ADD] `sora.conf` に [ignore_recording_started_webhook](SORA_CONF.html#d9e570) を追加しました- デフォルトでは `false` です
- [ADD] `sora.conf` に [ignore_archive_started_webhook](SORA_CONF.html#3fddc0) を追加しました- デフォルトでは `false` です

#### ウェブフック mTLS / CA 証明書指定対応

- [ADD] `sora.conf` にウェブフックのリクエスト先との通信で mTLS を利用する際の証明書を指定する [webhook_tls_fullchain_file](SORA_CONF.html#93f2b9) を追加しました
- [ADD] `sora.conf` にウェブフックのリクエスト先との通信で mTLS を理世する際の秘密鍵を指定する [webhook_tls_privkey_file](SORA_CONF.html#7065d6) を追加しました
- [ADD] `sora.conf` にウェブフックのリクエスト先の証明書をベリファイするルート CA を指定する [webhook_tls_verify_cacert_file](SORA_CONF.html#7036dc) を追加しました

#### ウェブフック統計情報

- [ADD] ウェブフック関連の統計情報を GetStatsReport API に追加しました- `total_auth_webhook_allowed`- 認証ウェブフックで許可された数
  - `total_auth_webhook_denied`- 認証ウェブフックで拒否された数
  - `total_successful_auth_webhook`- 認証ウェブフックが成功した数
  - `total_failed_auth_webhook`- 認証ウェブフックが失敗した数
  - `total_successful_session_webhook`- セッションウェブフックが成功した数
  - `total_failed_session_webhook`- セッションウェブフックが失敗した数
  - `total_successful_event_webhook`- イベントウェブフックが成功した数
  - `total_failed_event_webhook`- イベントウェブフックが失敗した数

#### クラッシュログ出力 API

**これは実験的機能です**

- [ADD] 意図的に crash.log を出力させる `20221221.GenerateCrashLog` API を追加しました- **この API はログ出力の動作確認にのみ利用してください**
  - この API はかならずステータスコード 500 を返します


## 2022.1.3

**リリース**: 2022-11-02

### 変更履歴

- [FIX] 依存している OpenSSL を 3.0.7 にアップデートしました
- [FIX] データチャネルの性能ボトルネックを修正しました
- [FIX] データチャネル利用時に高負荷になった状態が継続する問題を修正しました
- [FIX] データチャネル利用時に意図しないメッセージを受信した際の問題を修正しました
- [FIX] データチャネル利用時に意図しないエラーが発生する問題を修正しました
- [FIX] データチャネル利用時に `compress` が `true` になっている Label のメッセージが壊れている場合の問題を修正しました


## 2022.1.1

**リリース**: 2022-07-12

### 変更履歴

- [FIX] 依存している OpenSSL を 3.0.5 にアップデートしました
- [FIX] 録画機能の `{"type": "split-archive-end"}` ウェブフックには解像度を含めないように修正しました
- [FIX] 録画機能の `split-archive-end-<connection_id>.json` ファイルには解像度を含めないように修正しました
- [FIX] `sora.log` にでるべきログの一部が `internal.log` に出力されていた問題を修正しました
- [FIX] クラスターのノードが異常な状態になったタイミングで `emergency` ログを出力して終了するように修正しました
- [FIX] sora.conf の `default_multistream` が true の時に、 `"type": "connect"` メッセージの `role` に `sendrecv` を指定し、かつ `multistream` を `指定しない` 場合に、エラーとなり接続できない問題を修正しました


## 2022.1.0

**リリース**: 2022-06-29

### ハイライト

- Ubuntu 22.04 に対応しました
- RHEL 9 に対応しました
- サイマルキャスト機能が正式版になりました
- スポットライト機能が正式版になりました
- スポットライト機能がサイマルキャスト無効でも利用できるようになりました
- サイマルキャスト機能やスポットライト機能利用時に、視聴されていないストリームは復号処理を行わない仕組みを追加しました
- 録画機能で、録画ファイル分割出力機能を有効にした場合にも recording.report ウェブフック通知とレポートファイルが作成されるようになりました
- クラスター利用時に、同一ライセンスを利用できる「最大ノード数ライセンス」の提供を開始しました
- クラスター機能で録画状態を共有する機能を追加しました
- クラスター機能でクラスター参加を自動で行う仕組みを追加しました
- クラスター機能でネットワーク障害発生時に自動で復旧を試みる仕組みを追加しました
- 特定の接続からのストリームを受信しないようにできる `bundle_id` を追加しました
- センシティブなデータが含まれる可能性がある `session_metadata` や `event_metadata` の値を `"REDACTED"` という文字列に書き換える仕組みを追加しました

### 廃止情報

- `sora.conf` の `demo` を廃止しました
- `sora.conf` の `remote_stats` を廃止しました
- `sora.conf` の `unuse_metadata_list` を廃止しました
- `sora.conf` の `use_re_offer` を廃止しました
- `GetAllRemoteStats` API を廃止しました
- `GetChannelRemoteStats` API を廃止しました
- `GetConnectionRemoteStats` API を廃止しました
- `StopRecording` API の `redirect` を廃止しました

### 互換なしの変更情報

- マルチストリームをデフォルトで有効にしました- `sora.conf` の `default_multistream` を `false` にすることでマルチストリームがデフォルトではなくなります
  - この設定は 2023 年 6 月リリースの Sora にて廃止します
  - 詳細は [sora.conf の default_multistream の廃止](OBSOLETE.html#615559) をご確認ください
- `type: archive.end` を `type: split-archive.end` に変更しました- `sora.conf` の `split_archive_legacy_prefix` を `true` にすることで `type: archive.end` がそのまま利用できます
  - この設定は 2023 年 6 月リリースの Sora にて廃止します
  - 詳細は [sora.conf の split_archive_legacy_prefix の廃止](OBSOLETE.html#050276) をご確認ください
- `type: archive.split` を `type: split-archive.available` に変更しました- `sora.conf` の `split_archive_legacy_prefix` を `true` にすることで `type: archive.split` がそのまま利用できます
  - この設定は 2023 年 6 月リリースの Sora にて廃止します
  - 詳細は [sora.conf の split_archive_legacy_prefix の廃止](OBSOLETE.html#050276) をご確認ください
- `archive-<connection-id>_<index>.webm` を `split-archive-<connection-id>_<index>.webm` に変更しました- `sora.conf` の `split_archive_legacy_prefix` を `true` にすることで `archive-<connection-id>_<index>.webm` がそのまま利用できます
  - この設定は 2023 年 6 月リリースの Sora にて廃止します
  - 詳細は [sora.conf の split_archive_legacy_prefix の廃止](OBSOLETE.html#050276) をご確認ください
- `archive-<connection-id>_<index>.json` を `split-archive-<connection-id>_<index>.json` に変更しました- `sora.conf` の `split_archive_legacy_prefix` を `true` にすることで `archive-<connection-id>_<index>.json` がそのまま利用できます
  - この設定は 2023 年 6 月リリースの Sora にて廃止します
  - 詳細は [sora.conf の split_archive_legacy_prefix の廃止](OBSOLETE.html#050276) をご確認ください
- セッションウェブフックでセッションの接続数が 0 のタイミングで `multistream` と `spotlight` がセッションと異なる新規接続が来た場合は既存のセッションを破棄し `session.destroyed` ウェブフックリクエストを送信した後に、新規でセッションを作成し `session.created` を送信するように変更しました
- セッションウェブフックでセッションの接続数が 0 ではないタイミングで `multistream` と `spotlight` がセッションと異なる新規接続が来た場合は `INVALID-SIGNALING-PARAMS` エラーを返し切断するように変更しました
- セッションウェブフック `session.created` と `session.destroyed` の `created_time` と `destroyed_time` を UNIX 時間に変更しました
- `sora.log` と `internal.log` の時刻を RFC3339 準拠に変更しました
- `cluster` 関連設定名を変更しました- `cluster_node_name` を `node_name` へ変更しました
  - `cluster_api_url` を `external_api_url` へ変更しました
  - `cluster_signaling_url` を `external_signaling_url` へ変更しました
  - `sora_version` を `version` に変更しました
- `cluster` 関連 API の引数や戻り値を変更しました
- クラスター機能を有効にしたときのモードを `initial` へ変更しました
- クラスターに参加したときに自動でモードが `initial` から `normal` へ切り替わるよう変更しました

### 変更履歴

- [CHANGE] セッションウェブフック `session.created` の `created_time` を UNIX 時間に変更しました
- [CHANGE] セッションウェブフック `session.destroyed` の `created_time` を UNIX 時間に変更しました
- [CHANGE] セッションウェブフック `session.destroyed` の `destroyed_time` を UNIX 時間に変更しました
- [UPDATE] 組み込みの開発ツールを `2022.1.0` にアップデートしました
- [ADD] RHEL 9 x86_64 に対応しました
- [ADD] Ubuntu 22.04 x86_64 に対応しました
- [ADD] イベントウェブフック `connection.created` に RFC3339 形式で出力する `created_timestamp` を追加しました
- [ADD] イベントウェブフック `connection.updated` に RFC3339 形式で出力する `created_timestamp` を追加しました
- [ADD] イベントウェブフック `connection.destroyed` に RFC3339 形式で出力する `created_timestamp` を追加しました
- [ADD] イベントウェブフック `connection.destroyed` に RFC3339 形式で出力する `destroyed_timestamp` を追加しました
- [ADD] イベントウェブフック `connection.destroyed` に UNIX 時間で出力する `destroyed_time` を追加しました
- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API に Sora のバージョンを取得できる `version` を追加しました
- [ADD] 認証成功時の H.265 の払い出しを追加しました
- [ADD] 認証ウェブフックに `simulcast_rid` を追加しました
- [ADD] Sora 内部で利用するファイルを書き出す `data` ディレクトリを追加しました
- [ADD] `sora.conf` に Sora 内部で利用するファイルを書き出す `data` ディレクトリを指定する `data_dir` を追加しました
- [FIX] Opus の RED の仕様変更ともない動作しなくなっていた問題を修正しました
- [FIX] 0 番ポートでパケットが送られてきた場合の問題を修正しました
- [FIX] DTLS で異常なパケットが送られてきた場合でも可能な限り丁寧に終了処理を行うように修正しました
- [FIX] 異常な STUN パケットが送られてきた場合の問題を修正しました
- [FIX] 録画した WebM ファイルの `Cluster Timecode` が負の値になると発生する問題を修正しました

#### マルチストリームをデフォルトで有効化

マルチストリームをデフォルトで有効にしました。

いままでマルチストリームを利用する場合は、シグナリング接続時に `"multistream": true` を指定して有効にする必要がありました。これをデフォルトで有効に変更しました。

今後は、マルチストリームを利用しない場合は明示的に `"multistream": false` を指定する必要があります。

- [CHANGE] マルチストリームをデフォルトで有効に変更しました
- [ADD] `sora.conf` にマルチストリームのデフォルト値を指定する `default_multistream` を追加しました- デフォルトでは `true` が設定されています
  - この設定は 2023 年 6 月リリース予定の Sora にて廃止します
  - 詳細は [sora.conf の default_multistream の廃止](OBSOLETE.html#615559) をご確認ください

例外的にスポットライト機能を利用するときは `"multistream": true` を明示する必要があります。

#### bundle_id の追加

複数のコネクションを同じ端末から接続する際、それぞれのコネクションで同一の `bundle_id` を指定すると、
同一の `bundle_id` を指定した接続からの音声や映像、メッセージングを受信しなくなります。

画面共有の映像を受信したくない場合などにお使いください。

- [ADD] `sora.conf` に `"type": "connect"` 時に `bundle_id` を指定できるかどうかを設定する [signaling_bundle_id](SORA_CONF.html#279311) を追加しました- デフォルトでは `false` が設定されています
- [ADD] `sora.conf` に [signaling_notify_bundle_id](SORA_CONF.html#f2a58f) を追加しました- デフォルトでは `true` が設定されています
- [ADD] `"type": "connect"` で `bundle_id` が指定できるようになりました- 詳細は [bundle_id の指定](WEBSOCKET_SIGNALING.html#196326) をご確認ください
- [ADD] 認証成功時の払い出しで `bundle_id` を指定できるようになりました- 詳細は [bundle_id の払い出し](AUTH_WEBHOOK_RETURN.html#d2b87b) をご確認ください

#### sora.log と internal.log の出力

- [CHANGE] タイムスタンプの出力を RFC3339 準拠に変更しました- Sora 2021.2.7 まで- `2022-03-07 02:54:26.847 UTC [info] [-/-/-] <0.1218.0> SORA | node_name=sora@192.0.2.1, version=2021.2.7`
  - Sora 2022.1.0 から- `2022-03-07T02:54:26.847130Z [info] [-/-/-] <0.1218.0> SORA | node_name=sora@192.0.2.1, version=2022.1.0`

#### 録画機能

- [CHANGE] 分割録画ファイルとメタデータファイルの出力名を `archive-<connection_id>_<index>.(json|webm)` から `split-archive-<connection_id>_<index>.(json|webm)` に変更しました- `sora.conf` の `split_archive_legacy_prefix` を `true` にすることで `archive-<connection_id>_<index>.(json|webm)` を維持できます
- [CHANGE] 録画分割時のウェブフックのタイプ `"type": "archive.split"` を `"type": "split-archive.available"` に変更しました
- [CHANGE] 録画分割時のウェブフックのタイプ `"type": "split.end"` を `"type": "split-archive.end"` に変更しました
- [CHANGE] 録画一時ファイルディレクトリ `archive_tmp_dir` に保存される録画一時ファイルは、録画が失敗した場合には削除されなくなりました
- [ADD] `report-<connection_id>.json` に `node_name` と `label` 項目を追加しました
- [ADD] `sora.conf` に分割録画ファイル名を `archive-<connection_id>_<index>.(json|webm)` にする `split_archive_legacy_prefix` を追加しました- デフォルトは `false` です
  - この設定は 2023 年 6 月リリース予定の Sora にて廃止します
  - 詳細は [sora.conf の split_archive_legacy_prefix の廃止](OBSOLETE.html#050276) をご確認ください
- [ADD] 録画の状態をクラスターで共有する仕組みを追加しました
- [ADD] `split_only` に `true` を指定した場合に、 `archive.end` ウェブフックと対になる `split-archive-end-<connection_id>.json` ファイルを作成するようになりました
- [ADD] `split_only` に `true` を指定した場合でも `recording.report` ウェブフックリクエストを飛ばすようになりました
- [ADD] `split_only` に `true` を指定した場合でも `report-<recording_id>.json` ファイルを作成するようになりました
- [ADD] 録画メタデータファイルとレポートファイルに `label` と `node_name` を追加するようにしました
- [UPDATE] 録画で生成された WebM ファイルが Windows の `Windows標準アプリケーションの"映画＆テレビ"` で正常に再生できない問題へ対応しました- Sora 側の問題ではなく `Windows標準アプリケーションの"映画＆テレビ"` が WebM の仕様を守っていないことによる問題です

#### サイマルキャストやスポットライト機能利用時の負荷削減

- [ADD] サイマルキャストやスポットライト利用時に誰も視聴していない音声や映像ストリームの復号を行わない処理を追加しました
- [ADD] 統計 API の rtp 項目に `tocal_decrypt_skipped_audio_srtp` を追加しました
- [ADD] 統計 API の rtp 項目に `tocal_decrypt_skipped_video_srtp` を追加しました
- [ADD] 統計 API の simulcast.rtp.(r0|r1|r2) 項目に `total_decrypt_skipped_srtp` を追加しました

#### サイマルキャスト無効でのスポットライト機能利用

- [ADD] スポットライト機能が `"simulcast": false` でも利用できるようになりました

#### クラスター機能

- [CHANGE] クラスター有効時に起動した際のモードを `initial` モードに変更しました
- [CHANGE] クラスターに参加したタイミングで自動で `initial` モードから `normal` モードに切り替わるように変更しました
- [CHANGE] `sora.conf` の `cluster_node_name` を `node_name` に変更しました
- [CHANGE] `sora.conf` の `cluster_signaling_url` を `external_signaling_url` に変更しました
- [CHANGE] `sora.conf` の `cluster_api_url` を `external_api_url` に変更しました
- [CHANGE] クラスター有効時に sora.log / internal.log にクラスターノード名を出力するように変更しました
- [CHANGE] [JoinCluster](OBSOLETE_API.html#17f3f5) API の `cluster_node_name` を `contact_node_name` に変更しました
- [CHANGE] [ListClusterNodes](API_CLUSTER.html#a70901) API の `cluster_node_name` を `node_name` に変更しました
- [ADD] クラスターから特定のノードの情報を完全消去する [PurgeClusterNode](API_CLUSTER.html#13b35a) API を追加しました
- [ADD] `sora.conf` に Sora 起動時に自動でクラスター参加を試みる `contact_node_name_list` を追加しました- 詳細は `contact_node_name_list` をご確認ください
- [ADD] `sora.conf` にネットワーク障害等発生時に自動で再接続を試みる `cluster_auto_reconnect` を追加しました- デフォルトは有効です
- [ADD] ネットワーク障害等発生時に自動で復旧を試みる仕組みを追加しました

#### 最大ノード数対応ライセンス

クラスター利用時に、複数のノードに同一のライセンスが利用できる最大ノードライセンスの提供を開始しました。

詳細は [最大ノード数ライセンス](LICENSE.html#aee259) をご確認ください。

- [CHANGE] 最大ノード数ライセンスに対応していないライセンスを複数のノードに適用し、クラスターを構築しようとすると `DUPLICATE-LICENSE` が出力されるように変更されました- 無制限ライセンスをご利用のお客様でクラスターを利用されている場合はサポートまでご連絡ください
- [ADD] クラスター利用時に同一のライセンスを利用できる最大ノード数ライセンスに対応しました- **新規でライセンスを発行し直す必要がありますのでサポートまでご連絡ください**
  - 新しくライセンスに `max_nodes` という項目を追加し、この最大ノード数までは複数の Sora で同一のライセンスを利用できるようになります

#### 統計機能

- [ADD] 統計 API の rtp 項目に `total_received_srtp_invalid` を追加しました
- [ADD] 統計 API の turn 項目に `total_received_unknown_packet` を追加しました
- [ADD] 統計 API の turn 項目に `total_received_stun_unknown` を追加しました
- [ADD] 統計 API の turn 項目に `total_received_stun_invalid` を追加しました
- [ADD] 統計 API の turn 項目に `total_received_turn_invalid_stun` を追加しました
- [ADD] データチャネルの破棄やリトライの回数をラベルごとに取得できるようになりました- データチャネルの破棄メッセージ数 `total_data_channel_abandon_message` を追加しました
  - データチャネルの再送メッセージ数 `total_data_channel_retransmit_message` を追加しました
  - データチャネルの `DATA_CHANNEL_OPEN` メッセージ数 `total_data_channel_ack_message` を追加しました
  - データチャネルの `DATA_CHANNEL_ACK` メッセージ数 `total_data_channel_open_message` を追加しました
- [UPDATE] `total_sent_data_channel_message` から `DATA_CHANNEL_OPEN` メッセージを除外しました
- [UPDATE] `total_received_data_channel_message` から `DATA_CHANNEL_ACK` メッセージを除外しました

#### センシティブデータ編集済出力機能

詳細は [センシティブデータ](SENSITIVE_DATA.html) をご確認ください。

- [CHANGE] `auth_webhook.log` に含まれる `event_metadata` の中身を編集済みを表す `"REDACTED"` という文字列に書き換える変更を行いました
- [CHANGE] `session_webhook.log` に含まれる `session_metadata` と `event_metadata` の中身を編集済みを表す `"REDACTED"` という文字列にに書き換える変更を行いました
- [CHANGE] `event_webhook.log` に含まれる `event_metadata` の中身を、編集済みを表す `"REDACTED"` という文字列に書き換える変更を行いました- `event_webhook_error.log` の `event_metadata` は書き換えを行いません
- [ADD] `sora.conf` にAPI 戻り値に含まれるセンシティブな可能性があるデータを、編集済みを表す `"REDACTED"` という文字列に書き換える `redact_api_sensitive_data` を追加しました- デフォルトでは `true`
  - `event_metadata` の中身を `"REDACTED"` という文字列に書き換えます
- [ADD] `sora.conf` に録画メタデータファイルに含まれるセンシティブな可能性があるデータを `"REDACTED"` という文字列に書き換える `redact_archive_metadata_sensitive_data` を追加しました- デフォルトでは `true`
  - `event_metadata` の中身を `"REDACTED"` という文字列に書き換えます


## 2021.2.8

**リリース**: 2022-04-11
**対応 Chrome**: M98 以降
**対応 Firefox**: 97 以降
**対応 Safari**: 15.3 以降
**対応 Edge**: 98 以降

### 変更履歴

- [FIX] 依存ライブラリ OpenSSL を 1.1.1n にアップデートしました


## 2021.2.7

**リリース**: 2022-02-24
**対応 Chrome**: M98 以降
**対応 Firefox**: 97 以降
**対応 Safari**: 15.3 以降
**対応 Edge**: 98 以降

### 変更履歴

- [CHANGE] 録画失敗時でも一時ファイルを削除しないようにしました
- [FIX] PauseRtpStream API がイベントウェブフック connection.created を受け取ったタイミングで実行しても正常に動作しない問題を修正しました
- [FIX] 録画ファイル分割出力のみの場合でも、一時ファイルが録画終了時まで削除されずに残っていた問題を修正しました


## 2021.2.1

**リリース**: 2021-12-20
**対応 Chrome**: M97 以降
**対応 Firefox**: 95 以降
**対応 Safari**: 15.1 以降
**対応 Edge**: 97 以降

- [FIX] 録画機能利用時に `sora.conf` の [archive_tmp_dir](SORA_CONF.html#4d75ea) と [archive_dir](SORA_CONF.html#ad2156) で指定される 2 つのディレクトリが異なるファイルシステムにある場合に、録画ファイルの生成に失敗する問題を修正しました


## 2021.2.0

**リリース**: 2021-12-15
**対応 Chrome**: M97 以降
**対応 Firefox**: 95 以降
**対応 Safari**: 15.1 以降
**対応 Edge**: 97 以降

### ハイライト

- クラスター機能を追加しました
- DataChannel を利用したメッセージング機能を追加しました
- 統計エクスポーター機能を追加しました
- スポットライト機能のフォーカス/アンフォーカスを変更する API を追加しました
- ICE コネクションステート機能を追加しました
- シグナリング通知に録画開始/終了の通知を追加しました
- セッションウェブフックを追加しました
- 音声冗長化機能に対応しました
- AV1 コーデック利用時の録画に対応しました

### 廃止情報

- CentOS 8 への対応を終了しました- 詳細は [CentOS 8 対応](OBSOLETE.html#14536f) をご確認ください
- スポットライトレガシー機能を廃止しました- 詳細は [スポットライトレガシー機能の廃止](OBSOLETE.html#9bb8f9) をご確認ください
- 統計機能の `rtp` にある `rtcp` を廃止しました- 詳細は [rtp にある RTCP 関連統計情報を廃止](OBSOLETE.html#4d430c) をご確認ください
- `sora.conf` の `extmap_allow_mixed` 設定を廃止しました- 詳細は [extmap_allow_mixed 設定のデフォルト有効化と廃止](OBSOLETE.html#6099d7) をご確認ください
- `sora.conf` の `dcsctp_association_max_retrans` 設定を廃止しました- 詳細は [sora.conf の dcsctp_association_max_retrans を廃止](OBSOLETE.html#63d7f7) をご確認ください
- 実験的機能である `sora.conf` の `opus_param_clock_rate` 設定を廃止しました
- [ListAllConnections](OBSOLETE_API.html#7a9c4e) API を廃止しました- 今後は [ListConnections](API_SIGNALING.html#d3da2a) API をご利用ください。
- [ListChannelClients](OBSOLETE_API.html#a65eee) API を廃止しました- 今後は [ListChannelConnections](API_SIGNALING.html#d388f3) API をご利用ください

### 互換性なしの変更情報

**変更点の不明点についてはサポートまでお問い合わせください**

**猶予期間を儲けない変更となっておりますのでご注意ください**

- [ListConnections](API_SIGNALING.html#d3da2a) API の戻り値に含まれる `connection_created_timestamp_sec` の項目名を `created_time` に変更、単位を秒からマイクロ秒に変更しております
- [ListChannelConnections](API_SIGNALING.html#d388f3) API の戻り値に含まれる `connection_created_timestamp_sec` の項目名を  `created_time` に変更しており、単位を秒からマイクロ秒に変更しております

### 変更履歴

- [CHANGE] `connection.log` のタイムスタンプを秒からマイクロ秒に変更しました
- [CHANGE] Chrome 側の破壊的変更により Chrome M95 以前の AV1 への対応を廃止しました- AV1 を利用する場合は Chrome M96 以降をご利用ください
- [ADD] `sora.conf` に TURN-TCP で Allocate-Success を遅延させる [turn_tcp_allocate_success_delay_time](SORA_CONF.html#60d922) を追加しました- デフォルトは `100 ms` です
  - 0-1000 ms の範囲で指定できます
- [ADD] Sora 起動時に Sora のバージョンが INFO レベルで `sora.log` に出力されるようになりました- `2021-12-15 12:34:56.789 UTC [info] [-/-/-] <0.235.0> SORA | node_name=sora@127.0.0.1, version=2021.2.0`

#### 移行

- [CHANGE] `sora.conf` の `use_re_offer` が `true` の場合 `type: update` を Sora に送るとエラーになるよう変更しました
- [CHANGE] `sora.conf` の `use_re_offer` のデフォルト値を `true` に変更しました- この設定は 2022 年 6 月リリース予定の Sora にて廃止します
- [CHANGE] `sora.conf` の `unuse_metadata_list` のデフォルト値を `true` に変更しました- この設定は 2022 年 6 月リリース予定の Sora にて廃止します

#### 開発ツール

- [CHANGE] デモ機能を **開発ツール** と名前を変更しました
- [CHANGE] `sora.conf` の `demo` を `true` にした場合 `devtools` が有効になるように変更しました- `sora.conf` の `demo` は 2022 年 6 月のリリースにて廃止します
  - 詳細は [sora.conf の demo の廃止](OBSOLETE.html#12e7c9) をご確認ください
- [ADD] `sora.conf` に `devtools` を追加しました- デフォルトは `false` です

#### ウェブフック

- [ADD] 認証ウェブフックに `node_name` を追加しました
- [ADD] イベントウェブフックに `node_name` を追加しました
- [ADD] イベントウェブフックの `recording.report` に `filename` と `file_path` を追加しました- `metadata_filename` と `metadata_file_path` は 2022 年 12 月リリース予定の Sora で廃止します
  - 廃止対象は JSON 内の `"data"` 直下のフィールドのみで、 `"archives"` 以下にある`metadata_filename` と `metadata_file_path` は変更ありません

#### セッションウェブフック

詳細は [セッションウェブフック](SESSION_WEBHOOK.html) をご確認ください。

- [ADD] `sora.conf` にセッションウェブフックの URL を指定する [session_webhook_url](SORA_CONF.html#76fa79) を追加しました
- [ADD] `sora.conf` にセッション生成時のタイムアウトを指定する [session_created_timeout](SORA_CONF.html#20c8c6) を追加しました- デフォルトは `5 s` です
- [ADD] `sora.conf` に セッション破棄時のタイムアウトを指定する [session_destroyed_timeout](SORA_CONF.html#642cc4) を追加しました- デフォルトは `15 s` です
- [ADD] `session.created` セッションウェブフックを追加しました- セッションが作成されたタイミングで送信します
- [ADD] `session.destroyed` セッションウェブフックを追加しました- セッションが破棄されたタイミングで送信します
- [ADD] `session.vanished` セッションウェブフックを追加しました- `block_new_connection` または `block_new_session` モード時にすべてのセッションが破棄されたタイミングで送信します
- [ADD] `sora.conf` に `session.vanished` をウェブフックリクエストとして送信しない `ignore_session_vanished_webhook` を追加しました- デフォルトは `true` です
- [ADD] セッションウェブフックリクエスト送信時の HTTP ヘッダーに `x-sora-session-webhook-type` を追加しました- ヘッダーの値は `type` の値が入ります
- [ADD] セッションウェブフックのログを出力する `log/session_webhook.log` を追加しました
- [ADD] セッションウェブフックの失敗ログを出力する `log/session_webhook_failed.log` を追加しました
- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API に合計セッション生成回数 `total_session_created` を追加しました
- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API に合計セッション破棄回数 `total_session_destroyed` を追加しました

#### モード機能

詳細は [モード機能](MODE.html) をご確認ください。

- [ADD] 新規セッションやコネクションを受け付けなくするモードの仕組みを追加しました- 初期値は `normal` です
  - `sora.conf` にて `cluster` を有効にしたときの初期値は `block_new_connection` です
- [ADD] モードを切り替える `ChangeMode API` を追加しました- `"mode": "normal"` を指定するとすべての新規コネクションを受け付けます
  - `"mode": "block_new_session"` を指定することで新規セッションをブロックすることができます
  - `"mode": "block_new_connection"` を指定することで新規コネクションをブロックすることができます
- [ADD] 現在のモードを取得する `GetMode API` を追加しました

#### クラスター機能

詳細は [クラスター機能](CLUSTER.html) をご確認ください。

- [ADD] クラスター機能利用時にどのノードへも接続ができない場合 `NO-ACCEPTABLE-NODE` を出力するようにしました
- [ADD] 複数 Sora でクラスターを構築し、冗長化する機能を追加しました
- [ADD] クラスター機能利用時に新規のチャネルへの接続する際、同時接続に余裕のある Sora ノードに割り当てる機能を追加しました
- [ADD] クラスター機能利用時に既存のチャネルへの接続する際、そのチャネルへの接続が存在する Sora ノードに割り当てる機能を追加しました
- [ADD] シグナリング接続時に別の Sora ノードにリダイレクトする `"type": "redirect"` を追加しました- リダイレクト先のシグナリング URL が `"location": "wss://node01.example.com/signaling"` に含まれます
- [ADD] リダイレクト先のシグナリング URL を利用する際に `"redirect": true` を `"type": "connect"` に追加できるようにしました
- [ADD] sora.conf にクラスター利用時にリダイレクトに利用する `cluster_signaling_url` の設定を追加しました- `cluster_signaling_url = wss://node01.example.com/signaling`
- [ADD] sora.conf にクラスター利用時の Sora ノード名を指定する `cluster_node_name` の設定を追加しました- `cluster_node_name = node01@192.0.2.10`
- [ADD] sora.conf にクラスター利用時に API URL を指定する `cluster_api_url` の設定を追加しました- `cluster_api_url = https://node01.example.com/`
- [ADD] sora.conf にクラスター利用時のノード間通信に使用するポート番号を指定する [cluster_listen_min_port](SORA_CONF.html#7aa8c7) と [cluster_listen_max_port](SORA_CONF.html#354463) の設定を追加しました- デフォルトは [cluster_listen_min_port](SORA_CONF.html#7aa8c7) が `49010` で、 [cluster_listen_max_port](SORA_CONF.html#354463) が `49020` です
- [ADD] クラスターに参加するための [JoinCluster](OBSOLETE_API.html#17f3f5) API を追加しました- クラスターからの離脱は `bin/sora stop` を実行します
- [ADD] クラスターに参加しているノード一覧を取得するための [ListClusterNodes](API_CLUSTER.html#a70901) API を追加しました
- [ADD] クラスターに割り当てられているチャネル ID 一覧を取得するための [ListClusterChannels](API_CLUSTER.html#0a4459) API を追加しました

#### 音声冗長化機能

**この機能は Chrome 96 以降で利用できます**

- [ADD] `sora.conf` に 音声冗長化機能を有効にする `audio_red` を追加しました。- デフォルトは `false` です
  - 音声冗長化についての詳細は[PSA: opus+red enabled by default in M96](https://groups.google.com/g/discuss-webrtc/c/5761etCrSuA/m/VrbQL3_LBwAJ) を参照ください
- [ADD] 1 チャネルへの接続が `audio_red` への対応が混在していてもやりとりできるようにしました。

#### 録画機能

- [ADD] AV1 の録画に対応しました- この機能は Chrome 96 以降で利用できます
- [ADD] [StartRecording](OBSOLETE_API_LEGACY_RECORDING.html#c5b527) API にて `metadata` を指定可能にしました- `metadata` は JSON オブジェクトである必要があります
  - `metadata` はオプションです
- [ADD] `recording.report` や録画メタデータファイルに [StartRecording](OBSOLETE_API_LEGACY_RECORDING.html#c5b527) API で指定した `metadata` を出力するようにしました- 指定しなければ `metadata` が出力されません
- [ADD] シグナリング通知を利用している場合、録画開始時に ["event_type": "recording.started"](SIGNALING_NOTIFY.html#7698a8) が通知されるようになりました
- [ADD] シグナリング通知を利用している場合、録画終了時に ["event_type": "recording.stopped"](SIGNALING_NOTIFY.html#421054) が通知されるようになりました
- [ADD] `sora.conf` に録画関連をシグナリング通知で送信するかどうかを指定する [signaling_notify_recording](SORA_CONF.html#cfe368) を追加しました

#### 統計エクスポーター機能

クライアントから送られてきた統計情報を HTTP/2 経由で外部へ出力する機能です。

詳細は [統計エクスポーター機能](OBSOLETE_STATS_EXPORTER.html) をご確認ください。

- [ADD] `sora.conf` に統計エクスポーターの接続先を指定する `stats_collector_url` を追加しました- `stats_collector_url = http://h2c.example.com:5890/collector`
  - `stats_collector_url = https://h2.example.com/collector`
- [ADD] 統計コレクターへ送信時の HTTP ヘッダーに `x-sora-stats-exporter-type` を追加しました- ヘッダーの値は `type` の値が入ります
- [ADD] `sora.conf` に統計エクスポーターの数を指定する `stats_exporter_number` を追加しました- デフォルトは `5` です
- [ADD] `sora.conf` に `stats_exporter_tls_fullchain_file` を追加しました
- [ADD] `sora.conf` に `stats_exporter_tls_privkey_file` を追加しました
- [ADD] `sora.conf` に `stats_exporter_tls_verify_cacert_file` を追加しました
- [ADD] 頻繁に送らない項目を定義しました- 1 h に 1 回送ります
  - codec / local-candidate / remote-candidate / certificate / peer-connection / track-stream

#### スポットライト機能

フォーカス/アンフォーカス挙動変更 API を追加しました。

- [ADD] スポットライトのフォーカス/アンフォーカス挙動を変更する [RequestSpotlightRid](API_SPOTLIGHT.html#5c2650) API` を追加しました
- [ADD] スポットライトのフォーカス/アンフォーカス挙動をリセットする [ResetSpotlightRid](API_SPOTLIGHT.html#680344) API を追加しました
- [ADD] スポットライトのフォーカス/アンフォーカス挙動を一括で変更する [BatchRequestSpotlightRid](API_SPOTLIGHT.html#a2e06c) API を追加しました

#### ICE コネクションステート機能

詳細は [ICE コネクションステート機能](ICE_CONNECTION_STATE.html) をご確認ください。

- [ADD] `sora.conf` に `ice_connection_state_disconnected_timeout` を追加しました- デフォルトは `5 s` です
- [ADD] `sora.conf` に `ice_connection_state_failed_timeout` を追加しました- デフォルトは `10 s` です
- [ADD] `sora.log` に warning で `ICE-CONNECTION-DISCONNECTED` が出力されるようになりました- `1000 ms` 間隔で 5 秒間 `STUN Binding-Request` を送っても 1 度も `STUN Binding-Success` が返ってこない場合に出力されます
  - `1000 ms` は `sora.conf` の `ice_connection_state_disconnected_timeout` にて変更できます
- [ADD] `sora.log` に `error` で `ICE-CONNECTION-FAILED` が出力されるようになりました- この場合 Sora は接続を切断します
  - `50 ms` 間隔で 10 秒間 `STUN Binding-Request` を送っても 1 度も `STUN Binding-Success` が返ってこない場合に出力されます
  - `50 ms` は `sora.conf` の `ice_connection_state_failed_timeout` にて変更できます

#### DataChannel 機能

- [CHANGE] 利用しない DataChannel を作成しない仕組みを追加しました- `sora.conf` の [signaling_notify](SORA_CONF.html#d88348) が無効の場合は `label: notify` の DataChannel は作成しません
  - `sora.conf` の `sora_conf-e2ee` が無効の場合は `label: e2ee` の DataChannel は作成しません
  - `sora.conf` の `user_agent_stats` が無効の場合は `label: stats` の DataChannel は作成しません
- [CHANGE] `dcsctp_association_max_retrans` を廃止しました- 切断判定には ICE コネクションステート機能が利用されます

#### メッセージング機能

詳細は [リアルタイムメッセージング機能](MESSAGING.html) をご確認ください。

DataChannel を利用したメッセージをユーザーが提起して自由に送ることができる機能です。ラベルは `#` から始まる必要があります。

- [ADD] `type: connect` に `data_channels` を追加しました- メッセージ機能は `[{"label": "#abc", "direction": "sendrecv"}, ...]` で指定できます
  - メッセージのラベルを指定する `label` を追加しました- `^#[a-zA-Z0-9][a-zA-Z0-9-]{1,30}$`
  - メッセージのメッセージの方向を指定する `direction` を追加しました- `sendrecv` / `sendonly` / `recvonly` のどれかを指定して下さい
    - 方向はクライアントから見た視点で `role` と同様です
  - メッセージの順番を指定する [ordered](MESSAGING.html#17e8c5) を追加しました- デフォルトは `true` です
  - メッセージのリトライ時間を指定する [max_packet_life_time](MESSAGING.html#3b5bc1) を追加しました- デフォルト指定無しです
    - 単位はミリ秒です
  - メッセージのリトライ回数を指定する [max_retransmits](MESSAGING.html#02a10a) を追加しました- デフォルト指定無しです
  - メッセージの圧縮を指定する [compress](MESSAGING.html#fbaa9b) を追加しました- デフォルトは `false` です
- [ADD] `sora.conf` に [data_channel_messaging](SORA_CONF.html#1d5746) を追加しました- デフォルトは `false` です
- [ADD] 認証成功時の払い出しで `data_channels` を指定できるようにしました- `"type": "connect"` 時に、指定された `data_channels` を上書きできます
- [ADD] `sora.conf` に [data_channel_messaging_only](SORA_CONF.html#93c61c) を追加しました- デフォルトは `false` です

#### ユーザーエージェント統計 API

リモート統計情報 API の名前を変更し整理した API です。

リモート統計情報 API は 2022 年 6 月リリースの Sora にて廃止しますので、
ユーザーエージェント統計情報 API に切り替えをお願いします。

- [CHANGE] `remote_stats` をデフォルト `false` にしました
- [ADD] `sora.conf` に `user_agent_stats` を追加しました- デフォルトは `true` です
  - `remote_stats` は 2022 年 6 月にて廃止します
- [ADD] [ListUserAgentStats](OBSOLETE_API_USER_AGENT_STATS.html#f9a4fe) API を追加しました- [GetAllRemoteStats](OBSOLETE_API.html#3a6504) の代替 API です
- [ADD] [ListChannelUserAgentStats](OBSOLETE_API_USER_AGENT_STATS.html#df496a) API を追加しました- [GetChannelRemoteStats](OBSOLETE_API.html#bbd252) の代替 API です
- [ADD] [GetUserAgentStats](OBSOLETE_API_USER_AGENT_STATS.html#a078ba) API を追加しました- [GetConnectionRemoteStats](OBSOLETE_API.html#2f926d) の代替 API です


## 2021.1.4

**リリース**: 2021-10-29
**対応 Chrome**: M95 以降
**対応 Firefox**: 93 以降
**対応 Safari**: 15.1 以降
**対応 Edge**: 95 以降

### 変更履歴

- [FIX] ネットワークが不安定な場合に録画が失敗する問題を修正しました
- [FIX] Safari を利用した場合に特定条件で復号が失敗する問題を修正しました


## 2021.1.2

**リリース**: 2021-09-17
**対応 Chrome**: M93 以降
**対応 Firefox**: 92 以降
**対応 Safari**: 14.1 以降
**対応 Edge**: 93 以降

### 変更履歴

- [UPDATE] デモ機能で利用している sora-demo を 2021.1.6 にアップデートしました
- [ADD] 切断 API の `reason` を指定した場合に、指定した `reason` が、イベントウェブフック `connection.destroyed` に `disconnect_api_reason` として含まれるようになりました- 今まで `reason` として入ってきていたのと同じ値が入ります
- [ADD] `"type": "disconnect"` に `reason` を指定した場合に、指定した `reason` が、イベントウェブフック `connection.destroyed` に `type_disconnect_reason` として含まれるようになりました
- [ADD] イベントウェブフック `connection.*` の `data` に `"created_time": "connection.created 時の UNIX 時刻"` を追加しました
- [ADD] `sora.conf` にスポットライトでフォーカスされた後、一定時間追い出されなくなる [sora_conf-default_spotlight_focus_min_interval](SPOTLIGHT.html#9ba866) を追加しました- デフォルトは `2000 ms` です
- [FIX] スポットライト機能で複数人が音を出し続けていると頻繁にフォーカスが入れ替わる問題を修正しました- アンフォーカス後のフォーカスは、最低でも [sora_conf-default_spotlight_delayed_focus_interval](SPOTLIGHT.html#a5df3b) だけ待つようになりました
- [FIX] スポットライト機能でアンフォーカスからフォーカスに変わるタイミングで音声や映像が配信されなくなる場合がある問題を修正しました
- [FIX] スポットライト機能で自動アンフォーカスが指定した時間よりも速く行われる問題を修正しました
- [FIX] IPv6 のみで正常に接続できない場合がある問題を修正しました
- [FIX] クライアントから `"type": "candidate"` を送ることができる回数を 20 から 50 に変更しました
- [FIX] DataChannel におけるエンドポイント障害検出カウンターのリセットタイミングを修正しました
- [FIX] 一部の HTTP API のバリデーションが正常に動作していない問題を修正しました
- [FIX] シグナリングが DataChannel に切り替わったタイミングで WebSocket のアイドルタイムアウトが無制限になるように修正しました
- [FIX] SRTP/SRTCP の暗号が AES-GCM の場合に、長時間配信すると正常に復号できなくなる問題を修正しました
- [FIX] sora.conf の不要なコメントを削除しました


## 2021.1

**リリース**: 2021-06-23
**対応 Chrome**: M91 以降
**対応 Firefox**: 89 以降
**対応 Safari**: 14.1 以降
**対応 Edge**: 91 以降

### 廃止情報

#### role の upstream と downstream を廃止

`role` の `upstream` と `downstream` を廃止しました。

詳細は [role の upstream と downstream を廃止](OBSOLETE.html#a8c580) をご確認ください。

#### allow_client_id_assignment 設定を廃止

接続時や認証成功時に、常に client_id を指定できるようになり、
`sora.conf` の `allow_client_id_assignment` を廃止しました。

詳細は [client_id を指定する設定の廃止](OBSOLETE.html#b2acda) をご確認ください。

#### 旧サイマルキャスト API を廃止

`Sora_20180820.ChangeSimulcastQuality` API を廃止しました。

詳細は [旧サイマルキャスト画質変更 API の廃止](OBSOLETE.html#9e15a8) をご確認ください。

### 互換なしの変更情報

廃止以外の互換性がない機能変更はありません。

### 実験的機能から正式機能へ昇格

- `Sora_20201120.PushChannelByRole` API
- `Sora_20201120.DisconnectChannelByRole` API

### ハイライト

- スポットライト機能に rid 指定機能を追加しました
- スポットライト機能に遅延フォーカス機能を追加しました
- スポットライト機能に自動アンフォーカス機能を追加しました
- スポットライト機能にフォーカスなしの音声配信機能を追加しました
- シグナリングを WebSocket から DataChannel へ切り替える機能を追加しました
- DataChannel 経由のシグナリング利用時に WebSocket の切断を無視する機能を追加しました
- より少ない CPU リソースでより多くの接続を処理できるようになりました

### 変更履歴

- [UPDATE] デモ機能で利用している sora-demo を 2021.1 にアップデートしました
- [UPDATE] より少ない CPU リソースで多くの接続を処理できるようになりました
- [ADD] TURN-TCP 利用時の [Proxy Protocol v1](https://www.haproxy.com/blog/haproxy/proxy-protocol/) へ対応しました- これに伴い [TURN-TLS、TURN-TCP、シグナリングで 443 番ポートを使用する](PRODUCTION.html#14258d) の内容が Sora 2021.1 向けに変更されています
  - nginx の変更はしなくても動作しますが、変更をお勧めします
- [ADD] シグナリング `"type": "offer"` 時に配信で有効になっている `audio` または `video` の `mid` を含めるようにしました- 例: `"type": "offer", "mid": {"audio": "audio_lFaJYL", "video": "video_lMjsoq"}`
- [ADD] `"type": "udpate"` の代わりに `"type": "re-offer"` を送れるように、 `sora.conf` に `use_re_offer` を追加しました- デフォルトは `false` です
  - この設定は 2021 年 12 月リリースの Sora にてデフォルト `true` に変更されます
  - この設定は 2022 年 6 月リリースの Sora にて廃止され、常に `"type": "re-offer"` が送られるようになります
- [ADD] シグナリング通知メタデータの利用時に、 `metadata_list` の代わりに `data` を送れるように、 `sora.conf` に `unuse_metadata_list` を追加しました- デフォルトは `false` です
  - この設定は 2021 年 12 月リリースの Sora にてデフォルト `true` に変更されます
  - この設定は 2022 年 6 月リリースの Sora にて廃止され、常に `data` が送られるようになります
- [FIX] 録画機能の利用時で映像が送られてこない際に WebM の PixelWidth / PixelHeight が 0 になる問題を修正しました
- [FIX] 不安定な回線や音声パケットが送られてこなくなる場合にクライアント側でリップシンクが正常に行われず、音声と映像がずれてしまう問題を修正しました
- [FIX] 音声クロックレートが 48000 Hz 固定になってしまう問題を修正しました
- [FIX] スポットライトレガシーで recvonly が利用できてしまう問題を修正しました
- [FIX] TURN-TCP で問題があった際に、シグナリングを切断しない限り接続が残り続ける問題を修正しました

#### 統計機能

- [ADD] RTP ヘッダー拡張の統計情報を追加しました
- [ADD] サイマルキャストの rid 単位の RTP 統計情報を追加しました
- [ADD] サイマルキャストの rid 単位の RTP ヘッダー拡張統計情報を追加しました
- [ADD] RTCP 統計情報を `rtcp` に移動しました- 2021 年 12 月のリリースにて `rtp` から RTCP 関連の統計情報を削除します

#### スポットライト機能

**実験的機能**

- [CHANGE] デフォルトの `r0` の `maxFramerate` を `1.0` から `5.0` に変更しました

#### スポットライト機能: rid 指定

**実験的機能**

スポットライト利用時にフォーカス、アンフォーカスそれぞれで受信する映像を接続ごとに指定できるようになりました。
これによりモバイル端末や回線が不安定な場合は映像を一切受信しないなどの設定ができます。

- [ADD] アンフォーカス時に受信する rid を指定できるように、 `sora.conf` に [default_spotlight_unfocus_rid](SORA_CONF.html#a7cd9b) を追加しました- デフォルトは `r0`
  - `none`, `r0`, `r1`, `r2` を指定可能
- [ADD] フォーカス時に受信する rid を指定できるように、 `sora.conf` に [default_spotlight_focus_rid](SORA_CONF.html#c71c97) を追加しました- デフォルトは `r1`
  - `none`, `r0`, `r1`, `r2` を指定可能
- [ADD] アンフォーカス時に受信する rid を指定できるように、シグナリング `"type": "connect"` に `spotlight_unfocus_rid` を追加しました- デフォルトは `sora.conf` の [default_spotlight_unfocus_rid](SORA_CONF.html#a7cd9b) の値が採用されます
  - `none`, `r0`, `r1`, `r2` を指定可能
- [ADD] フォーカス時に受信する rid を指定できるように、シグナリング `"type": "connect"` に `spotlight_focus_rid` を追加しました- デフォルトは `sora.conf` の [default_spotlight_focus_rid](SORA_CONF.html#c71c97) の値が採用されます
  - `none`, `r0`, `r1`, `r2` を指定可能
- [ADD] アンフォーカス時に受信する rid を指定できるように、認証成功時の払い出しに、 `spotlight_unfocus_rid` を追加しました- デフォルトは `sora.conf` の [default_spotlight_unfocus_rid](SORA_CONF.html#a7cd9b) の値が採用されます
  - `"type": "connect"` 時に、指定された `spotlight_unfocus_rid` を上書きできます
  - `none`, `r0`, `r1`, `r2` を指定可能
- [ADD] フォーカス時に受信する rid を指定できるように、認証成功時の払い出しに `spotlight_focus_rid` を追加しました- デフォルトは `sora.conf` の [default_spotlight_focus_rid](SORA_CONF.html#c71c97) の値が採用されます
  - `"type": "connect"` 時に、指定された `spotlight_focus_rid` を上書きできます
  - `none`, `r0`, `r1`, `r2` を指定可能

#### スポットライト機能: 遅延フォーカス

**実験的機能**

スポットライト利用時に、ちょっとした物音やあいづちではすぐにフォーカスされないように、フォーカスを遅延させる機能を追加しました。
この機能によりサーバーからクライアントへのパケット流量を減らすことができるようになりました。

- [ADD] アンフォーカス時にフォーカスを遅延させるかどうかを指定できるように、 `sora.conf` に [sora_conf-default_spotlight_delayed_focus](SPOTLIGHT.html#da30b6) を追加しました- デフォルトは `true`
- [ADD] アンフォーカス時にフォーカスを遅延させる時間を指定できるように、 `sora.conf` に [sora_conf-default_spotlight_delayed_focus_interval](SPOTLIGHT.html#a5df3b) を追加しました- デフォルトは `2000 ms`

#### スポットライト機能: フォーカスなしの音声配信

**実験的機能**

スポットライト利用時に、他の人にフォーカスが移った場合でも音声を配信し続ける機能を追加しました。
この機能によりスポットライトの数が少ない場合でも、他の人がフォーカスされたことにより音声が送られなくなる、といったことがなくなりました。

- [ADD] フォーカスなしでも音声を配信するかどうかを指定できるように、 `sora.conf` に [sora_conf-default_spotlight_unfocus_audio](SPOTLIGHT.html#3bd7f7) を追加しました- デフォルトは `true`
- [ADD] フォーカスなしでも音声を配信する上限レートを指定できるように、 `sora.conf` に [sora_conf-default_spotlight_unfocus_audio_rate_limit](SPOTLIGHT.html#27c5ad) を追加しました- デフォルトは `2`
  - 単位は `1 音声ストリーム = 50 packets / s` です

#### スポットライト機能: 自動アンフォーカス機能

**実験的機能**

スポットライト利用時に、一定時間音声が配信されていない場合はアンフォーカスする機能を追加しました。
この機能によりサーバーからクライアントへのパケット流量を減らすことができるようになりました。

- [ADD] 音がない場合に自動でアンフォーカスするかどうかを指定できるように、 `sora.conf` に [sora_conf-default_spotlight_auto_unfocus](SPOTLIGHT.html#d57acb) を追加しました- デフォルトは `true`
- [ADD] 自動でアンフォーカスする無音時間を指定できるように、 `sora.conf` に [sora_conf-default_spotlight_auto_unfocus_interval](SPOTLIGHT.html#fcf07a) を追加しました- デフォルトは `10 s`
  - 1 ms 以上、30 s 以下
  - API でフォーカスが固定されている場合は自動アンフォーカスの対象外になります

#### DataChannel 機能: シグナリングの WebSocket から DataChannel への切り替え機能

**実験的機能**

> **注釈**
>
> DataChannel は TURN を利用するため UDP が通らない場合でも問題なく繋がります。

> **重要**
>
> DataChannel 機能を利用する場合は Sora JavaScript SDK 2021.1 以降が必要になります

シグナリングやシグナリング通知、プッシュ通知などで利用している WebSocket から DataChannel へ切り替えます。

**ただし WebSocket は切断判定に利用するため、Sora から切断することはありません** 。

- [ADD] `sora.conf` に [default_data_channel_signaling](SORA_CONF.html#adceef) を追加しました- デフォルトは `false` です
- [ADD] シグナリング `"type": "connect"` で `data_channel_signaling: boolean` を指定できるようにしました- デフォルトは `sora.conf` の [default_data_channel_signaling](SORA_CONF.html#adceef) に設定された値です
- [ADD] 認証成功時の払い出しで `data_channel_signaling: boolean` を指定できるようにしました- デフォルトは `sora.conf` の [default_data_channel_signaling](SORA_CONF.html#adceef) に設定された値です
  - `"type": "connect"` 時に、指定された `data_channel_signaling` を上書きできます
- [ADD] シグナリング `"type": "offer"` 時に `data_channel_signaling: boolean` を払い出すようにしました- この払い出しは data_channel_signaling が true の時のみ有効です
- [ADD] WebSocket から DataChannel へ切り替わった場合は `"type": "switched"` が WebSocket 経由で送られるようにしました- `"type": "switched"` を送ったタイミングからWebSocket 経由の `"type": "ping"` の間隔が 5 秒から 30 秒へ変更されます
  - `"type": "switched"` を送ったタイミングからWebSocket 経由の `"type": "pong"` を確認しなくなります

以下の機能が DataChannel に切り替わります。

- シグナリング- DataChannel の `label` は `signaling` です
  - 以下が利用できるメッセージタイプです- `"type": "re-offer"`
    - `"type": "re-answer"`
    - `"type": "disconnect"`
- シグナリング通知- DataChannel の `label` は `notify` です
  - 以下が利用できるメッセージタイプです- `"type": "notify"`
- プッシュ通知- DataChannel の `label` は `push` です
  - 以下が利用できるメッセージタイプです- `"type": "push"`
- E2EE- DataChannel の `label` は `e2ee` です
- 統計情報- DataChannel の `label` は `stats` です
  - 以下が利用できるメッセージタイプです- `"type": "req-stats"`
    - `"type": "stats"`

#### DataChannel 機能: WebSocket の切断を無視する機能

**実験的機能**

> **重要**
>
> WebSocket の切断を切断判定に利用しない場合、 DataChannel におけるエンドポイント障害検出が切断の判断に利用されます。
> この判断は `sora.conf` の `dcsctp_association_max_retrans` の値に依存します。

- [ADD] `sora.conf` に [default_ignore_disconnect_websocket](SORA_CONF.html#58fe04) を追加しました- デフォルトは `false` です
  - この値を `true` にした場合、 DataChannel 経由でのシグナリング有効時に WebSocket を切断しても、Sora はクライアントの切断と見なさずに接続が継続します
- [ADD] `"type": "connect"` 時に `ignore_disconnect_websocket: boolean` を指定できるようにしました- デフォルトは `sora.conf` に設定された値です
  - この値を `true` にした場合、 DataChannel 経由でのシグナリング有効時に WebSocket を切断しても、Sora はクライアントの切断と見なさずに接続が継続します
- [ADD] 認証成功時の払い出しに `ignore_disconnect_websocket: boolean` を指定できるようにしました- デフォルトは `sora.conf` に設定された値です
  - `"type": "connect"` 時に、指定された `ignore_disconnect_websocket` を上書きできます
  - この値を `true` にした場合、 DataChannel 経由でのシグナリング有効時に WebSocket を切断しても、Sora はクライアントの切断と見なさずに接続が継続します
- [ADD] `"type": "offer"` 時に `data_channel_signaling` が `true` の場合 `ignore_disconnect_websocket: boolean` を払い出すようにしました

#### DataChannel 機能: メッセージの圧縮機能

**実験的機能**

DataChannel で送受信するメッセージを圧縮して送受信できる機能です。

`"type": "offer"` 時に送られてくる `data_channels: [{"label": "signaling", "compress": true}, ...]` のように compress が true になっている場合は圧縮して送る必要があります。

- [ADD] `"type": "offer"` 時に DataChannel の情報を送るようにしました- `data_channels: [{"label": "<label>", "compress": boolean}, ...]` の形式で送られてきます
  - DataChannel を有効にしていない場合は `data_channels` キーは含まれません
  - `compress` が `true` の場合、 DataChannel 経由でのメッセージを `zlib/deflate` で圧縮/展開する必要があります

#### DataChannel 機能: クライアント統計情報の要求

**実験的機能**

DataChannel 経由でのシグナリングが有効になると、統計情報を `"type": "pong"` に入れて返すのではなく、
サーバーから `"type": "req-stats"` が送られてきたら、 `"type": "stats", "reports": [...]` で送るという仕組みに切り替わります。

- [ADD] DataChannel 経由でのシグナリング利用時に `label` の `stats` から `"type": "req-stats"` が送られてきます- 送られてくる間隔は `sora.conf` の [data_channel_stats_timer_interval](SORA_CONF.html#217b39) で指定できます
- [ADD] `sora.conf` に [data_channel_stats_timer_interval](SORA_CONF.html#217b39) を追加しました- デフォルトは `5 s` です
  - 最小は `5 s` で最大は `300 s` です

#### DataChannel 機能: サーバー統計情報

**実験的機能**

GetStats* 系 API に DataChannel 関連の Sora 統計情報を追加しました。

- [ADD] `total_dropped_received_data_channel` を追加- `sora.conf` にて [data_channel_packet_loss_simulator_incoming](SORA_CONF.html#a25d40) を `0` ではない値を指定した際に破棄されたパケットの合計数です
- [ADD] `total_dropped_sent_data_channel` を追加- `sora.conf` にて [data_channel_packet_loss_simulator_outgoing](SORA_CONF.html#00e59f) を `0` ではない値を指定した際に破棄されたパケットの合計数です
- [ADD] 項目に `data_channel` を追加しました- `label` 単位の統計情報が確認できます
  - `total_received_data_channel_message`- `label` 単位で受信したメッセージ数の合計
  - `total_received_data_channel_message_byte_size`- `label` 単位で受信したメッセージのバイト数の合計
  - `total_sent_data_channel_message`- `label` 単位で送信したメッセージの数の合計
  - `total_sent_data_channel_message_byte_size`- `label` 単位で送信したメッセージのバイト数の合計
- [ADD] 項目に `sctp` を追加しました- `total_received_invalid_sctp`
  - `total_received_sctp`
  - `total_received_sctp_byte_size`
  - `total_received_sctp_chunk_abort`
  - `total_received_sctp_chunk_asconf`
  - `total_received_sctp_chunk_asconf_ack`
  - `total_received_sctp_chunk_auth`
  - `total_received_sctp_chunk_cookie_ack`
  - `total_received_sctp_chunk_cookie_echo`
  - `total_received_sctp_chunk_cwr`
  - `total_received_sctp_chunk_data`
  - `total_received_sctp_chunk_ecne`
  - `total_received_sctp_chunk_error`
  - `total_received_sctp_chunk_forward_tsn`
  - `total_received_sctp_chunk_heartbeat`
  - `total_received_sctp_chunk_heartbeat_ack`
  - `total_received_sctp_chunk_i_data`
  - `total_received_sctp_chunk_i_forward_tsn`
  - `total_received_sctp_chunk_init`
  - `total_received_sctp_chunk_init_ack`
  - `total_received_sctp_chunk_pad`
  - `total_received_sctp_chunk_reconfig`
  - `total_received_sctp_chunk_sack`
  - `total_received_sctp_chunk_shutdown`
  - `total_received_sctp_chunk_shutdown_ack`
  - `total_received_sctp_chunk_shutdown_complete`
  - `total_received_sctp_chunk_unknown`
  - `total_received_unknown_sctp`
  - `total_sent_sctp`
  - `total_sent_sctp_byte_size`
  - `total_sent_sctp_chunk_abort`
  - `total_sent_sctp_chunk_asconf`
  - `total_sent_sctp_chunk_asconf_ack`
  - `total_sent_sctp_chunk_auth`
  - `total_sent_sctp_chunk_cookie_ack`
  - `total_sent_sctp_chunk_cookie_echo`
  - `total_sent_sctp_chunk_cwr`
  - `total_sent_sctp_chunk_data`
  - `total_sent_sctp_chunk_ecne`
  - `total_sent_sctp_chunk_error`
  - `total_sent_sctp_chunk_forward_tsn`
  - `total_sent_sctp_chunk_heartbeat`
  - `total_sent_sctp_chunk_heartbeat_ack`
  - `total_sent_sctp_chunk_i_data`
  - `total_sent_sctp_chunk_i_forward_tsn`
  - `total_sent_sctp_chunk_init`
  - `total_sent_sctp_chunk_init_ack`
  - `total_sent_sctp_chunk_pad`
  - `total_sent_sctp_chunk_reconfig`
  - `total_sent_sctp_chunk_sack`
  - `total_sent_sctp_chunk_shutdown`
  - `total_sent_sctp_chunk_shutdown_ack`
  - `total_sent_sctp_chunk_shutdown_complete`
  - `total_sent_sctp_chunk_unknown`

#### DataChannel 機能: 設定

**実験的機能**

詳細は [DataChannel シグナリング機能](DATA_CHANNEL_SIGNALING.html) をご確認ください。

- [ADD] `sora.conf` に `dcsctp_association_max_retrans` を追加しました- DataChannel で利用している SCTP プロトコルのエンドポイント障害検出の最大再送値です
  - デフォルトは `10` です
  - 最小は `1` で最大は `128` です
- [ADD] `sora.conf` に `dcsctp_heartbeat_interval` を追加しました- DataChannel で利用している SCTP プロトコルのハートビートを送る間隔です
  - デフォルトは `30 s` です
  - 最小は `0 s` で最大は `120 s` です
  - `0 s` に設定した場合は SCTP レイヤーでのハートビートを送りません
- [ADD] `sora.conf` に [data_channel_packet_loss_simulator_incoming](SORA_CONF.html#a25d40) を追加しました- デフォルトは `0` で無効です
  - Sora が受信する DataChannel のメッセージを、指定した割合で破棄します
- [ADD] `sora.conf` に [data_channel_packet_loss_simulator_outgoing](SORA_CONF.html#00e59f) を追加しました- デフォルトは `0` で無効です
  - Sora が送信する DataChannel のメッセージを、指定した割合で破棄します

#### RTP ヘッダー拡張機能

**実験的機能**

RTP ヘッダー拡張の利用を指定できるようにしました。

- [ADD] `sora.conf` に RTP ヘッダー拡張 `urn:3gpp:video-orientation` を有効にする設定 [rtp_hdrext_video_orientation](SORA_CONF.html#35c304) を追加しました- デフォルトは `false`
- [ADD] `sora.conf` に RTP ヘッダー拡張 `http://www.webrtc.org/experiments/rtp-hdrext/video-content-type` を有効にする設定 [rtp_hdrext_video_content_type](SORA_CONF.html#78e8b8) を追加しました- デフォルトは `false`
- [ADD] `sora.conf` に RTP ヘッダー拡張 `http://www.webrtc.org/experiments/rtp-hdrext/video-timing` を有効にする設定 [rtp_hdrext_video_timing](SORA_CONF.html#a79a16) を追加しました- デフォルトは `false`
- [ADD] `sora.conf` に RTP ヘッダー拡張 `http://www.webrtc.org/experiments/rtp-hdrext/playout-delay` を有効にする設定 [rtp_hdrext_playout_delay](SORA_CONF.html#d34a4b) を追加しました- デフォルトは `false`
- [ADD] `sora.conf` に RTP ヘッダー拡張 `http://www.webrtc.org/experiments/rtp-hdrext/color-space` を有効にする設定 [rtp_hdrext_color_space](SORA_CONF.html#0f7ca8) を追加しました- デフォルトは `false`
- [ADD] `sora.conf` に RTP ヘッダー拡張 `urn:ietf:params:rtp-hdrext:sdes:mid` を有効にする設定 [rtp_hdrext_sdes_mid](SORA_CONF.html#ffb59f) を追加しました- デフォルトは `false`


## 2020.3.5

**リリース**: 2021-03-12
**対応 Chrome**: M89 以降
**対応 Firefox**: 86 以降
**対応 Safari**: 14.0 以降
**対応 Edge**: 89 以降

### 変更履歴

- [UPDATE] デモ機能のバージョンを 2020.6.2 にアップデートしました- サイマルキャストの利用可能判定処理を改善した Sora JavaScript SDK 2020.6.2 にアップデートしています
- [FIX] ネットワークが不安定な場合に、リップシンクが正常に動作しない問題を暫定的に修正しました- 正式な対応は今後リリース予定です
- [FIX] サイマルキャスト利用時に複数の SSRC が r0 と判断されてしまう問題を修正しました
- [FIX] サイマルキャスト利用時に複数の SSRC に対する rid が重複した時に WARNING ログを出力するようにしました
- [FIX] サイマルキャスト利用時に、ストリームの切り替わりでブロックノイズが出る問題を修正しました
- [FIX] 映像の切り替えが発生した際に映像が乱れる問題を修正しました
- [FIX] VP8 サイマルキャストで Temporal Scalability が存在しない場合に、視聴側が切断される問題を修正しました
- [FIX] 実験的機能である opus_params が正常に利用できなくなっていた問題を修正しました


## 2020.3.3

**リリース**: 2021-02-03
**対応 Chrome**: M88 以降
**対応 Firefox**: 85 以降
**対応 Safari**: 14.0 以降
**対応 Edge**: 88 以降

- [FIX] ライセンスファイルの接続上限数の半分を超えた時点で、接続数の超過エラーを示す EXCEED-MAX-CONNECTIONS が発生する問題を修正しました- バージョン 2020.3 / 2020.3.1 / 2020.3.2 がこの問題の影響を受けます


## 2020.3.2

**リリース**: 2021-01-19
**対応 Chrome**: M87 以降
**対応 Firefox**: 84 以降
**対応 Safari**: 14.0 以降
**対応 Edge**: 87 以降

### 変更履歴

- [FIX] マルチストリーム機能利用時に、短い間に複数の接続・切断が発生した場合に、Sora から `"type": "update"` が連続で送られてしまう問題を修正しました
- [FIX] スポットライト機能のシグナリング通知 `spotlight.focused` と `spotlight.unfocused` に新しく `spotlight_number` を追加しました- この追加により ChangeSpotlightNumber API を実行した後に参加者が現時点でのスポットライト数を確認することができない問題を解決しています


## 2020.3.1

**リリース**: 2020-12-23
**対応 Chrome**: M87 以降
**対応 Firefox**: 84 以降
**対応 Safari**: 14.0 以降
**対応 Edge**: 87 以降

### 変更履歴

- [FIX] スポットライト機能利用時に音声のみで接続できない問題を修正しました
- [FIX] サイマルキャスト利用時に映像を無効にしている場合に `simulcast_rid` を指定してもデフォルトの値が採用されてしまう問題を修正しました
- [FIX] サイマルキャスト機能やスポットライト機能利用時に `RequestRtpStream API` を利用すると、新規接続の `rid` が固定されてしまう問題を修正しました
- [FIX] サイマルキャスト機能やスポットライト機能利用時に `ResetRtpStream API` を利用すると、新規接続の `rid` が固定されてしまう問題を修正しました
- [FIX] `ListPauseRtpStreams API` の戻り値を `recv_connection_id` と `send_connection_id` に修正しました


## 2020.3

**リリース**: 2020-12-16
**対応 Chrome**: M87 以降
**対応 Firefox**: 83 以降
**対応 Safari**: 14.0 以降
**対応 Edge**: 87 以降

### 互換なしの変更情報

**変更点の不明点についてはサポートまでお問い合わせください**

移行についての詳細は `2020.2.x から 2020.3.x` をご確認ください。

- `bin/sora start` を廃止しました、今後は `bin/sora daemon` をお使いください- `systemd` を利用していて `bin/sora foreground` を利用されている方に影響はありません
- 録画ディレクトリ構成を変更しました- archive/ 以下にすべて生成するのではなくレコーディング ID 単位でディレクトリを生成するようになりました
- レコーディング ID を明示的にしました- StartRecording API の戻り値の `id` を `recording_id` に変更しました
  - recording.report イベントウェブフックの `id` を `recording_id` に変更しました
  - archive.available イベントウェブフックの `data` の中に `recording_id` を追加しました
- `sora.conf` にて時間を指定する設定項目で単位指定を必須にしました- 単位が必要な値を指定する場合は `30 s` や `2000 ms` といった単位を指定する必要があります
  - 数値と単位の間にはスペースを入れてください
  - 例: `webhook_response_timeout = 5 s`
  - 例: `default_forwarding_pli_interval = 30000 ms`
  - 例: `connection_created_wait_timeout = 30 s`
- サイマルキャスト機能の `quality` 指定をすべて `rid` に変更しました
- `sora.conf` の `allow_client_id_assignment` をデフォルト `true` に変更しました
- `sora.conf` の `allow_client_id_assignment` を `true` にした際にクライアントが `client_id` を含めない場合、認証ウェブフックに `client_id` が含まれないよう変更しました- いままでは `client_id` に `null` が入っていました
- `sora.conf` の `spotlight_legacy` をデフォルト `false` にしました- スポットライトレガシーを利用したい場合は `sora.conf` にて `spotlight_legacy = true` を設定してください
- 実験的機能として提供していた `ChangeSimulcastQuality API` を非推奨にしました- `RequestRtpStream API` を利用してください
- 実験的機能として提供していた `RequestSpotlightQuality API` を廃止しました- `RequestRtpStream API` を利用してください
- 実験的機能として提供していた `ResetSpotlightQuality API` を廃止しました- `ResetRtpStream API` を利用してください
- `sora.conf` の `generic_nack_cache_size_msec` を廃止しました

### ハイライト

- Red Hat Enterprise Linux 8 向けパッケージを追加しました
- サイマルキャスト機能が正式版になりました
- サイマルキャストのエンコーディング設定がカスタマイズ可能になりました
- サイマルキャスト利用時の録画が可能になりました
- サイマルキャスト利用時の転送が可能になりました
- ウェブフックにベーシック認証機能を追加しました
- 実験的機能として録画ファイル分割出力機能を追加しました
- 実験的機能としてシグナリング通知メタデータ拡張機能を追加しました
- 実験的機能として E2EE (End to End Encryption) 機能を追加しました
- 実験的機能として認証ウェブフックログ機能を追加しました

### 変更履歴

#### Red Hat Enterprise Linux 8 対応

CentOS 8 のサポートが 2021 年 12 月に終了することが発表されました。
それにともない時雨堂では Red Hat Enterprise Linux 8 向けのパッケージを用意しました。

- [ADD] Red Hat Enterprise Linux 8 向けパッケージを追加しました

#### サイマルキャスト機能

- [CHANGE] `quality` の指定をすべて `rid` に変更しました- rid とはサイマルキャストのストリームそれぞれに付いている id です
  - rid は r0 / r1 / r2 があります
  - rid には優先度があり、数値が少ないほど優先されて配信されます
  - r0 は必ず配信されますが、回線が不安定になったりした場合は r2 -> r1 の順番で配信が停止していきます
- [ADD] 実験的機能として rid をリクエストできる `RequestRtpStream API` を追加しました
- [ADD] 実験的機能として rid をリセットできる `ResetRtpStream API` を追加しました
- [FIX] 視聴者が受信するストリームの rid 変更後に配信側を再接続した場合に状態が不整合になる問題を修正しました- マルチストリームが無効な状態でのみ発生していた問題です

#### サイマルキャストエンコーディング設定のカスタマイズ機能

- [ADD] `sora.conf` に `simulcast_encodings_file` を追加しました- `simulcast_encodings_file = etc/simulcast_encodings.json` といったかたちで JSON ファイルを指定可能になります
  - 詳細は `映像のエンコーディングパラメータのカスタマイズ` をご確認ください
- [ADD] 認証成功時の払い出しに `simulcast_encodings` を追加しました- 詳細は [simulcast_encodings の払い出し](AUTH_WEBHOOK_RETURN.html#eebbba) をご確認ください

#### サイマルキャスト録画機能

- [ADD] サイマルキャストで録画機能が利用可能になりました- 配信されている **優先度が一番低い映像** を録画します- r0 / r1 / r2 の 3 本が配信されていれば r2 が録画されます
    - 優先度が低い映像については [映像の優先度](SIMULCAST.html#36c708) をご確認ください

#### サイマルキャスト転送機能

- [ADD] サイマルキャストで転送機能が利用可能になりました
- [ADD] `sora.conf` に `forwarding_simulcast` を追加しました- `all` と `single` が指定できます- `all` は配信されているすべてのストリームが転送されます
    - `single` は配信されている優先度が低いストリームが転送されます- 優先度が低い映像については [映像の優先度](SIMULCAST.html#36c708) をご確認ください

#### スポットライト機能

- [FIX] 認証ウェブフック通知に spotlight / spotlight_number を追加しました- `sora.conf` にて `spotlight_legacy = false` の場合に含まれます

#### スポットライトのサイマルキャストエンコーディング設定カスタマイズ機能

- [ADD] `sora.conf` に `spotlight_encodings_file` を追加しました- `spotlight_encodings_file = etc/spotlight_encodings.json` といったかたちで JSON ファイルを指定可能になります
  - 設定方法は `simulcast_encodings_file` と同様ですが `spotlight` 時のみ利用されます
  - 詳細は `スポットライト利用時の映像のエンコーディングパラメータのカスタマイズ` をご確認ください
- [ADD] 認証成功時の払い出しに `spotlight_encodings` を追加しました- 詳細は [spotlight_encodings の払い出し](AUTH_WEBHOOK_RETURN.html#005523) をご確認ください

#### ウェブフックベーシック認証機能

ウェブフックを通知する際にベーシック認証を利用できるようになりました。

- [ADD] `sora.conf` にウェブフックのベーシック認証を有効にする `webhook_basic_authn` を追加しました- デフォルトは `false` です
- [ADD] `sora.conf` にウェブフックのベーシック認証に利用するユーザー ID を指定する `webhook_basic_authn_user_id` を追加しました
- [ADD] `sora.conf` にウェブフックのベーシック認証に利用するパスワードを指定する `webhook_basic_authn_password` を追加しました

#### ウェブフックを安全でない通信でも利用できる機能

ウェブフックを HTTPS で利用する際に証明書のチェックを行わなくできます。自己署名証明書などが利用できるようになりました。

- [ADD] `sora.conf` にウェブフックの安全でない通信を許可する `webhook_insecure` を追加しました- デフォルトは `false` です

#### 認証ウェブフック機能

- [CHANGE] `sora.conf` の `allow_client_id_assignment` を `true` にした際、クライアントが `client_id` を指定しない場合、認証ウェブフックに `client_id` を含まないよう変更しました- いままでは `client_id` に `null` が入っていました

#### イベントウェブフック機能

- [CHANGE] イベントウェブフック `connection.*` の `channel_upstream_connections` を非推奨にしました- 2021 年 6 月廃止予定です
- [CHANGE] イベントウェブフック `connection.*` の `channel_downstream_connections` を非推奨にしました- 2021 年 6 月廃止予定です
- [ADD] イベントウェブフック `connection.*` に `simulcast: boolean` と `spotlight: boolean` の項目を追加しました- `spotlight_legacy` は非対応です
- [ADD] 実験的機能としてイベントウェブフック `connection.*` に `channel_sendrecv_connections` を追加しました- 送受信している接続数
- [ADD] 実験的機能としてイベントウェブフック `connection.*` に `channel_sendonly_connections` を追加しました- 送信のみしている接続数
- [ADD] 実験的機能としてイベントウェブフック `connection.*` に `channel_recvonly_connections` を追加しました- 受信のみしている接続数
- [FIX] WebRTC が確立していなくてもイベントウェブフック connection.updated が発火してしまう問題を修正- `sora.conf` と `connection_created_timeout` を 60 秒以上にしており、パケロスがひどい場合のみ発生していました
- [FIX] イベントウェブフック `connection.destroyed` の `reason` に `Disconnect API` で指定した値以外が入ってくるのを修正しました

#### 録画機能

- [FIX] 録画機能利用時に WebM ヘッダーとイベントウェブフック通知に含まれる解像度が最大解像度にならない問題を修正しました
- [FIX] 録画メタデータファイルのタイムスタンプが WebM の最初および最後のフレームの時刻とずれていた問題を修正しました

#### 録画ディレクトリ構成とファイル名の変更

- [CHANGE] レコーディング ID 単位でディレクトリを生成しその下に録画ファイル、録画メタデータファイル、録画レポートファイルを生成するように変更しました- レコーディング ID とは `StartRecording API` の戻り値に入っている `recording_id` です
- [CHANGE] 録画ファイルの名前を `archive-<connection_id>.webm` に変更しました
- [CHANGE] 録画メタデータファイルの名前を `archive-<connection_id>.json` に変更しました
- [CHANGE] 録画レポートファイルの名前を `report-<recording_id>.json` に変更しました

#### 録画ファイル分割出力機能

**実験的機能**

- [ADD] `StartRecording` に分割録画間隔を指定する `split_duration` を追加しました- 指定は秒で行い、最大 86400 秒 (24 時間) まで指定できます- 3600 秒を指定する例
    - `{"split_duration": 3600}`
  - `split_duration` を指定すると今までの録画終了時に出力されるファイルとは別に指定した時間間隔で録画ファイルを出力します
  - ファイルは `archive-<Connection-ID>_0001.webm` として出力されます
  - メタデータファイルは `archive-<Connection-ID>_0001.json` として出力されます
  - 連番は `0001` 開始で `9999` までいったら `10000` となりそのあとは `10001` と続きます
- [ADD] `StartRecording` に分割録画のみを行う `split_only` を追加しました- この指定をする場合はかならず `split_duration` を指定し、 `expire_time` を `0` に指定する必要があります- `{"split_duration": 180, "split_only": true, "expire_time": 0}`
  - この指定を有効にした場合はイベントウェブフックの `recording.report` を通知しません
  - この指定を有効にした場合は録画終了時にファイル出力を行いません
- [ADD] 録画ファイル分割出力用の `archive.split` イベントウェブフックを追加しました- このウェブフックは分割録画がファイルが出力された際に通知します
  - 詳細は archive.split をご確認ください
- [ADD] 録画ファイル分割出力用の `archive.end` イベントウェブフックを追加しました- このウェブフックは分割録画が終了した際に通知します
  - 詳細は archive.end をご確認ください

#### レコーディング ID の明示化

- [CHANGE] `StartRecording API` の戻り値の `id` を `recording_id` に変更しました
- [CHANGE] `recording.report` イベントウェブフックの `data` の中の `id` を削除しました
- [CHANGE] `recording.report` イベントウェブフックの `data` の中に `recording_id` を追加しました
- [CHANGE] `archive.available` イベントウェブフックの `data` の中の `id` を削除しました
- [ADD] `archive.available` イベントウェブフックの `data` の中に `recording_id` を追加しました
- [ADD] `archive.failed` イベントウェブフックの `data` の中に `recording_id` を追加しました

#### デモ機能

- [UPDATE] 組み込みのデモ機能のバージョンを 2020.4.0 にアップデートしました

#### sora.conf 設定

- [CHANGE] `sora.conf` の `allow_client_id_assignment` をデフォルト `true` に変更しました
- [CHANGE] `sora.conf` の `generic_nack_cache_size_msec` を廃止しました- 内部的な設定のため非公開設定としました
- [CHANGE] `sora.conf` の `spotlight_legacy` のデフォルトを `false` にしました- スポットライトレガシーを利用したい場合は `sora.conf` にて `spotlight_legacy = true` を設定してください
- [CHANGE] `sora.conf` から `turn_fqdn` の記載を削除しました- 設定が非推奨のため削除しました。設定自体はできます
- [CHANGE] 時間を指定する設定項目の単位を明示的に指定するようにしました- 単位が必要な値を指定する場合は `30 s` や `2000 ms` といった単位を指定する必要があります
  - 数値と単位の間にはスペースを入れてください
  - 単位指定が必要になった設定項目- `webhook_response_timeout`
    - `connection_created_wait_timeout`
    - `default_forwarding_pli_interval`
  - 詳細は [単位指定](SORA_CONF.html#f9c75f) をご確認ください

#### DTLS 再送制御

- [UPDATE] DTLS パケットをしつこく再送するようにしました- `hello` ハンドシェイクはハンドシェイクパケットとタイマーをトリガーにしてしつこく再送します
  - `cipher` ハンドシェイクはハンドシェイクパケットをトリガーにしつこく再送します

#### スポットライトレガシー機能

- [FIX] スポットライトレガシー利用時に音声のみを指定した場合に受信も音声のみになってしまう問題を修正

#### E2EE (End to End Encryption) 機能

**実験的機能**

- [ADD] シグナリングに E2EE 用のメッセージングルーティング機能を追加しました
- [ADD] 認証ウェブフック時に通知する項目として `e2ee` を追加しました- 型は boolean となります
- [ADD] `sora.conf` に E2EE を利用可能にするかどうかの `e2ee = true` を追加しました- 詳細は `e2ee_true` をご確認ください

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

- [ADD] 接続時に送られてきた `signaling_notify_metadata` は `metadata` 以外に `authn_metadata` としてシグナリング通知時に含めるようにしました
- [ADD] 認証成功時に払い出した `signaling_notify_metadata` は `metadata` 以外に `authz_metadata` としてシグナリング通知時に含めるようにしました
- [ADD] 接続時に送る `signaling_notify_metadata` の最大サイズを指定できる `sora.conf` に `signaling_notify_authn_metadata_max_size` を追加しました- デフォルトは 64512 で、 64 KiB です
  - 0..1048576 (1 MiB) の範囲で指定できます

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

**実験的機能**

- [ADD] `sora.conf` にシグナリング通知メタデータ拡張を有効にする `signaling_notify_metadata_ext` を追加しました- デフォルトは `false` です
  - この設定を有効にした場合、接続時に送った `signaling_notify_metadata` は `authn_metadata` となります- `metadata` は初期値 `{}` となります
  - この設定を有効にした場合、認証成功時に払い出した `signaling_notify_metadata` は `authz_metadata` となります- `metadata` は初期値 `{}` となります
- [ADD] 指定したチャネルのシグナリング通知メタデータ一覧を取得する `ListSignalingNotifyMetadata API` を追加しました
- [ADD] 指定した接続の `metadata` を取得する `GetSignalingNotifyMetadata API` を追加しました
- [ADD] 指定した接続の `metadata` を追加する `PutSignalingNotifyMetadata API` を追加しました
- [ADD] 指定した接続の `metadata` を削除する `DeleteSignalingNotifyMetadata API` を追加しました
- [ADD] 指定した接続の `metadata` のアイテムを追加する `PutSignalingNotifyMetadataItem API` を追加しました
- [ADD] 指定した接続の `metadata` のアイテムを削除する `DeleteSignalingNotifyMetadataItem API` を追加しました

#### 認証ウェブフックログ機能

**実験的機能**

認証ウェブフックのログを出力するように変更しました。リクエストとレスポンスを一つの JSON としてログに書き込みます。

- [ADD] 認証イベントウェブフックのリクエストとレスポンスを `log/auth_webhook.log` として出力するようにしました
- [ADD] `sora.conf` に認証イベントフェブフックのログ出力するかどうかの `auth_webhook_log` を追加しました- デフォルトで有効です

#### 認証成功時での H.264 プロファイルレベルの指定機能

**実験的機能**

H.264 利用時にプロファイル ID を認証成功時の払い出しに指定可能にしました。

- [ADD] 認証払い出し時の `h264_profile_level_id` を指定可能にしました- 文字列で指定することで SDP の払い出しが可能になります
  - この払い出しは `sora.conf` の設定を上書きします

#### 廃止機能

- [CHANGE] `bin/sora start` を廃止しました、今後は `bin/sora daemon` をお使いください- 詳細は [廃止機能](OBSOLETE.html) をご確認ください

#### 新規 API

新しく API を追加しました。既存 API のアップデート版となります。

- [ADD] 新しく `ListConnections API` を追加しました- すべての接続リストが返ってきます
  - 詳しくは [ListConnections](API_SIGNALING.html#d3da2a) API をご確認ください
- [ADD] 新しく `ListChannelConnections API` を追加しました- 指定したチャネルの接続リストが返ってきます
  - 詳しくは [ListChannelConnections](API_SIGNALING.html#d388f3) API をご確認ください

#### 実験的 API

**実験的機能**

- [CHANGE] 実験的機能として提供している `PauseRtpStream API` と `ResumeRtpStream API` のパラメータを変更しました- `connection_id` を `recv_connection_id` に変更しました
  - `stream_id` を `send_connection_id` に変更しました
- [ADD] 実験的機能として `ListChannels API` を追加しました- すべてのチャネルリストが返ってきます
  - 詳しくは [ListChannels](EXPERIMENTAL_API_SIGNALING.html#b27c42) API をご確認ください
- [ADD] 実験的機能として `DisconnectChannelByRole API` を追加しました- 指定したチャネルの指定したロールの接続をすべて切断します
- [ADD] 実験的機能として `PushChannelByRole API` を追加しました- 指定したチャネルの指定したロールの接続にプッシュ通知を送ります
- [FIX] 実験的機能として提供している `ChangeUpstreamVideoBitRate API` の利用時に新規接続が走るとビットレートが戻ってしまう問題を修正しました

#### 非推奨 API

- [CHANGE] 切断用の `DisconnectChannelUpstream API` を非推奨 API としました- 実験的機能として提供している `DisconnectChannelByRole API` を利用してください
  - 2021 年 6 月廃止します
- [CHANGE] 切断用の `DisconnectChannelDownstream API` を非推奨 API としました- 実験的機能として提供している `DisconnectChannelByRole API` を利用してください
  - 2021 年 6 月廃止します
- [CHANGE] プッシュ用の `PushUpstream API` を非推奨 API としました- 実験的機能として提供している `PushChannelByRole API` を利用してください
  - 2021 年 6 月廃止します
- [CHANGE] プッシュ用の `PushDownstream API` を非推奨 API としました- 実験的機能として提供している `PushChannelByRole API` を利用してください
  - 2021 年 6 月廃止します
- [CHANGE] 実験的機能として提供していたサイマルキャスト用の `ChangeSimulcastQuality API` を非推奨 API としました- 実験的機能として提供している `RequestRtpStream API` を利用してください
  - 2021 年 6 月廃止します
- [CHANGE] 実験的機能として提供していたスポットライトレガシー用の `CastAlwaysSpotlight API` を非推奨 API としました- 2021 年 12 月廃止します
- [CHANGE] 実験的機能として提供していたスポットライトレガシー用の `CancelSpotlight API` を非推奨 API としました- 2021 年 12 月廃止します
- [CHANGE] 実験的機能として提供していたスポットライトレガシー用の `CastSpotlight API` を非推奨 API としました- 2021 年 12 月廃止します
- [CHANGE] 実験的機能として提供していたスポットライトレガシー用の `DowngradeSpotlightBitRate API` を非推奨 API としました- 2021 年 12 月廃止します
- [CHANGE] 実験的機能として提供していたスポットライトレガシー用の `ResetSpotlightBitRate API` を非推奨 API としました- 2021 年 12 月廃止します

#### 廃止 API

- [CHANGE] 実験的機能として提供していた `RequestSpotlightQuality API` を廃止しました- 実験的機能として提供している `RequestRtpStream API` を利用してください
- [CHANGE] 実験的機能として提供していた `ResetSpotlightQuality API` を廃止しました- 実験的機能として提供している `ResetRtpStream API` を利用してください


## 2020.2.2

**リリース**: 2020-10-07
**対応 Chrome**: M86
**対応 Firefox**: 81
**対応 Safari**: 14.0
**対応 Edge**: 86

### 変更履歴

- [FIX] Disconnect API や `{"type": "disconnect"}` を利用して切断した際に `SIGNALING-INTERNAL-ERROR` がクライアントに返される問題を修正しました
- [FIX] WebSocket ping フレームが internal.log に出力されてしまう問題を修正しました


## 2020.2.1

**リリース**: 2020-09-23
**対応 Chrome**: M85
**対応 Firefox**: 80
**対応 Safari**: 14.0
**対応 Edge**: 85

### 変更履歴

- [FIX] デモ機能が有効にならない不具合を修正しました


## 2020.2

**リリース**: 2020-09-23
**対応 Chrome**: M85
**対応 Firefox**: 80
**対応 Safari**: 14.0
**対応 Edge**: 85

### 互換なしの変更情報

- 今までのスポットライト機能の呼び名がスポットライトレガシー機能に変更しました- `ignore_spotlight_changed_webhook` を `ignore_spotlight_legacy_changed_webhook` に変更しました
  - `spotlight_auto_downgrade_bit_rate` を `spotlight_legacy_auto_downgrade_bit_rate` に変更しました
  - `spotlight_auto_sharing_video_bit_rate` を `spotlight_legacy_auto_sharing_video_bit_rate` に変更しました
  - スポットライトレガシー機能は 2021 年 12 月まで利用できます

### ハイライト

- デモ機能を 1 から作り直し、オープンソースとして公開しました
- 実験的機能として、新しいスポットライト機能を追加しました- [スポットライト機能](SPOTLIGHT.html)

### 変更履歴

- [FIX] `connection.log` の `remote_stats` が出力されない問題を修正しました

#### 新しいデモ機能

デモ機能を TypeScript / React / Redux を利用して書き直しました。
また、ソースコードを Apache License 2.0 でオープンソースとして公開しました。



- [CHANGE] 今までのスポットライト機能はスポットライトレガシーに変更しました- 今までの `spotlight_sendrecv` は `spotlight_legacy_sendrecv` に変更しました
  - 今までの `spotlight_sendonly` は `spotlight_legacy_sendonly` に変更しました
  - 今までの `spotlight_recvonly` は `spotlight_legacy_recvonly` に変更しました
- [CHANGE] ログとシグナリング通知の項目を別タブに変更しました
- [ADD] 新しいスポットライト機能のデモを追加しました- `spotlight_sendrecv` を追加しました
  - `spotlight_sendonly` を追加しました
  - `spotlight_recvonly` を追加しました
  - `sora.conf` にて `spotlight_legacy = false` にしたときのみ利用できます- デフォルトは `true` です
- [ADD] マイクのミュート機能を追加しました
- [ADD] ビデオのミュート機能を追加しました
- [ADD] フェイク機能を追加しました- Chrome / Edge / Firefox / Safari で利用できます
- [ADD] `autoGainContraol` の設定を追加しました
- [ADD] `noiseSuppression` の設定を追加しました
- [ADD] `echoCancellation` の設定を追加しました
- [ADD] `echoCancellationType` の設定を追加しました- browser と system が指定できます
- [ADD] オーディオボリュームメータを追加しました
- [ADD] コピーURL 機能を追加しました- 現在の設定を URL パラメータに反映した URL をクリップボードに保存します
- [ADD] マルチサイマルキャストでストリーム個別の画質変更ボタンを追加しました
- [ADD] クライアント側の情報を JSON 形式でダウンロードできるボタンを追加しました
- [ADD] デバッグ機能を有効にすることでログ、通知、統計を確認できるようになりました

#### 新しいスポットライト機能

**実験的機能**

今までのスポットライト機能の課題を解決した、
新しいスポットライト機能を実験的機能として追加しました。

- [ADD] `sora.conf` に `spotlight_legacy` を追加しました- 新しいスポットライト機能を使う場合は `sora.conf` にて `spotlight_legacy = false` にする必要があります
- [ADD] `type: connect` 時に `multistream: true` / `simulcast: true` / `spotlight: true` を指定すると新しいスポットライト機能が利用できます
- [ADD] サイマルキャストを利用し 2 つの画質を配信するようにしました- 1/1 解像度の 30 FPS
  - 1/4 解像度の 1 FPS
- [ADD] 直近で発話したクライアントのストリームは 1/1 解像度 30 FPS で、音声ありを受信します
- [ADD] 直近で発話していないクライアントのストリームは 1/4 解像度 1 FPS で、音声なしを受信します
- [ADD] 直近で発話したクライアントのストリームは最大 8 まで受信可能にしました
- [ADD] 指定したストリームにフォーカスを当て続ける `FocusSpotlightFixed` API 追加しました
- [ADD] 指定したストリームにフォーカスを当てる `FocusSpotlight` API を追加しました
- [ADD] 指定したストリームをフォーカスから外す `UnfocusSpotlight` API を追加しました
- [ADD] 指定したチャネルのスポットライト数を変更する `ChangeSpotlightNumber` API を追加しました
- [ADD] 指定したストリームの画質を変更要求する `RequestSpotlightQuality` API を追加しました- 現時点では low / middle しか要求できません
- [ADD] 指定したストリームの画質をリセットする `ResetSpotlightQuality` API を追加しました
- [ADD] フォーカスが当たった場合 `type: spotlight.focused` が発火します- 固定されたかどうかが `fixed` の項目で `true/false` が入ります
  - `signaling_notify` 経由で参加者全員に通知されます
  - `ignore_spotlight_changed_webhook` を `false` にしていた場合は Webhook が通知されます
- [ADD] フォーカスが外れた場合 `type: spotlight.unfocused` が発火します- `signaling_notify` 経由で参加者全員に通知されます
  - `ignore_spotlight_changed_webhook` を `false` にしていた場合は Webhook が通知されます
- [ADD] `sora.conf` に `default_spotlight_number` を追加しました

#### 古いスポットライト機能

**実験的機能**

今までのスポットライト機能を spotlight_legacy に変更しました。

- [CHANGE] `ignore_spotlight_changed_webhook` を `ignore_spotlight_legacy_changed_webhook` に変更しました
- [CHANGE] `spotlight_auto_downgrade_bit_rate` を `spotlight_legacy_auto_downgrade_bit_rate` に変更しました
- [CHANGE] `spotlight_auto_sharing_video_bit_rate` を `spotlight_legacy_auto_sharing_video_bit_rate` に変更しました
- [ADD] `sora.conf` に `spotlight_legacy` を追加しました- デフォルトは `true` です

#### H.264 プロファイルレベルの指定機能

**実験的機能**

H.264 利用時にプロファイル ID が今まは固定でしたが、自由に設定できるようにしました。

- [ADD] sora.conf に `default_h264_profile_level_id` を追加可能にしました

#### 統計レポート API

**実験的機能**

- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API に `total_connection_created` の項目を追加しました
- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API に `total_connection_updated` の項目を追加しました
- [ADD] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API に `total_connection_destroyed` の項目を追加しました
- [FIX] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API の `total_turn_udp_connections` の値が反映されない問題を修正しました
- [FIX] [GetStatsReport](EXPERIMENTAL_API_STATS.html#bbbfca) API の `total_turn_tcp_connections` の値が反映されない問題を修正しました


## 2020.1.1

**リリース**: 2020-08-18
**対応 Chrome**: M84
**対応 Firefox**: 79
**対応 Safari**: 13.1.1
**対応 Edge**: 84

### 互換なしの変更情報

特にありません。

### 変更履歴

- [CHANGE] DTLS 証明書を 1 日 1 回から 1 時間に 1 回更新するようにしました
- [FIX] DTLS に利用する証明書を接続単位で保持するように修正しました
- [FIX] サポート用のログ connection.log の書き込みを非同期に修正しました- ログの書き込みが 5 秒以上かかった場合、 connection.log が書き込まれない問題を解決します
- [FIX] DTLS 証明書の再発行後のタイミングにマルチストリームの再ハンドシェイクが発生した場合、そのチャネルの接続がすべて切断してしまう問題を修正しました- 再発行した証明書の fingerprint をクライアントに送ってしまい、クライアント側が DTLS Alert close_notify を送ってきてしまうため切断されてしまう問題を解決します


## 2020.1

**リリース**: 2020-06-24
**対応 Chrome**: M83
**対応 Firefox**: 77
**対応 Safari**: 13.1.1
**対応 Edge**: 83

### 重要なお知らせ

- Ubuntu 20.04 版を提供開始しました
- Ubuntu 16.04 版は 2021 年 4 月でパッケージ、サポートの提供を終了します
- `bin/sora start` から `bin/sora daemon` に今後切り替わります
- ロールの `upstream` / `downstream` は 2021 年 6 月リリース予定の Sora で利用ができなくなります- 今回追加された新しいロール `sendrecv` / `sendonly` / `recvonly` へ置き換えをお願いします
  - 最新の SDK を利用いただければ特に問題はでません

### 互換なしの変更情報

- バージョン表記を変更しました
- 設定ファイルの形式を変更しました
- コネクション ID のエンコード方式を Hex から [Crockford's Base32](https://www.crockford.com/base32.html) に変更しました
- PCMU のサポートを廃止しました
- デモ機能のファイル名を変更しました
- サイマルキャストで利用する際のロールを `sendrecv` / `sendonly` / `recvonly` のみ利用可能にしました

### ハイライト

- Ubuntu 20.04 に対応しました
- 録画機能を改善しました
- 録画機能を RTCP Sender Report によるリップシンクに対応しました
- 録画の処理を非同期にしました
- ロールに `sendrecv` / `sendonly` / `recvonly` を追加しました
- 切断時に、接続ごとのクライアントとサーバーの統計情報を `connection.log` に出力するようにしました
- 実験的機能として、クライアント側の統計情報を API 経由で確認できるようにしました
- 実験的機能として、Sora からの映像配信を停止/再開する API を追加しました
- 実験的機能として、サイマルキャストの画質をストリーム別に指定できる API を追加しました
- 実験的機能として、AV1 や H.265 に対応しました

### 変更履歴

- [CHANGE] PCMU のサポートを廃止しました
- [CHANGE] 配信側への SDP での SSRC 指定を行わないように変更しました- Chrome の仕様に合わせました
- [CHANGE] UUIDv4 の値を Hex から Base32 に変更しました- [Crockford's Base32](https://www.crockford.com/base32.html) を利用しています
- [ADD] ロールに `sendrecv` / `sendonly` / `recvonly` を追加しました- 今後はこちらのロールをご利用ください
  - `sendrecv` は送受信
  - `sendonly` は送信のみ
  - `recvonly` は受信のみ
- [ADD] RTP 拡張 Generic Frame Descriptor v00 に対応しました
- [ADD] 音声の RTP に対して RTCP-SR/RTCP-RR を対応しました
- [ADD] RTCP-RR の送信間隔を audio と video で独立させました
- [ADD] DTLS アラートのログを `sora.log` で出力するようにしました- DTLS アラート `close notify` のログは出力されません
- [FIX] 音声のみの場合は PLI を送信しないようにしました

#### 設定ファイル

- [ADD] 設定ファイルに `signaling_loopback_address_only` を追加しました- この設定を有効にすることでシグナリングに接続できるのが 127.0.0.1 からのみになります
- [CHANGE] 設定ファイルを etc/sora.conf に変更しました
- [CHANGE] 設定ファイルの必須設定をなくしました- `license_file` は `etc/license.json` がデフォルト値になりました
  - `signaling_port` は `5000` がデフォルト値になりました
  - `api_port` は `3000` がデフォルト値になりました

#### ウェブフック

- [UPDATE] イベントウェブフックのワーカー選択のキーを `connection_id` から `channel_id` に変更しました
- [ADD] 認証ウェブフックに `simulcast` フラグを追加しました

#### ログ

- [ADD] サポート向けに接続の統計情報を出力する `connection.log` を追加しました- リモート統計情報とローカル統計情報を出力します
- [CHANGE] `sora.log` の時刻が UTC で出力されるようになりました
- [CHANGE] `warning.log` / `error.log` を統一し `sora.log` に変更しました

#### TURN

- [ADD] TURN-TCP のみを利用するように指定できる `turn_tcp_only` の設定を追加しました
- [ADD] TURN-TLS のみを利用するように指定できる `turn_tls_only` の設定を追加しました
- [ADD] `turn_tcp_only` と `turn_tls_only` を有効にした場合は接続ごとに `sora.log` にログを出力するようにしました
- [CHANGE] TURN-TCP のデフォルト値を true に変更しました
- [CHANGE] `type: offer` 時の `iceTrasnports: relay` を削除しました- chrome が `iceTransportPolicy` へ対応したためです

#### RTP 転送

- [ADD] RTP 転送 API 実行時に api.log を出力するようにしました
- [FIX] StopForwardingRtp API で `connection_id` が見つからない場合のエラーを修正しました

#### 録画機能

- [UPDATE] RTCP-SR を利用したリップシンク機能を追加しました
- [ADD] 録画完了時の統計機能項目を追加しました- video_reset_no_video_timeout
  - video_reset_pli
  - video_reset_other
  - extract_queue_trimmed
  - final_extract_limit
  - total_video_chunk_postponed_partial
  - total_video_chunk_postponed_queued
  - total_video_chunk_postponed_undefined
  - total_video_force_forward
  - total_audio_sender_report
  - total_video_sender_report
  - total_audio_lip_sync_mode_recv_time
  - total_audio_lip_sync_mode_rtcp_sr
  - total_video_lip_sync_mode_recv_time
  - total_video_lip_sync_mode_rtcp_sr
- [CHANGE] 録画一時ファイルの作成を非同期にしました
- [CHANGE] 録画ファイルが空の場合のログを削除するようにしました
- [FIX] スポットライト機能利用時に録画開始が利用できないよう修正しました

#### デモ機能

- [UPDATE] デモ機能で利用している sora-js-sdk のバージョンを 2020.1 に上げました
- [ADD] デモ機能のページすべてに `<meta name="robots" content="noindex">` を追加しました
- [ADD] デモ機能に AV1 と H.265 を追加しました- クライアントが非対応の場合は動作しません
- [ADD] `multi_simulcast_sendonly.html` を追加しました
- [CHANGE] `pub.html` を `sendonly.html` に変更しました
- [CHANGE] `sub.html` を `recvonly.html` に変更しました
- [CHANGE] `multi_pubsub.html` を `multi_sendrecv.html` に変更しました
- [CHANGE] `multi_pub.html` を `multi_sendonly.html` に変更しました
- [CHANGE] `multi_sub.html` を `multi_recvonly.html` に変更しました
- [CHANGE] `spotlight_pubsub.html` を `spotlight_sendrecv.html` に変更しました
- [CHANGE] `spotlight_sub.html` を `supotlight_recvonly.html` に変更しました
- [CHANGE] `simulcast_pub.html` を `simulcast_sendonly.html` に変更しました
- [CHANGE] `simulcast_sub.html` を `simulcast_recvonly.html` に変更しました
- [CHANGE] `multi_simulcast_pubsub.html` を `multi_simulcast_sendrecv.html` に変更しました
- [CHANGE] `multi_simulcast_sub.html` を `multi_simulcast_recvonly.html` に変更しました

#### 統計機能

- [ADD] GetStatsReport に sora_client の項目を追加しました
- [ADD] 統計 API に TURN 失敗の値を追加しました- total_received_turn_unknown_stun
  - total_received_turn_invalid_stun
  - total_received_unknown_channel_number
  - total_received_expired_channel_number

### 実験的機能

実験的機能を利用する場合はかならずサポートまでご連絡ください。

#### H.265 に対応しました

**実験的機能**

- [ADD] H.265 を利用可能にする設定 `h265` を `sora.conf` に追加しました- デフォルトは `false` です
- [ADD] `type: connect` 時の `video: {video_codec: "H265"}` を指定可能にしました
- [ADD] H.265 のキーフレーム判定に対応しました

#### AV1 に対応しました

**実験的機能**

- [ADD] AV1 を利用可能にする設定 `av1` を `sora.conf` に追加しました- デフォルトは `false` です
- [ADD] `type: connect` 時の `video: {video_codec: "AV1"}` を指定可能にしました
- [ADD] AV1 のキーフレーム判定に対応しました
- [ADD] AV1 の解像度取得に対応対応しました

#### サマルキャストで受信しているストリーム単位で画質を変更する仕組みを追加しました

**実験的機能**

この機能はサイマルキャストでのみ利用できます。

- [ADD] ChangeSimulcastQuality API で特定のストリームの画質の変更を可能にしました- `stream_id` にストリームを配信している接続の `connection_id` を指定します

#### 指定したストリームの映像を停止/再開する API を追加しました

**実験的機能**

この機能はマルチストリームでのみ利用できます。

- [ADD] `signaling_notify_rtp_stream` を `sora.conf` に追加しました- true の場合は Rtp Stream Pause/Resume API 実行時に pause/resume 通知が飛びます
  - 受信を停止/再開した接続、された接続の両方に飛びます
- [ADD] PauseRtpStream API 追加しました- 指定した接続のストリームを停止します
  - `connection_id` にストリームの受信を再開する `connection_id` を指定します
  - `stream_id` にストリームの受信を再開したいストリームを配信している接続の `connection_id` を指定します
- [ADD] ResumeRtpStream API 追加しました- 指定した接続のストリームを再開します
  - `connection_id` にストリームの受信を再開する `connection_id` を指定します
  - `stream_id` にストリームの受信を再開したいストリームを配信している接続の `connection_id` を指定します
- [ADD] ListPauseRtpStreams API 追加しました- 指定したチャネルの停止しているストリーム一覧を返します

#### リモート統計情報を取得する API を追加しました

**実験的機能**

この機能はクライアント側でのみ取得できる統計情報をサーバー経由で取得可能にする仕組みです。

- [ADD] `sora.conf` に `remote_stats: true` を追加- `type: ping` 時に stats: true を有効にします
- [ADD] 認証成功時の払い出しに `remote_stats: boolean` を追加しました
- [ADD] GetAllRemoteStats API を追加しました- すべての接続のリモート統計情報を取得します
- [ADD] GetChannelRemoteStats API を追加しました- 指定したチャネル ID すべての接続のリモート統計情報を取得します
- [ADD] GetConnectionRemoteStats API を追加しました- 指定した接続のリモート統計情報を取得します


## 19.10.9

**リリース**: 2020-04-20
**対応 Chrome**: M81
**対応 Firefox**: 75
**対応 Safari**: 13.1
**対応 Edge**: 81

### 互換なしの変更情報

特にありません

### 変更履歴

- [FIX] 配信が非常に不安定な場合、録画の処理でメモリを多量に消費してしまう問題


## 19.10.8

**リリース**: 2020-02-07
**対応 Chrome**: M80
**対応 Firefox**: 72
**対応 Safari**: 13
**対応 Edge**: 79

### 互換なしの変更情報

特にありません

### 変更履歴

- [FIX] Firefox と特定のネットワークで正常につながらない問題を修正しました- Firefox 側の問題への対応です
- [FIX] Chrome M80 で H.264 の仕組みが変わったことにより録画が正常に動作しない問題を修正しました- Chrome 側の挙動変更への対応です
- [FIX] スポットライトで長時間インアクティブだった場合、再開時にスポットライト枠に表示されない問題を修正しました
- [FIX] マルチストリーム利用時に視聴側から送られてきた キーフレーム要求を正常に処理できていない問題を修正しました
- [FIX] 録画機能利用時に録画ファイルの中で約 22 分に一度音声が最大 20 秒空白になる問題を修正しました


## 19.10.4

**リリース**: 2020-01-28
**対応 Chrome**: M79
**対応 Firefox**: 72
**対応 Safari**: 13
**対応 Edge**: 79

### 互換なしの変更情報

特にありません

### 変更履歴

- [FIX] SDP の RTP 拡張から mid を削除しました- ブラウザ側のバグに対応したものです
- [FIX] イベントウェブフックのタイムスタンプの取得タイミングを修正しました
- [FIX] 接続失敗イベントウェブフックでクラッシュしていた問題を修正しました
- [FIX] マルチストリームで sendonly を利用した際の SDP 関連の処理を修正しました


## 19.10.3

**リリース**: 2019-12-11
**対応 Chrome**: M79
**対応 Firefox**: 71
**対応 Safari**: 13
**対応 Edge Beta**: 79

### 互換なしの変更情報

特にありません

### ハイライト

- HTTP API への接続をループバックのみに限定する `api_loopback_address_only` を sys.config の設定に追加しました

### 変更履歴

- [ADD] HTTP API への接続をループバックのみに限定する `api_loopback_address_only` を sys.config の設定に追加しました- この設定を有効にすることで HTTP API を叩けるのが 127.0.0.1 からのみになります
- [ADD] 録画失敗時のウェブフックに以下に以下の項目を追加しました- audio
  - video
  - start_time
  - stop_time
  - file_path- ファイル自体は生成されません
  - filename- ファイル自体は生成されません
- [ADD] シグナリングログに `type: disconnect` を追加しました- クライアント側から `type: disconnect` が送られてきた場合に出力します
- [ADD] シグナリングログに `type: close` ログを追加しました- close ログはクライアント側から切断された場合に出力します
- [ADD] シグナリングログに `type: closed` ログを追加しました- closed ログはサーバー側から切断された場合に出力します
- [ADD] シグナリングログに `type: error-closed` ログを追加しました- error-closed ログはクライアントが想定外の切断をした場合に出力します
- [ADD] 実験的機能として認証成功時の戻り値で simulcast と simulcast_quality を指定可能にしました- **この機能を利用される場合は必ず事前にサポートまでご連絡ください**
- [ADD] 実験的機能として ListConnections と ListAllConnections API に multistream / simulcast / spotlight のフラグを追加しました- **この機能を利用される場合は必ず事前にサポートまでご連絡ください**
- [ADD] 実験的機能としてマルチストリームに配信のみで参加できる仕組みを追加しました- **この機能を利用される場合は必ず事前にサポートまでご連絡ください**
- [ADD] 実験的機能としてイベントウェブフック通知の HTTP ヘッダーに X-SORA-EVENT-WEBHOOK-TYPE を追加しました- **この機能を利用される場合は必ず事前にサポートまでご連絡ください**
- [ADD] 実験的機能として Opus パラメータに ptime を追加しました- **この機能を利用される場合は必ず事前にサポートまでご連絡ください**
- [FIX] Android のサイマルキャスト配信時に正常に動作しない問題を修正しました
- [FIX] デモ機能のマルチストリームサイマルキャスト視聴のみで初期の画質指定が抜けていたのを追加しました
- [FIX] 録画時に接続の切断と録画終了 API がほぼ同時に実行されるとアーカイブが recording.report に入らない問題を修正しました
- [FIX] 認証成功時に払い出す `ipv4_address` と `ipv6_address` が正常に動作しない問題を修正しました


## 19.10.1

**リリース**: 2019-11-06
**対応 Chrome**: M78
**対応 Firefox**: 70
**対応 Safari**: 13
**対応 Edge Beta**: 79

### 互換なしの変更情報

特にありません

### ハイライト

- TURN の UDP または TCP のどちらを利用しているかがシグナリング通知、およびイベントウェブフックで取得できるようになりました
- マルチストリームの「視聴のみ」で、配信者が存在しない場合でも接続できるようになりました
- マルチストリームの「視聴のみ」で、配信者が存在しなくなった場合でも接続を維持するようになりました

### 変更履歴

- [ADD] シグナリング通知の connection.created / connection.updated / connection.destroyed に turn_transport_type を追加しました- "udp" または "tcp" の文字列が入ります
- [ADD] イベントウェブフックの connection.created / connection.updated / connection.destroyed に turn_transport_type を追加しました- "udp" または "tcp" の文字列が入ります
- [CHANGE] マルチストリームの視聴のみで今までは配信がある必要がありましたが、配信がない場合でも Sora に接続することが可能になりました
- [CHANGE] マルチストリームの視聴のみで配信者が 0 になっても切断しないようにしました
- [FIX] サイマルキャスト対応と非対応のマルチストリームが同じチャネルに参加した際にクラッシュする問題を修正しました
- [FIX] サイマルキャストの視聴時に配信側が通常の配信に切り替わった場合、クラッシュする問題を修正しました
- [FIX] ネットワークの不安定レベル通知機能が音声のみの配信の場合、常に unstable_level 3 を配信するようになっていた問題を修正しました


## 19.10.0

**リリース**: 2019-10-16
**対応 Chrome**: M77
**対応 Firefox**: 69
**対応 Safari**: 13
**対応 Edge Dev**: 79

### 互換なしの変更情報

- PlanB への対応を廃止しました
- サイマルキャスト (Google 独自) への対応を廃止しました

### ハイライト

- CentOS 8.0 に対応しました
- 実験的機能として マルチストリームでサイマルキャスト機能が利用可能になりました

### 変更履歴

- [UPDATE] ChangeSimulcastQuality API をマルチストリームに対応しました
- [UPDATE] ChangeUpstreamVideoBitRate API をマルチストリームに対応しました
- [UPDATE] サイマルキャストを利用した配信者はビットレートシェアリング機能は無効にしました
- [UPDATE] 録画機能で Opus ステレオ音声の録音に対応しました
- [ADD] CentOS 8.0 に対応しました
- [ADD] GetStatsConnection API に視聴側の再送キャッシュヒット率を追加しました- total_generic_nack_cache_hit- 再送要求に正しく応答した回数
  - total_generic_nack_cache_miss- 再送要求に応答できなかった回数
- [ADD] GetStatsConnection API に配信側が不安定になった際、 キーフレーム要求(PLI)を送った回数を追加しました- total_pli_trigger- 再送要求に限界がきてキーフレーム要求を送った回数
- [ADD] GetStatsConnection API に RTP パケロスシミュレーターの統計情報を追加しました- total_dropped_received_rtp- 受信した RTP パケットをパケロスシミュレータで落とした回数
  - total_dropped_sent_rtp- 送信した RTP パケットをパケロスシミュレータで落とした回数
- [ADD] GetStatsConnection API に network_status の unstable_level の値を追加しました- unstable_level
  - 0-3 の値が入ります
- [ADD] 新規接続時に送る PLI の頻度を抑える仕組みを追加しました
- [ADD] 実験的機能としてマルチストリーム機能でサイマルキャスト機能が利用可能になりました- 現時点でサイマルキャスト機能は Chrome でのみ利用できます
  - 詳細は マルチストリームでサイマルキャスト をご確認ください
- [ADD] 設定 default_simulcast_quality を追加しました- sys.config にて指定できます
  - サイマルキャストで `simulcast: true` を選んだときの視聴する画質のデフォルトを指定します
  - デフォルトは "low" です
  - "low" 、 "middle" 、 "high" を指定できます
- [ADD] デモ機能に multi_simulcast_pubsub.html と multi_simulcast_sub.html を追加しました
- [ADD] シグナリング Offer 時に Sora のバージョンを追加しました- `"version": "19.10.0"` の形式です
  - `hide_origin_username` が有効な場合はバージョン情報は送りません
- [ADD] 実験的機能として Opus パラメータをシグナリングで指定できるようになりました- **これらの機能を利用される場合は必ず事前にサポートまでご連絡ください**
  - `{"audio": {"opus_params": {"stereo": false, "useinbandfec": false}}}`
  - clock_rate
  - channels
  - maxplaybackrate
  - stereo
  - sprop_stereo
  - minptime
  - useinbandfec
  - usedtx
- [ADD] 実験的機能として Opus パラメータのデフォルト値を sys.config で指定できるようになりました- **これらの機能を利用される場合は必ず事前にサポートまでご連絡ください**
  - opus_param_clock_rate
  - opus_param_channels
  - opus_param_maxplaybackrate
  - opus_param_stereo
  - opus_param_sprop_stereo
  - opus_param_minptime
  - opus_param_useinbandfec
  - opus_param_usedtx
- [ADD] イベントウェブフックのワーカー数を指定可能にしました- デフォルトは 5 です
  - sys.config にて `{event_webhook_worker_number, 5}` のように指定します
  - 5-5000 の範囲で指定できます
- [ADD] ウェブフックのレスポンスタイムアウトを指定可能にしました- デフォルトは 5 秒です
  - sys.config にて `{webhook_response_timeout, 5}` のように指定します
  - 1-600 秒の範囲で指定できます
- [ADD] 録画ファイル生成時のウェブフックに `client_id` と `connection_id` をトップレベルに含むようにしました
- [ADD] 録画ファイル生成時のウェブフック `archive.available` に統計情報を追加しました- total_filled_audio_packet- 穴埋めした音声パケットのトータル
  - total_discard_audio_packet- 破棄した音声パケットのトータル
  - min_audio_level- RTP 拡張 audio level の最小値（音声出力の最大値)のトータル
  - total_discarded_audio_packet- 調整のために捨てた音声パケットのトータル
  - total_stored_video_keyframe_head- 映像キーフレームの先頭パケットのトータル
  - total_stored_audio_packet- 録画に利用した音声パケットのトータル
  - total_stored_video_packet- 録画に利用した映像パケットのトータル
  - total_discarded_unknown_packet- 録画に利用せず破棄した不明パケットのトータル
  - total_pli_trigger- 再送要求に限界がきてキーフレーム要求 (PLI) を送ったトータル
- [CHANGE] すべてのブラウザの最新版が Unified Plan になったため SDP の Plan B タイプへの対応を削除しました- plan_b: boolean を削除しました
- [CHANGE] サイマルキャスト機能から Google 独自の SDP 書き換え方式への対応を削除しました- simulcast_rid: boolean を削除しました
  - simulcast: true は常に rid ベースのサイマルキャストが利用されます
  - rid ベースのサイマルキャストは Chrome と Edge Dev でのみ利用できます
- [FIX] 録画ファイルのメタデータに音声のビットレートが含まれていなかったのを修正しました
- [FIX] サイマルキャスト機能利用時に視聴側を先に繋ぐと音声が配信されない問題を修正しました
- [FIX] サイマルキャストのエンコーディング指定を `role: upstream` 時のみに修正しました
- [FIX] 録画時に recording.report に録画ファイルが含まれない問題を修正しました
- [FIX] Generic Nack の再送が rtp_packet_loss_simulator_outgoing の対象になっていなかったのを修正しました
- [FIX] マルチストリームの Answer が遅延した場合でも正常に映像が表示されるよう修正しました


## 19.04.9

**リリース**: 2019-07-22
**対応 Chrome**: M75
**対応 Firefox**: 68
**対応 Safari**: 12.1.1
**対応 Edge Dev**: 77

### 互換なしの変更情報

特にありません

### 変更履歴

- [CHANGE] Opus の DTX 機能を無効化しました- Chrome と Firefox の WebM 再生機能が Opus の DTX 機能に非対応であり、音ずれが発生するため


## 19.04.8

**リリース**: 2019-07-17
**対応 Chrome**: M75
**対応 Firefox**: 68
**対応 Safari**: 12.1.1
**対応 Edge Dev**: 77

### 互換なしの変更情報

特にありません

### 変更履歴

- [FIX] 前回、Firefox で正常に動作するようバージョンアップを行ったことにより、別のネットワーク環境で正常に繋がらなくなった問題を修正しました


## 19.04.7

**リリース**: 2019-07-12
**対応 Chrome**: M75
**対応 Firefox**: 67
**対応 Safari**: 12.1.1
**対応 Edge Dev**: 77

### 互換なしの変更情報

特にありません

### 変更履歴

- [UPDATE] デモ機能が利用している sora-js-sdk を 1.14.0 にアップデートしました
- [UPDATE] 接続に失敗した際ログの config に以下を追加しました- turn_fqdn
  - rtx
  - ulpfec
- [UPDATE] 統計情報出力に以下の値を追加しました- dtls
  - received_turn_binding_request
  - received_turn_binding_error
  - received_turn_binding_success
  - sent_turn_binding_request
  - sent_turn_binding_error
  - sent_turn_binding_success
- [CHANGE] デモ機能のスポットライトの最大数を 8 に変更しました
- [CHANGE] スポットライトの最大数を 8 に変更しました
- [ADD] api_log の対象に以下の API を追加しました- DowngradeSpotlightBitRate
  - ResetSpotlightBitRate
  - StartRecording
  - StopRecording
- [FIX] シグナリングで `type: candidate` の `sdp` に空文字が含まれても問題ないような処理を追加しました
- [FIX] Firefox が特定のネットワークで接続できない問題を修正しました
- [FIX] デモ機能の rid ベースのサイマルキャスト配信機能で音声が配信されていなかった問題を修正しました
- [FIX] 録画機能利用時に StopRecording API を実行中にクライアントの切断が発生した場合起きる問題を修正しました
- [FIX] mDNS の値が UUID 以外の値が入ってくると正常に処理されない問題を修正しました
- [FIX] Chrome で映像で指定しているビットレートが音声と共有されてしまう問題を修正しました


## 19.04.4

**リリース**: 2019-06-10
**対応 Chrome**: M75
**対応 Firefox**: 67
**対応 Safari**: 12.1.1
**対応 Edge Dev**: 76

### 互換なしの変更情報

サポート向けに出力している sdp.log を signaling.log に名前を変更しました。ログローテーションの変更をお願いします。

### 変更履歴

- [ADD] 実験的機能として rid ベースのサイマルキャストに対応しました
- [ADD] 統計 API に RTX / RED / RED-RTX の統計情報を追加しました
- [CHANGE] デモ機能の simulcast_pub.html はデフォルトで rid ベースのサイマルキャストを利用するように変更しました
- [UPDATE] ULPFEC で確保している RTP キャッシュにサイズ上限を追加しました
- [UPDATE] ULPFEC で正常処理ができていない部分を修正しました
- [CHANGE] サポート向けの sdp.log を signaling.log に変更しました- サポート時の対応を迅速にするために、出力するログ内容を変更しました
  - そのため sdp ではなく signaling が主となったためファイル名を変更しました
- [CHANGE] ULPFEC をデフォルトで無効にしました- パケロスが多い場合、 ULPFEC を無効にしている場合より不安定になるためデフォルトで無効にしました
- [FIX] 認証成功時の払い出しで audio と video が false の場合にエラーになるように修正しました
- [FIX] 認証成功時の払い出しで audio や video が false の場合に上書きすると正常に動作しない問題を修正しました
- [FIX] マルチストリーム機能で同時接続でまれに相手が見えなくなる問題を修正しました
- [FIX] TURN-UDP で複数の Allocate-Request が送られてきた場合に正常動作しない問題を修正しました


## 19.04.1

**リリース**: 2019-05-23
**対応 Chrome**: M74
**対応 Firefox**: 67
**対応 Safari**: 12.1.1
**対応 Edge (Chromium ベース)**: 76

### 廃止情報

特にありません

### 互換なしの変更情報

**今回の変更で不明な点はサポートまでお問い合わせください**

`metadata_list` の戻り値を list に変更し、 `signaling_notify_client_id` や `signaling_notify_connection_id` の設定が反映されるようにしました。

今までは `{"connection_id0": "metadata0", "connection_id1": "metadata1"}`  という形式でした、
ただし `signaling_notify_connection_id` を `false` にしていたとしても `connection_id` が共有されてしまう問題がありました。
また `client_id` が含まれていないという問題もあり、抜本的な変更を行いました。

詳細は [シグナリング通知](SIGNALING_NOTIFY.html) の signaling_notify_metadata をご確認ください

### 変更履歴

- [CHANGE] metadata_list の戻り値を変更しました- 詳細は [シグナリング通知](SIGNALING_NOTIFY.html) の signaling_notify_metadata をご確認ください
- [FIX] 録画で音声が途中で途切れる可能性がある問題を修正しました
- [FIX] スポットライト機能利用時の統計情報が一部取得できていなかった問題を修正しました
- [FIX] ULPFEC が特定環境で正常に動作しない問題を修正しました
- [FIX] 回線が不安定な場合に Firefox で SRTP/AES-GCM を利用した際、正常に動作しない問題を修正しました
- [FIX] 特定環境で確保したにもかかわらず利用されていない TURN-TCP が放置されてタイムアウトが発生してしまう問題を修正しました


## 19.04.0

**リリース**: 2019-04-17
**対応 Chrome**: M73
**対応 Firefox**: 66
**対応 Safari**: 12.1
**対応 Edge (Chromium ベース)**: 74

### 廃止情報

特にありません

### 互換なしの変更情報

**プレビュー版の機能に対して後方互換性を維持しない変更を行っています**

- スポットライト機能 CastAlwaysSpotlight API- `client_id` を `connection_id` に変更しました
- スポットライト機能 CastSpotlight API- `client_id` を `connection_id` に変更しました
- スポットライト機能 CancelSpotlight API- `client_id` を `connection_id` に変更しました
- スポットライト機能のシグナリング- `type: connect` 時に `spotlight` を指定した場合、 `audio` を `false` にするとエラーになるように変更しました
- スポットライト機能のシグナリング通知 `spotlight.changed`- `channel_id` を削除しました
- サイマルキャスト機能 ChangeSimulcastQuality API- `client_id` を `connection_id` に変更しました

### ハイライト

- Safari に正式対応しました
- スポットライト機能が Safari に対応しました
- 1 接続ごとにユニークなコネクション ID を払い出すようになりました
- クライアント ID を指定可能にする設定を追加しました
- クライアント ID の重複が可能になりました
- クライアントにネットワーク不安定レベルを通知する機能を追加しました
- イベントウェブフックがエラーになった場合、 event_webhook_error.log にもログが記録されるようになりました
- イベントウェブフックの `connection.updated` の通知を無効にできる設定を追加しました
- 映像の前方誤り訂正機能がマルチストリームでも利用可能になりました
- デモ機能に getDisplayMedia の機能を追加しました
- スポットライト機能に自動で映像のビットレートをシェアする機能を追加しました
- チャネルの接続を、配信者や視聴者単位で切断できる API を追加しました
- Edge の対応を終了し Edge (Chromium ベース) への対応を開始しました

### 変更履歴

- [UPDATE] Safari 12.1 にて Safari に正式に対応しました- 実験的機能としての Unified Plan はまだ動作が未確定なため、プレビュー版としての対応です
- [UPDATE] デモ機能が利用している sora-js-sdk を 1.12.0 にアップデートしました- Safari 12.1 に対応しました
  - Safari 12.0 にも対応しています
- [UPDATE] デモ機能で Safari のデフォルト映像コーデックを H.264 から VP8 に変更しました- Safari 12.1 で VP8 に対応しました
  - Safari 12.0 で VP8 は利用できません
- [UPDATE] デモ機能 multi_pubsub と spotlight_pubsub のデフォルトビットレートを 500kbs から 1000kbps に変更しました- 自動で映像のビットレートをシェアする機能を追加したためです
- [UPDATE] スポットライト機能が Safari に対応しました- Safari が VP8 に対応し、動作が安定したため対応しました
- [ADD] 1 接続ごとにユニークな コネクション ID を払い出すようになりました
- [ADD] クライアント ID を重複させることが可能になりました- **これはプレビュー版の機能です**
- [ADD] シグナリング接続時、または認証成功の戻り値にクライアント ID を指定可能にする設定を追加しました- **これはプレビュー版の機能です**
  - デフォルトでは無効に設定されています
  - `sys.config` の `allow_client_id_assignment` を `true` に指定することで有効にできます
  - 設定を有効にした場合で、 `client_id` を指定しない場合、認証ウェブフックでで通知される `client_id` は `null` になります
  - クライアント ID が指定可能な場合、コネクション ID を判定に使うことが必須になり、後方互換性が失われますので注意してください
- [ADD] デモ機能の pub.html, multi_pubsub.html が getDisplayMedia に対応しました- 最新版の Chrome と Firefox で有効です
  - Safari では利用できません
- [ADD] ブラウザへの追従のため RTP 拡張対応の extmap_allow_mixed を追加しました- **有効にした場合 Safari 12.0 が繋がらなくなります**
  - デフォルトでは無効になっています- `sys.config` の `extmap_allow_mixed` を `true` に指定することで有効にできます
- [ADD] イベントウェブフック通知がエラーになった場合は event_webhook_error.log にもログが記載されるようになりました- event_webhook.log にはすべてのログが記録されます
  - event_webhook_error.log にはエラーになったイベントウェブフックのログが記録されます
- [ADD] イベントウェブフックの `connection.updated` の通知を無効にできる設定を追加しました- デフォルトでは通知されます
  - `sys.config` の `ignore_connection_updated_webhook` を `true` に指定することで通知を無効にできます
- [ADD] シグナリング通知でネットワークの状態を通知する機能を追加しました- デフォルトで有効になっています- `sys.config` の `signaling_notify_network` を `false` に指定することで無効にできます
  - ネットワークの不安定レベル (unstable_level) を通知します- 不安定レベルは 0 から 3 まで 4 段階あり、 0 が一番安定、 3 が一番不安定です
    - 映像を配信している人のみに有効です
  - 送信間隔は 10 秒で固定しています- Sora 19.10 にて送信間隔を変更できるようにする予定です
- [ADD] マルチストリーム配信側の ULPFEC (前方誤り訂正) に対応しました
- [ADD] 片方向配信やマルチストリームにて、映像ビットレートを動的に変更できる ChangeUpstreamVideoBitRate API を追加しました- 詳細は [ChangeUpstreamVideoBitRate](EXPERIMENTAL_API.html#3369f0) API をご確認ください
  - この API を利用することで、再接続することなく映像ビットレートを変更できるようになります
  - マルチストリームでは、分割されたビットレート以上にビットレートを上げることができません- 例えば 1000kbps で指定し、 2 名がそのチャネルに参加している場合には、指定可能な最大ビットレートは 500kbps となります
- [ADD] 指定したチャネルすべての配信者を切断する DisconnectChannelUpstream API を追加しました- 詳細は 指定したチャネルすべての配信者の接続を切断する をご確認ください
  - この API は片方向配信、マルチストリーム、スポットライトすべてで利用できます
- [ADD] 指定したチャネルすべての視聴者を切断する DisconnectChannelDownstream API を追加しました- 詳細は 指定したチャネルすべての視聴者の接続を切断する をご確認ください
  - この API は片方向配信、マルチストリーム、スポットライトすべてで利用できます
- [ADD] マルチストリームのビットレートシェアリング機能を指定可能にしました- 詳細は [multistream_auto_sharing_video_bit_rate](SORA_CONF.html#93f542) をご確認ください
  - この機能は配信者の人数で映像のビットレートを分割する機能です
  - デフォルトで有効になっています- `sys.config` の `multistream_auto_sharing_video_bit_rate` を `false` に指定することで無効にできます
- [ADD] スポットライト機能に、自動で映像ビットレートをシェアする機能を追加しました- 詳細は スポットライトにおける映像ビットレート自動シェアリング機能 をご確認ください
  - この機能は配信者の人数またはスポットライトの数で映像のビットレートを分割する機能です
  - デフォルトで有効になっています- `sys.config` の `spotlight_auto_sharing_video_bit_rate` を `false` に指定することで無効にできます
- [ADD] ログ出力に `api.log` を追加しました- 一部の API 操作に関するログを出力します
  - ログローテーションされませんので、ログローテーションをお願いします
- [ADD] クライアント切断 DisconnectClient API を追加しました- Disconnect API に ClientId を渡した場合と同じ動作をします
- [ADD] 認証の戻り値で `client_id` がバリデーションでエラーになった際、 warning ログが出力されるようになりました
- [ADD] デモ機能のデバッグ情報に PUSH API からの通知を表示するようにしました
- [ADD] Edge (Chromium ベース) への対応を開始しました- 詳細は [Microsoft Edge の WebRTC について](EDGE.html) をご確認ください
- [CHANGE] ULPFEC (前方誤り訂正) をデフォルトで有効にしました- 片方向配信とマルチストリームでの配信が対象です
  - `sys.config` の `ulpfec` を false に指定することで無効にできます
- [CHANGE] スポットライト機能のシグナリング接続時に `audio` を `false` にするとエラーになるよう変更しました
- [CHANGE] スポットライト機能向け CastAlwaysSpotlight API の `client_id` を `connection_id` に変更しました
- [CHANGE] スポットライト機能向け CastSpotlight API の `client_id` を `connection_id` に変更しました
- [CHANGE] スポットライト機能向け CancelSpotlight API の `client_id` を `connection_id` に変更しました
- [CHANGE] サイマルキャスト機能向け ChangeSimulcastQuality API の `client_id` を `connection_id` に変更しました
- [CHANGE] スポットライト機能のシグナリング通知 `spotlight.changed` から `channel_id` を削除しました
- [CHANGE] スポットライト機能のデモでクライアント ID を表示していた部分をコネクション ID を表示するように変更しました
- [CHANGE] GetStats API は `allow_client_id_assignment` を `true` にした場合は利用できなくなりました- クライアント ID が重複可能になるため、既存の API の仕組みでは対応できないためです
  - 代わりに GetStatsClient または GetStatsConnection API を利用してください
- [CHANGE] Disocnnect API は `allow_client_id_assignment` を `true` にした場合は利用できなくなりました- クライアント ID が重複可能になるため、既存の API の仕組みでは対応できないためです
  - 代わりに DisconnectClient または DisconnectConnection API を利用してください
- [FIX] スポットライト機能でスポットライトがあたっている参加者が接続を切断した場合、シグナリング通知で `client_id=null` を送るように修正しました
- [FIX] TURN-TCP 利用時に、特定環境で TCP の接続が残ったままになる問題を修正しました


## 18.10.5

**リリース**: 2019-01-21
**対応 Chrome**: M71
**対応 Firefox**: 64
**対応 Edge**: 44
**対応 Safari**: 12.0

### 廃止情報

特にありません

### 互換なしの変更情報

GetStats API の項目を一部変更しました。

- `total_received_bytes` を `total_received_byte_size` に変更しました
- `total_sent_bytes` を `total_sent_byte_size` に変更しました
- `total_received_packets` を `total_received` に変更しました
- `total_sent_packets` を `total_sent` に変更しました

### ハイライト

- ジッターやパケロスが多い、不安定な回線でも録画が行えるように改善しました

### アップグレード時の注意

互換なしの変更情報を確認してください。

### 変更履歴

- [UPDATE] デモ機能が利用している sora-js-sdk を 1.10.2 にアップデートしました
- [CHANGE] GetStats API の項目を一部変更しました。- `total_received_bytes` を `total_received_byte_size` に変更しました
  - `total_sent_bytes` を `total_sent_byte_size` に変更しました
  - `total_received_packets` を `total_received` に変更しました
  - `total_sent_packets` を `total_sent` に変更しました
- [FIX] 録画機能で、ジッターやパケロスが多い場合でも正常に録画できるよう改善しました
- [FIX] `turn_tls_fqdn` や `turn_fqdn` が認証時に動作しない問題を修正しました
- [FIX] 録画機能の PCMU がいくつかの条件で正常に動作しない問題を修正しました
- [FIX] マルチストリームのキャッシュテーブルが初期化されていなかった問題を修正しました


## 18.10.2

**リリース**: 2018-12-04
**対応 Chrome**: M70
**対応 Firefox**: 63
**対応 Edge**: 44
**対応 Safari**: 12.1 (Safari TP 70)

### 廃止情報

- generic_nack_cache_size が廃止されました- generic_nack_cache_size_msec を利用指定ください

### 互換なしの変更情報

- generic_nack_cache_size が廃止されました- generic_nack_cache_size_msec を利用指定ください

### ハイライト

- 高ビットレートでの再送制御の効率化を行いました
- サポート対象の映像ビットレートを 5Mbps から 15Mbps に変更しました

### アップグレード時の注意

- generic_nack_cache_size を廃止し、 generic_nack_cache_size_msec を追加しました- generic_nack_cache_size の設定を削除してください

### 変更履歴

- [UPDATE] デモ機能の simulcast_pub/simulcast_sub の H.264 を有効にしました- Safari TP 70 にて動作を確認しています
- [UPDATE] デモ機能の up.html の映像ビットレートに 50Mbps を追加しました- サポート対象は 15Mbps が最大になります
- [UPDATE] サポート対象の映像ビットレートを 5Mbps から 15Mbps に引き上げました
- [UPDATE] RTP パケロスシミュレータをマルチストリームとスポットライトに対応しました
- [UPDATE] H.264 のキーフレーム判定をより正確に判定するようにしました
- [UPDATE] 視聴者側の Generic NACK キャッシュサイズをビットレートによって変更する仕組みに変更しました- これにより高ビットレートでも再送制御が機能するようになりました
- [ADD] generic_nack_cache_size_msec を追加しました- デフォルト値以外の値を設定を検討している場合はサポートまでお問い合わせください
- [CHANGE] generic_nack_cache_size を廃止しました
- [FIX] サイマルキャスト利用時でない場合でも視聴側がサイマルキャストを利用していた問題を修正しました
- [FIX] サイマルキャスト配信側が不安定から復旧した際に視聴側が期待している画質が配信されない問題を修正しました
- [FIX] 配信側の Generic NACK 送信の無駄を減らしました
- [FIX] Plan B で映像のみの配信者しかいない場合、音声が有効の視聴者が接続できない問題を修正しました
- [FIX] 回線が不安定な際、正常に録画ができず録画に失敗する問題を修正しました


## 18.10.0

**リリース**: 2018-10-30
**対応 Chrome**: M70
**対応 Firefox**: 63
**対応 Edge**: 42
**対応 Safari**: 12.1 (Safari TP 68)

### 廃止情報

特にありません

### 互換なしの変更情報

特にありません

### ハイライト

- 1 つのチャネルで、同じ映像を複数のビットレートで送信できるサイマルキャスト機能を、プレビュー版として追加しました
- スポットライト機能利用時のクライアントやサーバーの負荷を改善する API や機能を追加しました
- キーフレームの欠損時に再送なしで回復できる前方誤り訂正機能(FEC)の一つである ULPFEC に対応しました

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] デモ機能の Sora JS SDK を 1.10.0 に上げる
- [UPDATE] スポットライト関連のデモ機能のコーデックを VP9 に変更しました
- [ADD] スポットライトで利用するビットレートを一時的に下げる DowngradeSpotlightChannelBitRate API を追加しました- スポットライトを利用している指定したチャネルのビットレートを一時的に半分に下げます
- [ADD] スポットライトで利用するビットレートをリセットする ResetSpotlightChannelBitRate API を追加しました- DowngradeSpotlightChannelBitRate API で下げたビットレートをもとに戻します
- [ADD] DisconnectChannel API と Disconnect API にオプションとして reason を指定できるようにしました- reason をした場合イベントウェブフックの connection.destroyed にて指定した reason が追加されるようになります
  - 切断理由を明確にしたい場合ご利用ください
- [ADD] スポットライトで配信されていないクライアントのビットレートを自動的に下げる設定を追加しました- デフォルトでは無効になっています
  - 有効にする場合は sys.config で `{spotlight_auto_downgrade_bit_rate, false}` を true にしてください
- [ADD] イベントウェブフックの connection.destroyed に reason を追加しました- DisconnectChannel API と Disconnect API の reason に指定された文字が入ります
  - 指定しない、またはそれ以外で切断された場合は null が入ります
- [ADD] プレビュー機能としてサイマルキャストを追加しました- Chrome または Safari TP の最新版が利用できます
  - VP8 でのみ利用できます
  - 片方向配信でのみ利用できます
  - マルチストリームやスポットライトでは利用できません
  - 配信側はシグナリングの `type: connect` にて `{"simulcast": true}` を指定してください
  - 視聴側はシグナリングの `type: connect` にて `simulcast: true | {quality: low | middle | high}` を指定してください- quality を指定しない場合は low がデフォルトで選択されます
- [ADD] サイマルキャスト向けの ChangeSimulcastQuality API を追加しました- ChannelId と ClientId と Quality を指定することで指定した Quality の映像を受信するようになります
- [ADD] デモ機能にサイマルキャスト機能を追加しました- simulcast_pub.html
  - simulcast_sub.html
- [ADD] ULPFEC を片方向配信にてデフォルトで適用するようにした- sys.config にて ulpfec が有効になっています
  - ULPFEC は キーフレーム(全画面フレーム)が欠損した場合に再送無しで欠損を回復する仕組みです


## 18.04.12

**リリース**: 2018-09-21
**対応 Chrome**: M69
**対応 Firefox**: 62
**対応 Edge**: 42
**対応 Safari**: 12.0

### 廃止情報

特にありません

### 互換なしの変更情報

特にありません

### アップグレード時の注意

sys.config の cert_file と cert_key_file が不要になりました。

もし設定ファイルを使いまわしている方は設定を削除する必要はありませんが、できるだけ新しい設定ファイルを利用してください。

cert_file と cert_key_file が不要になったことで sys.config の最後の項目が connection_created_wait_timeout に変更されています。

18.04.11 までの設定ファイルの末尾:

```
%% SDP の offer 時に払い出される origin の username を隠蔽するかどうかを指定してください
%% true の場合は origin の username が "-" として払い出されます
%% {hide_origin_username, true},

%% WebRTC の接続が確立するまでの許容時間を秒で指定してください
%% {connection_created_wait_timeout, 30}

%% WebRTC に使用する証明書を指定してください ECDSA 形式のみ対応しています
{cert_file, "etc/certs/ecdsa_server_cert.pem"},

%% WebRTC に使用する証明書の秘密鍵を指定してください ECDSA 形式のみ対応しています
{cert_key_file, "etc/certs/ecdsa_server_key.pem"}
```

> ]

18.04.12 の設定ファイルの末尾:

```
%% SDP の offer 時に払い出される origin の username を隠蔽するかどうかを指定してください
%% true の場合は origin の username が "-" として払い出されます
%% {hide_origin_username, true},

%% WebRTC の接続が確立するまでの許容時間を秒で指定してください
{connection_created_wait_timeout, 30}
```

> ]

### 変更履歴

> **注意**
>
> 今回 etc ディレクトリが含まれなくなっております。次回からは etc ディレクトリを含んでおくようにしますので、今回はお手数をおかけしますが作成をお願いいたします

- [CHANGE] WebRTC の DTLS に利用している証明書を Sora が動的に生成する仕組みを追加しました
- [CHANGE] sys.config の cert_file と cert_key_file を削除しました- 証明書は Sora が動的に生成する仕組みになりました
- [UPDATE] Safari 12.0 に対応しました- ただし High Sierra の場合 Safari で Firefox への配信が正常に行われません、これは Safari 側の問題です
  - 対応は Safari のアップデートを待ちになります
- [UPDATE] 映像コーデックに指定可能なビットレートの最大値を 5Mbps から 30Mbps に変更しました- ネットワーク条件がかなり限定されることもあり、現時点では 5Mbps より大きい値はサポート外とさせていただきます
  - 今後対応できるように検証、改善を進めてまいります
- [UPDATE] デモ機能で利用している Sora JavaScript SDK を 1.9.2 に上げました
- [UPDATE] シグナリングの `type: "ping"` の Sora 側での判断を変更しました- 今までは `type: "ping"` を送って 30 秒反応がない場合は切断するという方式でしたが、もう少し許容できるように、 5 秒ごとに ping を送り、 60 秒間隔で pong が一度でも送られて来ているかどうかという判断をする仕組みに変更しました
- [FIX] 録画時に、 0 バイトのペイロードの RTP RTX を受け取ると録画ファイルが途中から再生できなる問題を修正しました
- [FIX] PCMU が片方向と双方向で正常に動作しなくなっていた問題を修正しました
- [FIX] 録画時に映像コーデックに H.264 を利用した場合に正常に録画されない問題を修正しました


## 18.04.11

**リリース**: 2018-08-08
**対応 Chrome**: M68
**対応 Firefox**: 61
**対応 Edge**: 42
**対応 Safari**: 11.1

### 廃止情報

特にありません

### 互換なしの変更情報

特にありません

### アップグレード時の注意

Sora がデフォルトで利用している証明書を更新しました。

証明書を自前で発行して設定していない方は **必ず** 更新をお願いします。

### 変更履歴

- [UPDATE] 片方向配信の映像に特定の RTP 拡張が入っている場合 Chrome Canary M70 で動作しないため、RTP 拡張を最低限にまで落としました
- [UPDATE] Sora がデフォルトで利用している証明書を更新しました- 証明書の設定を自前で行っていない方は **必ず** 更新をお願いします
- [ADD] プレビュー機能として RTP パケロスシミュレータを追加しました- この機能を使った場合クライアント接続ごとに warning ログが発生しますので注意してください
  - sys.config にて `{rtp_packet_loss_simulator_incoming, 2}` を設定すると Sora が受信する 2% のパケットをドロップします
  - sys.config にて `{rtp_packet_loss_simulator_outgoing, 1}` を設定すると 1% Sora が送信するパケットをドロップします
- [FIX] シグナリングで音声と映像を有効にして録画する際、クライアント側で音声のみを送信した場合に録画が正常に行われない問題を修正しました
- [FIX] 録画のときに、映像、音声どちらかが大きく遅れた場合に録画がずれる問題を修正しました


## 18.04.10

**リリース**: 2018-07-24
**対応 Chrome**: M68
**対応 Firefox**: 61
**対応 Edge**: 42
**対応 Safari**: 11.1

### 廃止情報

特にありません

### 互換なしの変更情報

特にありません

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] ICE 周りで Chrome M68 で変更箇所に対応しました
- [UPDATE] TURN-TCP のパケット処理をより厳密にするようにしました
- [UPDATE] スポットライト固定 API (CastAlwaysSpotlight) で spotlight_id をオプションに変更しました- spotlight_id を指定しない場合は、空いているスポットライトが利用されます
- [FIX] クライアントが複数 IP アドレスを保持している場合にたまに繋がらなくなる問題を修正しました
- [FIX] ローカルネットワーク上でまれに TURN-UDP が有効にもかかわらず TURN-TCP が選択されてしまう問題を修正しました
- [FIX] スポットライトのシグナリング通知で `connection.created` の前に `spotligh.changed` が通知される問題を修正しました


## 18.04.9

**リリース**: 2018-06-29
**対応 Chrome**: M67
**対応 Firefox**: 61
**対応 Edge**: 42
**対応 Safari**: 11.1

### 廃止情報

特にありません

### 互換なしの変更情報

特にありません

### アップグレード時の注意

`{turn_fqdn, "sora.example.com"}` を廃止することを取りやめました

### 変更履歴

- [UPDATE] スポットライト機能のデモのデフォルトで利用するコーデックを VP9 から VP8 に変更しました- Chrome M67-M69 では VP9 で映像を切り替えた際にうまく映像が切り替わらないバグが存在するためです
- [UPDATE] スポットライト機能のデモで映像が切り替わった際にクライアント ID を切り替えるようにしました- この機能は `signaling_notify` が有効になっている必要があります
- [UPDATE] `{turn_fqdn, "sora.example.com"}` を廃止することを取りやめました- iOS の審査通過条件である NAT64/DNS64 下で動作するには TURN の URL が FQDN である必要があるためです
  - 以前新しく追加した `turn_tls_fqdn` は `turn_fqdn` の設定を上書きします、そのため TURN-TCP/UDP と TURN-TLS で別の FQDN を指定することが可能になりました
- [FIX] スポットライト機能で配信されなくなるクライアントが出てしまう問題を修正しました


## 18.04.6

**リリース**: 2018-06-18
**対応 Chrome**: M67
**対応 Firefox**: 60
**対応 Edge**: 42
**対応 Safari**: 11.1

### 廃止情報

特にありません

### 互換なしの変更情報

特にありません

### アップグレード時の注意

特にありません

### 変更履歴

- [FIX] Firefox 利用時にマルチストリームで複数クライアントが接続した際、クライアント側のイベントが正常に発火しない問題を修正しました
- [FIX] デモ機能で Firefox を利用した際に、正常に disconnect が利用できない問題を修正しました
- [FIX] デモ機能で Chrome を利用した際に、 onremovetrack と onremovestream 両方が発火する場合の動作を修正しました


## 18.04.5

**リリース**: 2018-06-14
**対応 Chrome**: M67
**対応 Firefox**: 60
**対応 Edge**: 42
**対応 Safari**: 11.1

### 廃止情報

特にありません

### 互換なしの変更情報

特にありません

### ハイライト

- マルチストリームで同一のチャネル ID にほぼ同時に複数クライアントが接続した際、正常につながらない問題を修正しました

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] デモ機能が利用している sora-js-sdk を 1.9.1 にアップデートしました
- [FIX] マルチストリームで同一のチャネル ID にほぼ同時に複数クライアントが接続した際、正常につながらない問題を修正しました
- [FIX] ウェブフック機能の HTTP Proxy が正常に動作しない問題を修正しました


## 18.04.3

**リリース**: 2018-05-30
**対応 Chrome**: M67
**対応 Firefox**: 60
**対応 Edge**: 42
**対応 Safari**: 11.1

### 廃止情報

- スナップショット機能を廃止しました
- Ubuntu 14.04 版の新規提供を終了しました

### 互換なしの変更情報

- スナップショット機能を廃止しました

### ハイライト

- Ubuntu 18.04 版のパッケージ提供を開始しました
- ウェブフックが HTTP Proxy に対応しました
- 視聴のみの参加者がいる配信で、スポットライト機能が使えるようになりました
- スポットライト機能向けのシグナリング通知を追加しました

### アップグレード時の注意

特にありません

### 変更履歴

- [ADD] Ubuntu 18.04 版のパッケージ提供を開始しました
- [ADD] ウェブフックの HTTP Proxy 対応を追加しました- sys.config に以下の設定を追加しました
  - webhook_proxy_url- {webhook_proxy_url, ""}
  - webhook_proxy_auth_user
  - webhook_proxy_auth_password
- [ADD] GetStatsReport API に total_turn_udp_connections と total_turn_tcp_connections を追加しました
- [ADD] デモ機能で Chrome Canary M68 以降でマルチストリームを利用した際は Unified Plan を利用するように修正しました
- [ADD] 視聴のみの参加者がいる配信で、スポットライト機能が使えるようになりました
- [ADD] スポットライト機能向けのシグナリング通知を追加しました
- [ADD] デモ機能にスポットライト機能視聴のみの spotlight_sub.html を追加しました
- [ADD] turn_tcp_listen_port を追加しました- TURN-TCP の待受ポートを指定します
  - turn_tcp_port は URL 払い出しでの利用になりました
- [ADD] turn_tls_fqdn を追加しました- turn_fqdn が TURN-TLS でしか利用しない変更をいれたため名前を変更しました
  - turn_fqdn は次のリリースで廃止します
- [UPDATE] デモ機能 spotlight_pubsub.html で音量バーを表示するようにしました
- [CHANGE] スナップショット機能を削除しました
- [CHANGE] turn_tcp_port は払い出し URL に利用されるポート番号の設定に変更しました
- [CHANGE] Ubuntu 14.04 版のパッケージ新規提供を終了しました
- [FIX] TURN-UDP/TCP の場合は FQDN は利用しないように修正しました- Safari 11.1 では FQDN の場合 TURN が正常に動作しないため


## 18.04.1

**リリース**: 2018-05-02
**対応 Chrome**: M66
**対応 Firefox**: 59
**対応 Edge**: 42
**対応 Safari**: 11.1

### 廃止情報

- スナップショット機能を廃止予定のため、現在利用されているお客様がいらっしゃいましたらご連絡ください- スナップショット機能は VP8 でしか利用できないこと、さらには RTP 転送機能を利用すれば似たようなことが実現できることもあり、廃止する予定です
  - もし利用されているお客様がいない場合は次のリリースにて廃止します

### 互換なしの変更情報

特にありません

### ハイライト

- シグナリング通知のフォーマットが仕様と異なっている問題を修正しました

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] Edge 42 で動作確認を行いました- 現時点でもかなり不安定ですので Edge での利用はお勧めしません
  - TURN-TLS が設定されていると動作しません
  - TURN IPv6 が設定されていると動作しません
  - VP9 コーデックには非対応です
  - マルチストリームは利用できません
- [FIX] シグナリング通知時の connection.destroyed と connection.created のフォーマットが仕様と異なっている問題を修正しました
- [ADD] スポットライト機能で映像コーデックに VP8 や H.264 が利用可能になりました


## 18.04.0

**リリース**: 2018-04-27
**対応 Chrome**: M66
**対応 Firefox**: 59
**対応 Edge**: 41
**対応 Safari**: 11.1

### 廃止情報

- スナップショット機能を廃止予定のため、現在利用されているお客様がいらっしゃいましたらご連絡ください- スナップショット機能は VP8 でしか利用できないこと、さらには RTP 転送機能を利用すれば似たようなことが実現できることもあり、廃止する予定です
  - もし利用されているお客様がいない場合は次のリリースにて廃止します

### 互換なしの変更情報

特にありません

### ハイライト

- プレビュー版のスポットライト機能 (旧「音声検出による映像の動的切り替え機能」) に対して大幅なアップデートを行いました
- シグナリング通知に対して大幅なアップデートを行いました
- クライアントが Sora と WebRTC による接続ができなかった場合に、クライアント単位の詳細なログを出力する機能をプレビュー版として追加しました

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] デモ機能が利用している sora-js-sdk を 1.8.2 にアップデートしました
- [FIX] Android Chrome でデモ機能を利用した際に相手の映像と音声が視聴できない問題を修正しました
- [CHANGE] デモ機能の Canvas 合成配信を削除しました- Sora の機能とは関係ないため、今後 GitHub にて公開予定です
- [CHANGE] 「音声検出による映像の動的切替機能」から「スポットライト機能」に名前を変更しました
- [CHANGE] スポットライト機能のデモを vad.html から spotlight_pubsub.html に変更しました- スポットライトの数を 2 で固定していたのを 1-5 の範囲で指定できるようにしました
- [CHANGE] スポットライト機能のフェイクデモを vad_fake.html から spotlight_fake.html に変更しました- スポットライトの数を 2 で固定していたのを 1-5 の範囲で指定できるようにしました
- [CHANGE] スポットライト機能で、参加者や視聴者が表示されるストリームにばらつきが出ないようにしました
- [ADD] スポットライト機能で、アクティブな話者 (配信されている話者) の数を認証ウェブフックの戻り値で指定できるようになりました
- [ADD] スポットライト機能で、アクティブな話者 (配信されている話者) が切り替わった場合に "spotlight.changed" でウェブフックを飛ばす機能を追加しました- 詳細は spotlight.changed をご確認ください
  - デフォルトでは無効になっています、有効にする場合は [ignore_spotlight_changed_webhook](SORA_CONF.html#7f5ed5) を `false` にしてください
- [ADD] スポットライト機能で、指定した参加者を強制的に画面に表示する API を追加しました- 詳細は 指定した参加者を強制的に画面に表示する をご確認ください
- [ADD] スポットライト機能で、指定した参加者を常に画面に表示する API を追加しました- 詳細は 指定した参加者を常に画面に表示する をご確認ください
- [ADD] スポットライト機能で、指定した参加者を常に画面に表示するのを解除する API を追加しました- 詳細は 指定した参加者を常に画面に表示する状態を解除する をご確認ください
- [ADD] 正常に接続できなかった場合にエラーを log/connection-created-timeout-error ディレクトリ以下に出力する機能をプレビュー版として追加しました- ログのファイル名形式は <unix_time_sec>_<client_id>.json になります
  - 内部のデータは弊社にて解析するためのログを出力しておりますので加工せずにそのままお送りください
- [CHANGE] シグナリング通知機能をデフォルトで有効にしました- 詳細は [シグナリング通知機能](SIGNALING_NOTIFY.html) をご確認ください。
- [ADD] シグナリング通知の際、クライアント ID を含めるようにしました- `sys.config` の `{signaling_notify_client_id, false}` でクライアント ID を含めなくなります
- [ADD] シグナリング通知の際、音声と映像が有効かどうかを含めるようにしました- `sys.config` の `{signaling_notify_media, false}` で音声と映像が有効かどうかを含めなくなります
- [ADD] シグナリング通知の際、メタデータを含めるようにしました- シグナリング通知に使われるメタデータは `type: connect` 時の `signaling_notify_metadata` で指定できます
  - シグナリング通知に使われるメタデータは認証ウェブフックの戻り値で `signaling_notify_metadata` で上書きできます
  - `sys.config` の `{signaling_notify_metadata, false}` でメタデータを含めなくなります


## 18.02.2

**リリース**: 2018-03-23
**対応 Chrome**: M65
**対応 Firefox**: 59
**対応 Edge**: 41
**対応 Safari**: 11.0

### 廃止情報

**こちら現在検討中ですので急いで対応して頂く必要はありません**

- ListConnections API を廃止予定です- 今後は ListChannelClients API を利用して下さい

### 互換なしの変更情報

**18.04 で互換なしの変更を予定しておりましたが、取り下げます**

### ハイライト

- Safari 11.0.3 でマルチストリーム利用時に音声のみでの配信が正常に動作しない問題を修正しました

### アップグレード時の注意

特にありません

### 変更履歴

- [FIX] デモ機能でエラーが起きた時うまく表示ができなかった問題を修正しました
- [FIX] Safari 11.0.3 でマルチストリーム利用時に音声のみでの配信が正常に動作しない問題を修正しました


## 18.02.1

**リリース**: 2018-03-16
**対応 Chrome**: M65
**対応 Firefox**: 59
**対応 Edge**: 41
**対応 Safari**: 11.0

### 廃止情報

**こちら現在検討中ですので急いで対応して頂く必要はありません**

- ListConnections API を廃止予定です- 今後は ListChannelClients API を利用して下さい

### 互換なしの変更情報

**18.04 で互換なしの変更を予定しておりましたが、取り下げます**

### ハイライト

- Firefox 59 で onremovetrack が発火しなくなっている問題を修正しました

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] デモ機能が利用している sora-js-sdk を 1.8.1 にアップデートしました
- [ADD] 音声検出による映像の動的表示機能を Firefox に対応しました
- [CHANGE] エラーに出力されるログ UNKNOWN-TYPE を INVALID-SIGNALING-TYPE に変更しました
- [FIX] BUNDLE にすべての m= line の mid を列挙するよう修正しました- この修正で Firefox 59 で onremovetrack が発火しない問題が解決します


## 18.02.0

**リリース**: 2018-02-28
**対応 Chrome**: M64
**対応 Firefox**: 58
**対応 Edge**: 41
**対応 Safari**: 11.0

### ハイライト

- 音声検出による映像の動的切替機能を追加しました

### アップグレード時の注意

特にありません

### 変更履歴

- [ADD] プレビュー機能として音声検出による映像の動的表示機能を追加しました- 詳細は [音声検出による映像の動的表示機能](SPOTLIGHT.html) をご確認ください
- [ADD] デモ機能に音声検出による映像の動的表示機能を利用した vad.html と vad_fake.html を追加しました
- [ADD] デモ機能に音声入力/音声出力/映像入力それぞれのデバイスを切り替える機能を追加しました
- [ADD] RTCP-XR に対応しました
- [FIX] マルチストリーム利用時に終了処理時にビットレート判定の部分で配信者数が 0 になる問題を修正しました
- [FIX] マルチストリーム利用時に音声のみを指定しているにも関わらず映像が配信されてしまう問題を修正しました
- [FIX] マルチストリーム利用時にクライアントが createAnswer に失敗した際に、接続が残った状態になるのを修正しました
- [FIX] TURN-TCP を利用した際にシグナリングが接続確立する前に切断したときの問題を修正しました


## 18.01.1

**リリース**: 2018-01-24
**対応 Chrome**: M63
**対応 Firefox**: 58
**対応 Edge**: 41
**対応 Safari**: 11

### 廃止情報

**こちら現在検討中ですので急いで対応して頂く必要はありません**

- ListConnections API を廃止予定です- 今後は ListChannelClients API を利用して下さい

### 互換なしの変更情報

**18.04 にて次の互換なしの変更を予定しておりましたが、取り下げます**

- type: connect 時にクライアントから SDP を送るのを必須に変更します
- role: upstream を role: pub に変更します
- role: downstream を role: sub に変更します
- マルチストリーム利用時の role: upstream を role: pubsub に変更します
- マルチストリーム利用時の role: downstream を role: sub に変更します
- マルチストリーム利用時の plan_b を廃止します- 今後は type: connect 時に送る SDP にてサーバー側で自動で判断します

### ハイライト

- Firefox 58 で配信を行おうとすると Firefox がクラッシュする問題を修正しました

### アップグレード時の注意

特にありません

### 変更履歴

- [FIX] Firefox 58 で配信を行おうとすると Firefox がクラッシュする問題を修正しました


## 18.01.0

**リリース**: 2018-01-15
**対応 Chrome**: M63
**対応 Firefox**: 57
**対応 Edge**: 41
**対応 Safari**: 11

### 廃止情報

**こちら現在検討中ですので急いで対応して頂く必要はありません**

- ListConnections API を廃止予定です- 今後は ListChannelClients API を利用して下さい

### 互換なしの変更情報

**18.04 にて次の互換なしの変更を予定しておりましたが、取り下げます**

- type: connect 時にクライアントから SDP を送るのを必須に変更します
- role: upstream を role: pub に変更します
- role: downstream を role: sub に変更します
- マルチストリーム利用時の role: upstream を role: pubsub に変更します
- マルチストリーム利用時の role: downstream を role: sub に変更します
- マルチストリーム利用時の plan_b を廃止します- 今後は type: connect 時に送る SDP にてサーバー側で自動で判断します

### ハイライト

- ライセンスファイル更新時にサーバーを落とさなくても良くなりました

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] デモ機能でクライアント ID を表示するようにしました
- [UPDATE] デモ機能が利用している sora-js-sdk を 1.7.7 にアップデートしました
- [ADD] RTP 拡張 video-content-type に対応しました
- [ADD] RTP 拡張 video-timing に対応しました
- [ADD] プレビュー機能としてライセンス更新 API を追加しました- 詳細は UpdateLicense API をご確認ください
- [ADD] プレビュー機能としてライセンス情報取得 API を追加しました- 詳細は GetLicense API をご確認ください
- [ADD] プレビュー機能として RTP 転送 API 利用時の PLI をクライアントに送る間隔を sys.config で指定できるようにしました- 配信側への キーフレーム要求の間隔を指定できるようになりました
  - 指定する場合は sys.config にて default_forwarding_pli_interval を指定して下さい
- [FIX] TURN-TCP 利用時にうまく終了処理ができていなかったのを修正しました
- [FIX] 録画 API 利用時に終了処理が正常に動作していなかったのを修正しました
- [FIX] 録画終了時の負荷が高くなった際に録画が正常に終了しない問題を修正しました
- [FIX] デモ機能で multi_sub が Firefox や Safari で正常に動作していなかったのを修正しました
- [FIX] マルチストリームの downstream 利用時に配信側が存在しなくなった場合の動作がおかしくなる問題を修正しました
- [FIX] マルチストリームの downstream 利用時に配信側が存在しない場合に新規で接続した場合のエラーを修正しました


## 17.10.5

**リリース**: 2017-12-20
**対応 Chrome**: M63
**対応 Firefox**: 57
**対応 Edge**: 41
**対応 Safari**: 11

### 廃止情報

- 18.01 で ListConnections API を廃止します- 今後は ListChannelClients API を利用して下さい

### 互換なしの変更情報

**18.04 にて次の互換なしの変更を予定しておりましたが、取り下げます**

- type: connect 時にクライアントから SDP を送るのを必須に変更します
- role: upstream を role: pub に変更します
- role: downstream を role: sub に変更します
- マルチストリーム利用時の role: upstream を role: pubsub に変更します
- マルチストリーム利用時の role: downstream を role: sub に変更します
- マルチストリーム利用時の plan_b を廃止します- 今後は type: connect 時に送る SDP にてサーバー側で自動で判断します

### ハイライト

特にありません

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] デモ機能の Sora JavaScript SDK を 1.7.4 にアップデートしました
- [ADD] シグナリングの type: connect と type: update の sdp を sdp.log に出力するようにしました
- [ADD] シグナリングでクライアントが投げてきた JSON が間違っていた場合に `INVALID-JSON` エラー返すようにしました
- [CHANGE] シグナリング時にチャネル ID で `undefined` を利用可能にしました- それに伴い NOT-USE-CHANNEL-ID エラーを削除しました
- [FIX] 録画機能の WebM 作成時に録画するデータが届く前に録画終了した場合の問題を修正しました
- [FIX] 録画機能の録画予約終了と録画開始が重なった場合の問題を修正しました
- [FIX] 録画機能で録画が終了してるタイミングで録画停止 API が呼び出された場合の問題を修正しました
- [FIX] TURN 機能の TURN-UDP と TURN-TCP で ChannelNumber が期限が切れるまで保持するように修正しました
- [FIX] スナップショット機能と録画機能を同時に利用した際の問題を修正しました
- [FIX] RTP 転送機能と録画機能を同時に利用した際の問題を修正しました


## 17.10.2

**リリース**: 2017-11-15
**対応 Chrome**: M62
**対応 Firefox**: 57
**対応 Edge**: 41
**対応 Safari**: 11

### 廃止情報

- 18.01 で ListConnections API を廃止します- 今後は ListChannelClients API を利用して下さい

### 互換なしの変更情報

**18.04 にて次の互換なしの変更を予定しておりましたが、取り下げます**

- type: connect 時にクライアントから SDP を送るのを必須に変更します
- role: upstream を role: pub に変更します
- role: downstream を role: sub に変更します
- マルチストリーム利用時の role: upstream を role: pubsub に変更します
- マルチストリーム利用時の role: downstream を role: sub に変更します
- マルチストリーム利用時の plan_b を廃止します- 今後は type: connect 時に送る SDP にてサーバー側で自動で判断します

### ハイライト

- デモ機能にデバッグモードを追加しました
- プレビュー版の機能をいくつか追加しました

### アップグレード時の注意

特にありません

### 変更履歴

- [ADD] デモ機能にデバッグモードを追加しました
- [ADD] GetStatsAllConnections API を追加- GetStats API で個別に取得していた統計情報を取得する機能です
- [ADD] 片方向配信時に視聴側の帯域情報を配信側に伝えることで配信側のビットレートを自動で変更する機能を追加しました- **これはプレビュー版の機能です**
  - この機能を利用する場合は必ずサポートまでご連絡ください、ドキュメントには反映していません
  - sys.config に設定が必要です- {report_sub_remb, true}
- [ADD] StartForwardingRtp API 戻り値の SDP に SSRC を追加しました- **これはプレビュー版の機能です**
  - この機能を利用する場合は必ずサポートまでご連絡ください、ドキュメントには反映していません
- [ADD] StartForwardingRtp API 戻り値の SDP の t= の start_time に API 開始時間を追加しました- **これはプレビュー版の機能です**
  - この機能を利用する場合は必ずサポートまでご連絡ください、ドキュメントには反映していません
- [ADD] StartForwardingRtp API の引数にオプションとして rtcp_port を追加しました- **これはプレビュー版の機能です**
  - この機能を利用する場合は必ずサポートまでご連絡ください、ドキュメントには反映していません
  - 現在はすべての RTCP リストを送信しています
- [ADD] GetStatsReport API に erlang_vm と browser と error の統計情報を追加しました- **これはプレビュー版の機能です**
  - この機能を利用する場合は必ずサポートまでご連絡ください、ドキュメントには反映していません
  - sys.config に設定が必要です- {stats_report_erlang_vm, true}- ErlangVM の統計情報が取得できるようになります
    - {stats_report_browser, true}- シグナリング接続の成功と失敗がブラウザごとにカウントされるようになります
    - {stats_report_error, true}- シグナリングの失敗と SDP 生成の失敗がカウントされるようになります
- [FIX] TURN-TCP が採用されないタイミングでクラッシュしていた問題を修正しました
- [FIX] Edge で一部の SDP が処理できなかった問題を修正しました
- [FIX] デモ機能のビットレート指定が反映されていなかった問題を修正しました
- [FIX] RTP 拡張 abs-send-time の処理を修正しました
- [FIX] 認証ウェブフックの戻り値の処理を修正しました


## 17.10.0

**リリース**: 2017-10-25
**対応 Chrome**: M62
**対応 Firefox**: 56
**対応 Edge**: 41
**対応 Safari**: 11

### 廃止情報

- 17.12 で ListConnections API を廃止します- 今後は ListChannelClients API を利用して下さい

### 互換なしの変更情報

**18.04 にて次の互換なしの変更を予定しておりましたが、取り下げます**

- type: connect 時にクライアントから SDP を送るのを必須に変更します
- role: upstream を role: pub に変更します
- role: downstream を role: sub に変更します
- マルチストリーム利用時の role: upstream を role: pubsub に変更します
- マルチストリーム利用時の role: downstream を role: sub に変更します
- マルチストリーム利用時の plan_b を廃止します- 今後は type: connect 時に送る SDP にてサーバー側で自動で判断します

### ハイライト

- 映像の再送制御機能について最適化を行い、より安定した配信が可能になりました
- イベントウェブフック機能について並列化を行い、イベント通知がより安定して処理できるようになりました
- デモ機能を、 [Sora JavaScript SDK](https://github.com/shiguredo/sora-js-sdk) を利用したものに置き換えました

### アップグレード時の注意

特にありません

### 変更履歴

- [UPDATE] Chrome M62 での動作を確認しました
- [UPDATE] 映像の再送制御機能を最適化を行い、より安定した配信が可能になりました- Generic NACK の仕組みを 1 から書き換えました
- [UPDATE] イベントウェブフック機能を並列化を行い、イベント通知をより安定して処理できるようになりました- この対応を入れた後でも connection.created と connection.destroyed の順番は保証されます
- [ADD] サーバー起動時に sysctl -a と ulimint -n のログを取得する仕組みを追加しました- log 以下に sysctl.log と ulimit.log が生成されます
- [ADD] サーバーの状態を取得できる GetStatsReport API を追加しました- 以下の値が取得できます
  - 現在接続している数
  - 現在までの接続が成功した数
  - 現在までの接続が失敗した数
  - 現在までの合計接続時間 (秒)
  - 平均接続時間 (秒)
  - 平均セットアップ時間 (ミリ秒)- シグナリングを開始してから接続するまでにかかった時間の平均
- [CHANGE] デモ機能を一新しました- Sora JavaScript SDK を利用したデモとなっています
  - ファイル名が一部変更になりました
  - QueryString を利用して指定が可能になりました- 詳細はデモ機能の QueryString をご確認下さい
  - up.html -> pub.html
  - down.html -> sub.html
  - multistream.html -> multi_pubsub.html
  - multistream_down.html -> multi_sub.html
- [CHANGE] プレビュー版だったストリーミング機能を削除しました- ストリーミング機能はまだ安定的に動作しないこともあり、一度削除しました
  - もしストリーミング機能が使いたい場合は StartForwardingRtp/StopForwardingRtp API と FFmpeg を利用してください
- [FIX] 片方向配信時の視聴側の RTCP が一部正常に処理できていない問題を修正しました


## 17.08.3

**リリース**: 2017-10-13
**対応 Chrome**: M61
**対応 Firefox**: 56
**対応 Edge**: 40.15063
**対応 Safari**: 11

### 廃止情報

- 17.12 で ListConnections API を廃止します- 今後は ListChannelClients API を利用して下さい

### 変更履歴

- [FIX] マルチストリームの録画終了時に正常終了しない問題を修正しました
- [FIX] マルチストリームの録画終了時に PLI の定期送信が正常に終了しない問題を修正しました
- [FIX] マルチストリームで音声のみを配信している状態に、音声と映像で参加すると、VP9 しか受け付けない問題を修正しました


## 17.08.2

**リリース**: 2017-09-27
**対応 Chrome**: M61
**対応 Firefox**: 55
**対応 Edge**: 40.15063
**対応 Safari**: 11

### 廃止情報

- 17.12 で ListConnections API を廃止します- 今後は ListChannelClients API を利用して下さい

### ハイライト

- プレビュー機能として Safari 11 に対応しました
- プレビュー機能として Opus のビットレートを指定できるようになりました
- CentOS 7.4 に対応しました

### アップグレード時の注意

- sys.config の application_specific_maximum を default_video_bit_rate に変更しました

### 変更履歴

- [UPDATE] Chrome M61 での動作を確認しました
- [UPDATE] プレビュー機能として Safari 11 に対応しました
- [UPDATE] デモ機能の multistream_down.html で音声をデフォルトで有効にしました
- [UPDATE] CentOS 7.4 に対応しました
- [ADD] プレビュー機能として音声コーデックに Opus 利用した際にビットレートが指定できるようになりました- Chrome と Safari でのみ有効になります、 Firefox や Edge では有効になりません
- [CHANGE] sys.config の application_specific_maximum を default_video_bit_rate に変更しました
- [FIX] デモ機能の multistream_down.html で音声が正常に動作していなかったのを修正しました
- [FIX] snapshot を利用した際に特定の条件で正常に動作しない問題を修正しました
- [FIX] マルチストリーム時に downstream に対して RTCP-BYE を送らないよう修正しました
- [FIX] DTLS が完了していないタイミングで SRTP や SRTCP が送られてきた場合うまく動作しない問題を修正しました


## 17.08.0

**リリース**: 2017-08-30
**対応 Chrome**: M60
**対応 Firefox**: 55
**対応 Edge**: 40.15063
**対応 Safari**: Technology Preview 38

### 廃止情報

- 17.12 で ListConnections API を廃止します- 今後は ListChannelClients API を利用して下さい

### ハイライト

- 音声や映像の転送処理の高速化を行いました
- TURN-TCP 周りの動作を安定させました
- OpenSSL ライブラリのインストールが不要になりました
- StartForwardingRtp の戻り値に FFmpeg 連携用の SDP 追加しました
- StartForwardingRtp/StopForwardingRtp API がマルチストリームに対応しました
- チャネルごとのユーザー接続情報を取得できる ListChannelClients API を追加しました

### アップグレード時の注意

- イベントフックで送られてくる event_metadata の項目を metadata から event_metadata に変更しました
- StartForwardingRtp API の戻り値が FFmpeg で利用可能な sdp のみになりました

### 変更履歴

- [UPDATE] TURN-TLS URL 払い出し機能が正式版になりました
- [UPDATE] GetStats API が正式版になりました
- [UPDATE] Chrome M60 での動作を確認しました
- [UPDATE] Firefox 55 での動作を確認しました
- [UPDATE] Safari TP 38 での動作を確認しました
- [ADD] シグナリングで `type: disconnect` 送った際の終了処理を追加しました
- [ADD] 録画 API 終了時に生成されるメタデータファイルにアーカイブそれぞれの metadata_file_path と metadta_filename を追加しました
- [ADD] イベントフック connection.created/updated/destroyed に audio/video の項目を追加しました
- [ADD] クライアント統計情報に transport_cc を追加しました
- [ADD] ListChannelClients API を追加しました- 指定したチャネル ID のクライアント情報を取得できます
- [ADD] デモ機能の multistream.html に cpuOveruseDetection を追加しました
- [ADD] マルチストリームの SDP に AS/TIAS 追加しました
- [ADD] 片方向配信の SDP に AS/TIAS 追加しました
- [ADD] RTP が転送機能をマルチストリームに対応しました- StartForwardingRtp/StopForwardingRtp 時に client_id を指定することで RTP 転送が可能になります
- [CHANGE] 3gpp:video-orientation を無効にしました
- [CHANGE] OpenSSL のインストールが不要になりました
- [CHANGE] イベントフックで connection.created/updated/destroyed に入ってくる event_metadata を metadata から event_metadta に変更しました
- [CHANGE] goog-remb オプションを sys.config から削除しました
- [CHANGE] transport-wide オプションを sys.config から削除しました
- [CHANGE] StartForwardingRtp API の戻り値が SDP を返すようにしました- FFmpeg との連携を簡単にするための SDP を生成するようにしました
- [CHANGE] StartForwardingRtp API を実行したタイミングで PLI を 20 秒で送るようにしました
- [FIX] デモ機能で音声のみの受信が Firefox で正常に動作しなかった問題を修正しました
- [FIX] クライアント統計情報に TURN-TCP が反映されるようにしました
- [FIX] TURN-TCP 利用時にうまくアドレスが取得できない場合、正常に動作しなかった問題を修正しました
- [FIX] TURN-TCP 利用時に不必要に出ていたログを削除しました
- [FIX] マルチストリーム利用時に RTCP-RR の値の一部が指定されていなかった問題を修正しました
- [FIX] マルチストリーム利用時にクライアント側のエンコードビットレートが不安定になる問題を修正しました


## 17.06.2

**リリース**: 2017-07-05
**対応 Chrome**: M59
**対応 Firefox**: 54
**対応 Edge**: 40.15063
**対応 Safari**: Technology Preview 34

### 変更履歴

- [UPDATE] 配信機能のパフォーマンス向上を行いました- より遅延が少なくなりました
- [UPDATE] マルチストリーム使用時の Generic NACK の動作を安定化させました
- [ADD] DTLS-SRTP の AES-GCM に対応しました- 現時点では Chrome で chrome://flags で有効にした場合のみ使用できます
- [CHANGE] デモ機能のデフォルトビデオコーデックを VP9 に変更しました- up.html
  - down.html
  - canvas.html
  - multistream.html
  - multistream_down.html
- [CHANGE] 配信と視聴のデモ機能が Edge と Safari Technology Preview 34 に対応しました- Safari が対応しているコーデックは H.264 のみであることに注意してください
  - Edge は VP9 のコーデックに対応していないため注意してください
- [CHANGE] マルチストリームのデモ機能が Safari Technology Preview 34 に対応しました- Safari が対応しているコーデックは H.264 のみであることに注意してください
- [FIX] 無駄に出力されていた TURN-TCP-CLOSED メッセージの表示を停止しました
- [FIX] MESSAGE-OVERFLOWED の通知のみに変更しました
- [FIX] TURN-TCP で意図しない問題が起きた場合のエラーメッセージを追加しました


## 17.06.0

**リリース**: 2017-06-09
**対応 Chrome**: M59
**対応 Firefox**: 53
**対応 Edge**: 40.15063
**対応 Safari**: Technology Preview 32

### ハイライト

- 多くの機能がプレビュー版を卒業し、正式版になりました
- Safari Technology Preview 32 での動作を確認しました
- RTX 機能に対応しました
- クライアントの統計機能を取得する GetStats API を追加しました

### アップグレード

特に注意する点はありません

### 変更履歴

- [UPDATE] Chrome M59 に対応しました
- [UPDATE] マルチストリーム機能が正式版になりました
- [UPDATE] IPv6 対応が正式版になりました
- [UPDATE] TURN IPv6 が正式版になりました
- [UPDATE] TURN-TCP が正式版になりました
- [UPDATE] hide_origin_username 機能が正式版になりました
- [UPDATE] RTX 機能が正式版になりました
- [UPDATE] label 機能が正式版になりました
- [FIX] 壊れた STUN パケットが送られてきたときは破棄するようにしました
- [FIX] マルチストリーム配信中に通常配信が接続できてしまう問題を修正しました
- [FIX] 通常視聴接続中にマルチストリームが繋げてしまう問題を修正しました
- [FIX] 録画 API が正常に動作しない問題を修正しました
- [FIX] RTX を Chrome と Edge の両環境で正常に動作するようになりました- 今回のリリースで RTX デフォルトで有効にしてあります
  - 17.08 にて RTX を正式リリース予定です
- [CHANGE] StartForwardingRtp API を音声と映像の出力を分割するようにしました- port がなくなり audio_port と video_port の引数が追加しました
- [CHANGE] プレビュー機能の UI 機能を廃止しました
- [CHANGE] プレビュー機能の Upgrade / Downgrade API を廃止しました
- [UPDATE] Generic NACK の仕組みを改善しました
- [ADD] Safari Technology Preview 32 に対応しました- この機能はレビュー版です、 Safari 11 が出るタイミングで正式対応する予定です
  - デモ機能に確認用の up_safari.html と down_safari.html を用意しました
- [ADD] プレビュー機能としてクライアントの統計情報を取得する GetStats API を追加しました
- [ADD] 3gpp:video-orientation 拡張に対応しました- Chrome のみで使用できます
- [ADD] goog-remb オプションを sys.config に追加しました
- [ADD] transport-wide オプションを sys.config に追加しました

### 後方互換性のない変更

特にありません


## 17.04.6

**リリース**: 2017-05-23
**対応 Chrome**: M58
**対応 Firefox**: 53

### 変更履歴

- [FIX] マルチストリーム使用で音声のみが使用できなくなっている問題を修正しました


## 17.04.5

**リリース**: 2017-05-16
**対応 Chrome**: M58
**対応 Firefox**: 53

### 変更履歴

- [FIX] マルチストリーム使用時に Generic NACK が正常に動作しない問題を修正しました
- [FIX] マルチストリーム使用時に録画が正常に行われない問題を修正しました
- [FIX] 異常な STUN パケットが送られてきた場合に無視するように修正しました
- [FIX] StopForwardingRtp API が正常に動作しない問題を修正しました


## 17.04.1

**リリース**: 2017-05-08
**対応 Chrome**: M58
**対応 Firefox**: 53

### 変更履歴

- [FIX] StopRecording API 実行時に録画中の配信が archives に含まれない問題を修正しました


## 17.04.0

**リリース**: 2017-04-28
**対応 Chrome**: M58
**対応 Firefox**: 53

### 注意

Firefox 53 でマルチストリーム使用時に SDP レベルでのビットレートコントロールがおかしくなる問題が入っています

- [1332031 - TIAS cancels bitrate limiting when additional m-sections appears](https://bugzilla.mozilla.org/show_bug.cgi?id=1332031)
- [1342727 - TIAS issues with the webrtc49 update (FF53+)](https://bugzilla.mozilla.org/show_bug.cgi?id=1342727)

そのため現時点での Firefox ではマルチストリームを使用しないことをお勧めします。
今後、 Sora は RTCP レイヤーでのビットレートコントロールに対応していく予定です。

### ハイライト

- Windows 10 Creators Update の Edge に対応しました- Edge 側の制限と Sora が未対応な部分でいくつかの機能は使用できません
- アドレスの自動収集に対応しました- sys.config で明示的にアドレスを指定しなくても動作します
- IPv6 アドレスに対応しました- シグナリングや API では IPv6 を使用できません
- マルチストリームで視聴のみができるようになりました
- マルチストリームでビットレートが配信者の人数で分割することで 1 チャネルで最大 12 人までの配信が可能になりました
- ARM64 向けのパッケージの提供を開始しました

### 変更履歴

- [FIX] マルチストリームで VP9 を指定したとしても VP8 になっていたのを修正しました
- [FIX] TURN-TCP 使用時に UDP と TCP 両方にパケットを送信していたのを修正しました
- [CHANGE] ライセンスで接続数が越えた場合は `EXCEED-MAX-CONNECTIONS` がクライアントに送られるようになりました
- [CHANGE] 改善に向けて RTX 機能を一時的に無効にしました
- [CHANGE] 設定ファイルの allow_anonymous を廃止しました- auth_webhook_url を有効にしないかぎり、すべての接続が成功するようになりました
- [CHANGE] 設定ファイルの ip_address を廃止しました- 新しく追加された ipv4_address を使用してください
- [CHANGE] シグリングで使用していた access_token を廃止しました- 17.02 で入った metadata を使用してください
- [CHANGE] 20151104 の StartRecording / StopRecording / ListRecording API を廃止しました- 今までは 400 が返っていましたが、今後は 404 が返ります
- [ADD] マイクロソフト Edge に対応しました- Edge 側の制限で動作させるためには多くの制限があります
  - マルチストリームは使用できません
  - Certificate Management API は使用できません
  - IPv6 アドレスは使用できません
  - IPv6 対応 TURN サーバーは使用できません
  - STUN サーバーは使用できません
  - 接続できない TURN サーバーは iceServers の urls に指定できません- そのため ipv4_address にはクライアントが接続可能な IPv4 アドレスを指定してください
  - Sora は今回のリリースで RTX を一時的に無効にしたため Generic NACK が使用できません
- [ADD] 使用可能な IP アドレスを自動で収集するようになりました- IP アドレスを設定ファイルに設定する必要がなくなりました
- [ADD] 設定ファイルに ipv4_address を追加しました
- [ADD] 設定ファイルに ipv6 を追加しました- シグナリングや API では IPv6 を使用できません
  - IPv6 を使用する場合は有効にしてください
  - デフォルトでは無効になっています
- [ADD] 設定ファイルに ipv6_address を追加しました- この機能を使用するには `ipv6` を `true` にする必要があります
- [ADD] TURN 機能が IPv6 アドレスに対応しました- 設定ファイルで ipv6 を有効にして、さらに IPv6 アドレスが指定または収集された場合に払い出されます
- [ADD] 認証の戻り値で candidate や TURN の url に使用する IP アドレスが指定可能になりました- ipv4_address と ipv6_address が指定できます
  - 設定ファイルの値を上書きします
- [ADD] Chrome でのマルチストリームで視聴のみを可能にする- マルチストリーム使用時に role: downstream を使用することで、視聴で専用のみが実現できます
- [ADD] マルチストリームで使用されるビットレートが配信者の人数分で分割されるようになりました- この機能を導入することで最大 12 人での同時配信が可能になりました
- [ADD] Chrome でのマルチストリームでビデオコーデックが指定できるようになりました
- [ADD] マルチストリームで Generic NACK の有無が有効になりました
- [ADD] ARM64 向けのパッケージを提供開始しました- 対応 OS は Ubuntu 16.04 のみです
- [ADD] 設定ファイルに label を追加しました- この機能はプレビュー機能です
  - 認証やイベントウェブフック通知時に含まれるサーバー固有の値を指定できます
- [ADD] 設定ファイルに hide_origin_username を追加しました- この機能はプレビュー機能です
  - SDP の offer 時に払い出される origin の username を "-" にすることができます
- [ADD] TURN の URL 払い出しに使用する FQDN を指定可能になりました- FQDN が優先されます
- [ADD] TURN-TLS の URL 払い出しに対応しました- TURN-TLS の TLS 部分の処理は nginx などで終端して貰う前提の機能です

### 後方互換性のない変更

- allow_anonymous を廃止しました- 認証を使用したい場合は auth_webhook_url を有効にしてください
- Sora 自身の IP アドレスをする ip_address を廃止しました- ipv4_address を使用してください
- シグナリングで使用していた access_token を廃止しました- metadata を使用していください
- 録画用の古い API の戻り値を 400 から 404 に変更しました


## 17.02.14

**リリース**: 2017-03-17
**対応 Chrome**: M57
**対応 Firefox**: 52

- [FIX] connection.updated の signaling_notify の判定が間違っていたのを修正しました
- [FIX] snapshot のタイマーが固定されないのを修正しました
- [CHANGE] connection_created_wait_timeout のデフォルト値を 30 秒に変更しました
- [CHANGE] connection_created_wait_timeout の最大値を 600 秒に変更しました
- [CHANGE] snapshot の最大時間を 10 秒に変更しました
- [ADD] 不安定な回線でも最初のキーフレームを受け取る可能性を上げる仕組みを追加しました
- [ADD] event_metadata を追加しました- 認証成功時の戻り値に event_metadata を含むことでイベントウェブフック通知時に含まれる metadata を指定できるようになりました
- [UPDATE] Chrome M57 に対応しました
- [UPDATE] Firefox 52 に対応しました


## 17.02.8

**リリース**: 2017-02-27
**対応 Chrome**: M56
**対応 Firefox**: 51

- [FIX] 音声のみの録音で生成される WebM が一部期待通りに生成されない問題を修正しました
- [FIX] Fingerpirnt のチェックを非同期で行うように修正しました- Answer が送られてくるのが遅くなった場合に証明書エラーになっていた問題に対応しました
- [CHANGE] デモ機能は Chrome の場合 M56 以上が必須になりました
- [UPDATE] Chrome M56 に対応しました
- [UPDATE] マルチストリームの性能を向上させました
- [UPDATE] シグナリング経由での通知機能を、認証ウェブフックの戻り値によりクライアント単位で有効/無効にできるようになりました
- [UPDATE] TURN-TCP の動作を安定化させました- Firefox での TURN-TCP も問題なく動作するようになりました
- [CHANGE] シグナリングの connect 時の access_token を 17.04 にて廃止します
- [ADD] Answer が 30 秒以内に送られてこない場合はエラーとする仕組みを追加しました- 今後 30 秒という値は sys.config の設定にて変更できるようになる予定です
- [ADD] シグナリングの connect 時の access_token の代わりに metadata を追加しました- access_token はオプション扱いで値が入ってこない場合、認証サーバーには null が入っていましたが、 metadata は入力しなければ項目自体が入ってきません
  - それ以外は特に変更は無く、 access_token 同様、どんな値でも入れることができます
- [ADD] H.264/Opus の WebM 形式での録画に対応しました
- [ADD] H.264 のみの WebM 形式での録画に対応しました
- [ADD] プレビュー機能として指定したチャネル ID の RTP を転送する API を追加しました- StartForwardingRtp/StopForwardingRtp API を追加し、指定した IP アドレスとポート番号に対して配信されてくる RTP をそのまま転送します
  - DTLS-SRTP の中身 (RTP) をそのまま送ります
  - RTCP は送信しません
- [ADD] プレビュー機能として RTX へ対応しました- デフォルトでは無効になっており、有効にするには sys.config にて `{rtx, true}` にする必要があります
  - RTX は [RFC4588](https://datatracker.ietf.org/doc/html/rfc4588) で定義されている機能で、再送制御機能です


## 17.01.5

**リリース**: 2017-02-07
**対応 Chrome**: M56
**対応 Firefox**: 51

- [FIX] イベントウェブフックの通知の一部が間違っていたのを修正しました


## 17.01.4

**リリース**: 2017-02-02
**対応 Chrome**: M56
**対応 Firefox**: 51

- [UPDATE] Chrome M56 に対応しました
- [FIX] 切断のウェブフックの通知タイプのスペルが間違っていたのを修正しました
- [FIX] マルチストリームの RTCP が正常にハンドリングするように修正しました


## 17.01.2

**リリース**: 2017-01-25
**対応 Chrome**: M55
**対応 Firefox**: 51

**2017 年のリリースからバージョン番号を変更しました**

- [UPDATE] Firefox 51 に対応しました
- [FIX] generic_nack を false にした場合はキャッシュを行わない用に修正しました
- [FIX] 接続判定に誤りがありライセンスの接続数よりも 1 本多く接続できるようになっていたのを修正しました
- [CHANGE] log/warning.log には warning のみを出力するようにしました
- [CHANGE] log/error.log には error のみを出力するようにしました
- [CHANGE] 認証ウェブフックの upstream_connections を channel_upstream_connections に変更しました
- [CHANGE] 認証ウェブフックの downstream_connections を channel_downstream_connections に変更しました
- [CHANGE] イベントウェブフックの upstream_connections を channel_upstream_connections に変更しました
- [CHANGE] イベントウェブフックの downstream_connections を channel_downstream_connections に変更しました
- [ADD] canvas を使用してカメラ映像とペイントを合成し配信する機能のデモを追加しました
- [ADD] イベントウェブフックに送受信の流量情報を追加しました- total_sent_bytes- そのクライアントが今までに送信したパケット(バイト)量です
  - total_received_bytes- そのクライアントが今までに受信したパケット(バイト)量です
- [ADD] **プレビュー版** としてTURN-TCP 機能を 追加しました- この機能は sys.config にて `{turn_tcp, true}` を指定することで有効になります- デフォルトは `{turn_tcp, false}` です
  - TURN-TCP で使用するポート番号は `{turn_tcp_port, 3478}` のように指定してください- デフォルトは 3478 ポートを使用します
- [ADD] **プレビュー版** としてシグナリング経由でのサーバー情報の通知機能を追加しました- この機能は sys.config にて `{signaling_notify, true}` を指定することで有効になります
- [UPDATE] RFC7983 に対応しました- [Multiplexing Scheme Updates for SRTP Extension for DTLS](https://datatracker.ietf.org/doc/html/rfc7983)


## 3.4.5

**リリース**: 2016-12-20
**対応 Chrome**: M55
**対応 Firefox**: 50

- [FIX] Chrome Canary M57 にて正常に通信ができない問題を修正しました
- [FIX] 接続数が多くなった場合、性能劣化が起きる問題を修正しました
- [UPDATE] CentOS 7.3 向けパッケージの提供を開始しました


## 3.4.1

**リリース**: 2016-11-30
**対応 Chrome**: M55
**対応 Firefox**: 50

- [UPDATE] Firefox 50 での動作を確認しました
- [UPDATE] Chrome M55 での動作を確認しました
- [ADD] 実験的にマルチストリームでの録画に対応しました- 一つのチャネルで複数の映像が流れた場合の録画にも対応しました
- [ADD] 認証レスポンスでオーディオとビデオのパラメータの上書きを可能にしました- allowed だけでなく audio や video を返せるようになりました
  - サーバー側でこのクライアントは VP9 コーデックで、ビットレートは 500 を指定するといったことが可能になります
- [ADD] 録画成功時、録画ファイルとは別に録画ファイルのメタ情報を JSON 形式で出力するようになりました- 録画ファイル名.json という形で出力されます
- [CHANGE] 録画機能 API が非同期になり、エラーメッセージが変更になりました- いくつかの録画機能向けの API が追加されました
- [CHANGE] 録画機能が StopRecording API を実行するか、有効期限が切れるまではそのチャネルで録画をするようになりました- このタイミングで recording.report を通知するようになりました、これはその間に録画されたファイルの情報を通知します
- [CHANGE] 録画機能のイベントウェブフック archive.finished が archive.available に変更しました- ファイルへの変換が終了したタイミングで今までは archive.finished を通知しておりましたが、今後は archive.available を通知します
- [CHANGE] archive.available の通知内容に情報を追加、変更しました- filepath を file_path に変更しました
  - 録画ファイル生成時間 created_at を ISO8601 から UNIX Time に変更しました
  - 録画開始時間 start_time (UNIX Time) を追加しました
  - 録画終了時間 stop_time (UNIX Time) を追加しました
  - メタデータファイルパス metadta_file_path を追加しました
  - メタデータファイル名 metadta_filename を追加しました
  - コーデック情報だけでなくビットレートや解像度なども出力するようにしました
- [CHANGE] イベントウェブフックの中に入ってくる時間の項目を created_at から timestmap に変更しました
- [FIX] TURN 機能が正常に動かない不具合があったのを修正しました
- [FIX] 映像保存時にパケロスが長期的に発生した場合に正常に映像が保存されない問題を修正しました
- [FIX] マルチストリームでビットレートやコーデックを指定できるよう修正しました- ただし PlanB の場合はコーデック指定は行えず、 VP8 のみ限定
- [FIX] UpgradeRole / DowngradeRole API のエラー処理を修正しました


## 3.3.4

**リリース**: 2016-10-28
**対応 Chrome**: M54
**対応 Firefox**: 49

- [ADD] デモ機能の有効無効を選択できる機能を追加しました- いままでデフォルトで有効であった、いろいろな機能を試すためのデモ機能を無効にできる仕組みを追加しました
  - sys.config で {demo, true} とすることで有効にすることができます
- [ADD] Generic NACK を有効かどうかを指定できる設定を追加しました- sys.config の generic_nack 項目にて指定できます。デフォルトで有効になっています。
- [ADD] 録画できる解像度の制限をなくしました- 解像度が HD や QVGA でも録画を可能にしました
- [UPDATE] Chrome M54 での動作を確認しました
- [UPDATE] 認証処理時にクライアントが指定した音声・映像・マルチストリームの情報を認証サーバーへ送るようにしました- 映像のビットレートやコーデックなどを認証条件に含めることができるようになりました
- [CHANGE] シグナリング時のエラー戻り値を JSON から文字列に変更しました- WebSocket の制限でエラー理由のメッセージサイズに制限があるため文字列へ変更しました
- [CHANGE] 認証ウェブフックの Reason がクライアントに送られる Reason に置き換わりました- エラー理由が JSON から文字列に切り替わったため認証サーバーから送った Reason がクライアントに送られます
- [CHANGE] 認証ウェブフックで認証失敗時に metadata を送れなくなりました- エラー理由が JSON から文字列に切り替わったため metadata を失敗時に送れなくなりました
- [CHANGE] 認証ウェブフックで認証失敗時の reason のサイズが最大で 100 バイトまでになりました- WebSocket の仕様に準拠するための制限です
- [CHANGE] マルチストリームのチャネル空間が通常と共有されるようになりました- multistream: false と multistream: true でのチャネル ID 空間が共有されます
  - multistream: false で使用しているチャネル ID は multistream: ture 使用できなくなりました
- [FIX] マルチストリームで PLI が一定状況で想定外の動作をする問題を修正しました
- [FIX] マルチストリームの Plan B で映像のみ、音声のみの順番で繋ぐと例外が発生する問題を修正しました- こちらは現時点で正常な動作は行えず、既知のバグとして問題解決に取り組んでおります
- [FIX] イベントフック通知の戻りのステータスコードが 200 を要求していたのを 200 番台で問題ないように修正しました
- [FIX] TURN 機能使用時の Nonce の動作を RFC 準拠に修正しました
- [FIX] TURN 機能使用時に CreatePermission が送られてきていない状態で Binding-Request を受け取った場合例外が発生する問題を修正しました


## 3.2.1

**リリース**: 2016-10-11
**対応 Chrome**: M53
**対応 Firefox**: 49

- [UPDATE] Firefox 49 での動作を確認しました- Firefox でも application_specific_maximum が使用できるようになりました
- [UPDATE] マルチストリーム(Unified Plan) で audio のみの配信に対応しました
- [UPDATE] マルチストリーム(Plan B) で audio のみの配信に対応しました
- [UPDATE] 組み込み UI を改善しました- クライアント単位の情報が見やすくなりました
  - TURN 関連の統計情報を追加しました
- [UPDATE] ストリーミング配信の安定性を向上させました- MPD を WebRTC 向けに調整することで、長時間の安定的な配信が可能になりました
- [UPDATE] 配信先を変更した場合の安定性を向上させました- 配信者を切り替えた場合に視聴者側の映像が不安定になりにくくなりました
- [UPDATE] WebRTC の接続が確立するまでのデフォルト許容時間を 10 秒に変更しました
- [UPDATE] パケット再送信用のキャッシュサイズを指定可能になりました- sys.config の generic_nack_cache_size にて指定できます
- [UPDATE] マルチストリームのサンプルファイルを統合しました- Chrome でも Firefox でも multistream.html にてご使用いただけます


## 3.1.0

**リリース**: 2016-09-14
**対応 Chrome**: M53
**対応 Firefox**: 48

- [UPDATE] Chrome M53 での動作を確認しました
- [CHANGE] "undefined" という channel_id は使用できなくなりました- undefined は channel_id が設定されずにエラーが発生した場合のログなどに使用されます
- [CHANGE] sys.config の認証 URL を auth_url から auth_webhook_url に変更しました
- [CHANGE] sys.config のウェブフック URL を webhook_url から event_webhook_url に変更しました
- [CHANGE] ウェブフックのログファイルを webhook.log から event_webhook_log に変更しました
- [CHANGE] 認証の判断を HTTP ステータスコードから戻りの JSON に変更しました- 今までは HTTP ステータスコード 200 を認証成功、それ以外を認証失敗としていましたが戻りの JSON で判断するように変更しました
  - ステータスコードは成功でも失敗でも 200 番台系である必要があります
  - 認証成功の場合は {"allowed": true} 認証失敗の場合は {"allowed": false, "reason": "failure reason"} を戻す必要があります
- [CHANGE] metadata の取り扱いを変更しました- auth_response_with_metadata という設定は削除されました
  - アプリケーション側が認証成功時の戻り JSON に {"metadata": "<JSON>"} を戻すことで metadata がクライアントまで送られるようになりました
  - "metadata" はそのままクライアントに "meatadata": "<JSON>" として送られるようになります
- [CHANGE] signaling.* という通知はなくなり connection.* という通知に変更しました- より扱いやすいタイミングへの通知に変更しました
  - 名前が変わっただけでなくタイミングも変わりました
- [UPDATE] イベントウェブフックで送られる値に access_token を含むようにしました
- [UPDATE] シグナリングのエラー通知を増やしました
- [CHANGE] type: notification を type: notify に変更しました- 実験的機能として提供中
- [FIX] シグナリング失敗時に role と channel_id が入らない問題を修正しました
- [UPDATE] PCMU 録音時にメモリを使用せず、一時的にディスクに書き込む仕組みを追加しました。- この機能により長時間の録音でもメモリを消費することがなくなりました
- [ADD] 組み込み UI を追加しました- 実験的機能として提供中
  - 各クライアントの統計情報を確認できるようになりました


## 3.0.2

**リリース**: 2016-09-06
**対応 Chrome**: M52
**対応 Firefox**: 48

- [FIX] 2016 年 9 月 6 日付の Chrome Canary M55 では、WebRTC 暗号部分が Google 独自の方式に非対応だったために Sora が動作しない問題を修正しました


## 3.0.0

**リリース**: 2016-08-31
**対応 Chrome**: M52
**対応 Firefox**: 48

- [CHANGE] WebRTC の通信が確立したタイミングのフック名を signaling.compileted に変更しました- transport.encrypted から singnaling.completed に変更しました
- [ADD] スナップショット機能を追加しました- 映像を受け取らず音声だけの場合に、映像のスナップショットをシグナリング経由で受け取る機能です
  - WebP という画像フォーマット形式で出力しています
  - 映像から無変換で画像を切り出しているため、映像コーデックが VP8 で Chrome でのみ表示できます
- [ADD] WebM-DASH ライブストリーミング機能を追加しました- この機能は実験的機能で 3.x で正式版をリリース予定です
  - WebRTC 経由で送られてきた映像を MPEG-DASH 形式に無変換でファイルを生成する仕組みです
  - この技術で CDN を使うことができるようになるため、 WebRTC では限界のあった配信数を大幅に増やすことができます
  - 遅延が 1 分以上発生します
- [ADD] 録画機能で音声だけの録音に対応しました- 今までは映像または映像と音声の組み合わせのみでしたが、今後は音声のみでも録音できるようになりました
- [ADD] 音声コーデックに PCMU を選択できるようになりました
- [ADD] PCMU を録音できるようになりました- wav ファイルを出力します
  - 現時点ではオンメモリでの保存のため、メモリを消費します
  - 3.x でディスク書き込みに対応予定です
- [ADD] 配信者が映像で使用可能な最大ビットレートを指定できるようになりました- リリース時点では Chrome のみで、Firefox では 2016 年 9 月にリリース予定の Firefox 49 から使用できます
- [ADD] Chrome でマルチストリーム機能が使用可能になりました- この機能は実験的機能で 3.x で正式版をリリース予定です
- [FIX] Firefox で Generic NACK が有効になっていなかったのを修正しました
- [FIX] 音声と映像が出力されない場合のエラーを修正しました


## 2.6.0

**リリース**: 2016-07-15
**対応 Chrome**: M51
**対応 Firefox**: 47

- [UPDATE] TURN の NONCE が古い場合は 438 を返すように変更しました
- [FIX] TURN 機能がマルチストリーム使用時にも使えるようになりました
- [ADD] Push API を追加しました- PushChannel API- 特定のチャネル全員にメッセージを配信します
  - PushClient API- 特定のクライアントにメッセージを配信します
  - PushUpstream API- 配信者に対してメッセージを配信します
  - PushDownstream API- 視聴者全員に対してメッセージを配信します


## 2.5.0

**リリース**: 2016-07-06
**対応 Chrome**: M51
**対応 Firefox**: 47

- [UPDATE] VP8/VP9 においてキーフレームからの開始を強制するようにしました
- [UPDATE] SDP の情報が不足していた場合にシグナリング経由でエラーを通知するた機能を追加しました
- [ADD] ベータ機能として type: notification を追加しました
- [ADD] 視聴者側からの RTCP-RR における RTPFB の TMMBN に対応しました
- [FIX] たまに視聴者に接続開始から数十秒配信がされなくなる問題を修正しました
- [ADD] シグナリングを使ってチャネル接続クライアントにメッセージを送る type: broadcast を追加しました


## 2.4.0

**日時**: 2016-06-24
**対応 Chrome**: M51
**対応 Firefox**: 47

**CPU リソースの消費を抑えるなど全体的なパフォーマンスが向上しました**

- [CHANGE] api_port の sys.config に設定されている初期の値を 6000 から 3000 に変更しました
- [ADD] ブラウザからクロスドメインでの HTTP API が使えるようになる api_cors_origin という設定を追加しました
- [ADD] 視聴者参加時に視聴者を配信者から視聴者へ戻す API を追加しました- DowngradeRole API を使うことで配信者を視聴者に戻すことができるようになります
- [ADD] 組み込み TURN 機能を追加しました
- [ADD] ベータ機能としてネットワークライセンス認証の仕組みを追加しました
- [FIX] 配信者側のカメラ切り替えをしたとしても視聴者側が停止しない仕組みを追加しました


## 2.3.0

**日時**: 2016-06-08
**対応 Chrome**: M51
**対応 Firefox**: 47

- [ADD] 録画時に一時ファイルを作成して録画するように変更しました- 録画ファイルの一時的置き場を指定する archive_tmp_dir 設定が追加されました
  - ディスク容量のあくかぎり、長時間の録画が可能になりました
- [CHANGE] 録画ディレクトリ指定の設定名が archive_filepath から archive_dir に変更しました- **設定ファイルの互換性が無くなりました**
- [UPDATE] RTCP-RR で戻す統計情報が RFC に準拠しました
- [ADD] 実験的機能としてマルチストリームを使った視聴者参加機能を追加しました- 視聴者に対して API 経由で配信者に切り替えを行えます


## 2.2.0

**日時**: 2016-05-30
**対応 Chrome**: M51
**対応 Firefox**: 46

- [ADD] ビデオコーデックで VP9 形式の録画機能を追加しました
- [CHANGE] archive.finished フック内のパラメータを codec_type から codec_name に変更しました
- [CHANGE] ListRecording API 内のパラメータを codec_type から codec_name に変更しました
- [UPDATE] 視聴者が指定したメディアのみを受け取れるようになりました


## 2.1.0

**日時**: 2016-05-18
**対応 Chrome**: M50
**対応 Firefox**: 46

- [ADD] 録画失敗時のフック archive.failed を追加しました
- [CHANGE] マルチストリーム周りの動作を変更しました- すべてをマルチストリームベースにするための仕組みを少しずついれています詳細についてはお問い合わせください


## 2.0.0

**日時**: 2016-05-02
**対応 Chrome**: M50
**対応 Firefox**: 46

**既存の API との互換性が無くなりました**

- [CHANGE] Stream API が無くなり Webhook に変更しました
- [CHANGE] Action API が通常の API に名前を変更しました
- [CHANGE] すべての JSON のキーに使用する形式を camelCase から snake_case に変更しました
- [ADD] 配信側のコーデックを指定できるようにしました
- [ADD] 無変換での VP8 コーデックと Opus に対応した録画機能を追加しました


## 1.2.0

**日時**: 2016-03-16
**対応 Chrome**: M49
**対応 Firefox**: 45

- [FIX] 視聴時に UDP で異常が発生した場合、シグナリング部分を正常終了するようにしました
- [ADD] 認証成功時と失敗時にあいてから送られてきた JSON を metadata: として戻す機能を追加しました
- [ADD] Generic NACK に対応しました
- [BETA] 実験的に配信側のコーデックを指定できるようにしました
- [BETA] 実験的に VP8 コーデックに対応した録画機能を追加しました


## 1.1.4

**日時**: 2016-03-14
**対応 Chrome**: M49
**対応 Firefox**: 45

- [FIX] candidate が Answer 到着前に来た場合、保留しておいて Answer 到着時に最優先で返す対応を追加しました
- [FIX] Event API で渡す JSON が sanke_case になっているのを camelCase に修正しました


## 1.1.0

**日時**: 2016-02-09
**対応 Chrome**: M48
**対応 Firefox**: 44

- [BETA] 実験的に Firefox 44 以降の Multistream 対応に対応しました
- [ADD] RTCP-RR の動的処理を行うように変更しました
- [UPDATE] CentOS 7.1 へのパッケージを提供開始しました
- [CHANGE] DTLS 1.2 のみの対応に変更しました- Chrome は M48 から DTLS 1.2 に対応しました
- [CHANGE] 使用する暗号方式を ECDHE-ECDSA-AES-GCM のみの対応に変更しました


## 1.0.1

**日時**: 2015-12-16
**対応 Chrome**: M47
**対応 Firefox**: 43

- [FIX] connect upstream 時の Offer SDP ログを保存し忘れていたのを修正しました
- [FIX] elasped time を 30 秒から 60 秒に変更しました


## 1.0.0

**対応 Chrome**: M47
**対応 Firefox**: 43
