# 古いリリースノート

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

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

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

**FIX**
: バグ修正


## 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.html#d3da2a) API をご利用ください。
- [ListChannelClients](OBSOLETE_API.html#a65eee) API を廃止しました- 今後は [ListChannelConnections](API.html#d388f3) API をご利用ください

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

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

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

- [ListConnections](API.html#d3da2a) API の戻り値に含まれる `connection_created_timestamp_sec` の項目名を `created_time` に変更、単位を秒からマイクロ秒に変更しております
- [ListChannelConnections](API.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.html#086a45) が有効になるように変更しました- `sora.conf` の `demo` は 2022 年 6 月のリリースにて廃止します
  - 詳細は [sora.conf の demo の廃止](OBSOLETE.html#12e7c9) をご確認ください
- [ADD] `sora.conf` に [devtools](SORA_CONF.html#086a45) を追加しました- デフォルトは `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](SORA_CONF.html#85718d) を追加しました- デフォルトは `true` です
- [ADD] セッションウェブフックリクエスト送信時の HTTP ヘッダーに `x-sora-session-webhook-type` を追加しました- ヘッダーの値は `type` の値が入ります
- [ADD] セッションウェブフックのログを出力する `log/session_webhook.log` を追加しました
- [ADD] セッションウェブフックの失敗ログを出力する `log/session_webhook_failed.log` を追加しました
- [ADD] [GetStatsReport](EXPERIMENTAL_API.html#bbbfca) API に合計セッション作成回数 `total_session_created` を追加しました
- [ADD] [GetStatsReport](EXPERIMENTAL_API.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](EXPERIMENTAL_API.html#17f3f5) API を追加しました- クラスターからの離脱は `bin/sora stop` で可能です
- [ADD] クラスターに参加しているノード一覧を取得するための [ListClusterNodes](EXPERIMENTAL_API.html#a70901) API を追加しました
- [ADD] クラスターに割り当てられているチャネル ID 一覧を取得するための [ListClusterChannels](EXPERIMENTAL_API.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](API.html#c5b527) API にて `metadata` を指定可能にしました- `metadata` は JSON オブジェクトである必要があります
  - `metadata` はオプションです
- [ADD] `recording.report` や録画メタデータファイルに [StartRecording](API.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 経由で外部へ出力する機能です。

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

- [ADD] `sora.conf` に統計エクスポーターの接続先を指定する [stats_collector_url](SORA_CONF.html#98b67f) を追加しました- `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](SORA_CONF.html#a047ec) を追加しました- デフォルトは `5` です
- [ADD] `sora.conf` に [stats_exporter_tls_fullchain_file](SORA_CONF.html#9f17b8) を追加しました
- [ADD] `sora.conf` に [stats_exporter_tls_privkey_file](SORA_CONF.html#20eda2) を追加しました
- [ADD] `sora.conf` に [stats_exporter_tls_verify_cacert_file](SORA_CONF.html#bcd961) を追加しました
- [ADD] 頻繁に送らない項目を定義しました- 1 h に 1 回送ります
  - codec / local-candidate / remote-candidate / certificate / peer-connection / track-stream

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

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

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

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

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

- [ADD] `sora.conf` に [ice_connection_state_disconnected_timeout](SORA_CONF.html#3a2e9b) を追加しました- デフォルトは `5 s` です
- [ADD] `sora.conf` に [ice_connection_state_failed_timeout](SORA_CONF.html#7484a4) を追加しました- デフォルトは `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](SORA_CONF.html#3a2e9b) にて変更可能です
- [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](SORA_CONF.html#7484a4) にて変更可能です

#### DataChannel 機能

- [CHANGE] 利用しない DataChannel を作成しない仕組みを追加しました- `sora.conf` の [signaling_notify](SORA_CONF.html#d88348) が無効の場合は `label: notify` の DataChannel は作成しません
  - `sora.conf` の [e2ee](SORA_CONF.html#3dddc6) が無効の場合は `label: e2ee` の DataChannel は作成しません
  - `sora.conf` の [user_agent_stats](SORA_CONF.html#b8b6ef) が無効の場合は `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](EXPERIMENTAL_API.html#f9a4fe) API を追加しました- [GetAllRemoteStats](OBSOLETE_API.html#3a6504) の代替 API です
- [ADD] [ListChannelUserAgentStats](EXPERIMENTAL_API.html#df496a) API を追加しました- [GetChannelRemoteStats](OBSOLETE_API.html#bbd252) の代替 API です
- [ADD] [GetUserAgentStats](EXPERIMENTAL_API.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` にスポットライトでフォーカスされた後、一定時間追い出されなくなる [default_spotlight_focus_min_interval](SPOTLIGHT.html#966f51) を追加しました- デフォルトは `2000 ms` です
- [FIX] スポットライト機能で複数人が音を出し続けていると頻繁にフォーカスが入れ替わる問題を修正しました- アンフォーカス後のフォーカスは、最低でも [default_spotlight_delayed_focus_interval](SPOTLIGHT.html#794eec) だけ待つようになりました
- [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` に [default_spotlight_delayed_focus](SPOTLIGHT.html#8b9a4e) を追加しました- デフォルトは `true`
- [ADD] アンフォーカス時にフォーカスを遅延させる時間を指定できるように、 `sora.conf` に [default_spotlight_delayed_focus_interval](SPOTLIGHT.html#794eec) を追加しました- デフォルトは `2000 ms`

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

**実験的機能**

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

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

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

**実験的機能**

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

- [ADD] 音がない場合に自動でアンフォーカスするかどうかを指定できるように、 `sora.conf` に [default_spotlight_auto_unfocus](SPOTLIGHT.html#9db9f6) を追加しました- デフォルトは `true`
- [ADD] 自動でアンフォーカスする無音時間を指定できるように、 `sora.conf` に [default_spotlight_auto_unfocus_interval](SPOTLIGHT.html#4636fe) を追加しました- デフォルトは `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](SORA_CONF.html#6745fc) を追加しました- 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 ファイルを指定可能になります
  - 詳細は [映像のエンコーディングパラメータのカスタマイズ](SIMULCAST.html#03a03b) をご確認ください
- [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` 時のみ利用されます
  - 詳細は [スポットライト利用時の映像のエンコーディングパラメータのカスタマイズ](SPOTLIGHT.html#65404b) をご確認ください
- [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 設定の有効化](E2EE.html#b4bce8) をご確認ください

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

- [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](OBSOLETE_API.html#d3da2a) API をご確認ください
- [ADD] 新しく `ListChannelConnections API` を追加しました- 指定したチャネルの接続リストが返ってきます
  - 詳しくは [ListChannelConnections](API.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.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` API に `total_connection_created` の項目を追加しました
- [ADD] `GetStatsReport` API に `total_connection_updated` の項目を追加しました
- [ADD] `GetStatsReport` API に `total_connection_destoryed` の項目を追加しました
- [FIX] `GetStatsReport` API の `total_turn_udp_connections` の値が反映されない問題を修正しました
- [FIX] `GetStatsReport` 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] マルチストリーム利用時に視聴側から送られてきた I フレーム要求を正常に処理できていない問題を修正しました
- [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 に配信側が不安定になった際、 I フレーム要求(PLI)を送った回数を追加しました- total_pli_trigger- 再送要求に限界がきて I フレーム要求を送った回数
- [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- 再送要求に限界がきて I フレーム要求 (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.html#4fa79a) をご確認ください
  - この機能は配信者の人数で映像のビットレートを分割する機能です
  - デフォルトで有効になっています- `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 や機能を追加しました
- I フレームの欠損時に再送なしで回復できる前方誤り訂正機能(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 は I フレーム(全画面フレーム)が欠損した場合に再送無しで欠損を回復する仕組みです


## 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 で指定できるようにしました- 配信側への I フレーム要求の間隔を指定できるようになりました
  - 指定する場合は 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
