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

## 概要

WebRTC API の仕様に参考にしてきた `audio` と `video` の入れ子である JSON 構造を廃止し、フラット化した構造を採用します。

> **重要**
>
> この設定はウェブフックのみでシグナリング接続時の audio/video の構造は変更しません。
> 今後は変更するかもしれませんが、クライアント側を破壊的変更することになるため、
> もし変更する場合でもかなり時間をかけて変更していきます。

## 理由

一つの項目に複数の型が存在する仕様は取り扱いがややこしくなると判断したためです。

## 設定

`sora.conf` にて [legacy_webhook_audio_video_json_structure](SORA_CONF.html#3be597) を `false` にすることで、ウェブフックの audio と video の JSON 構造がフラット化します。

この設定は 2023 年 6 月リリース予定の Sora にてデフォルトを `false` にし、2023 年 12 月リリース予定の Sora にて廃止します。

詳細は [sora.conf の legacy_webhook_audio_video_json_structure の廃止](DEPRECATED.html#a7613b) をご確認ください。

## ウェブフックリクエスト audio / video

### audio

- `{"audio": false}` は変わりません
- `{"audio": {"codec_type": "OPUS"}}` は `{"audio": true, "audio_codec_type": "OPUS"}` へフラット化します
- `{"audio": {"bit_rate": 32}}` は `{"audio": true, "audio_bit_rate": 32}` へフラット化します

### video

- `{"video": false}` は変わりません
- `{"video": {"codec_type": "VP8"}}` は `{"video": true, "video_codec_type": "VP8"}` へフラット化します
- `{"video": {"bit_rate": 500}}` は `{"video": true, "video_bit_rate": 500}` へフラット化します

## 認証ウェブフック成功時 audio / video

認証ウェブフック成功時の戻り値に指定する `audio` と `video` の指定もフラット化する必要があります。

### audio

- `{"audio": false}` は変わりません
- `{"audio": {"codec_type": "OPUS"}}` は `{"audio": true, "audio_codec_type": "OPUS"}` へフラット化して指定する必要があります
- `{"audio": {"bit_rate": 32}}` は `{"audio": true, "audio_bit_rate": 32}` へフラット化して指定する必要があります
- `{"audio": true, "audio_codec_type": "OPUS", "audio_opus_params": {"useinbandfec": true}}` のように `audio_opus_params` が指定可能になりました
- `{"audio": true, "audio_codec_type": "LYRA", "audio_lyra_params": {"version": "1.3.0"}}` のように `audio_lyra_params` が指定可能になりました

### video

- `{"video": false}` は変わりません
- `{"video": {"codec_type": "VP8"}}` は `{"video": true, "video_codec_type": "VP8"}` へフラット化して指定する必要があります
- `{"video": {"bit_rate": 500}}` は `{"video": true, "video_bit_rate": 500}` へフラット化して指定する必要があります

## 録画メタデータファイル audio / video

録画メタデータファイルも [legacy_webhook_audio_video_json_structure](SORA_CONF.html#3be597) を `true` にすることで、フラット化します。

フラット化の内容はウェブフック audio / video と同様です。

- `{"video": {"height": 1024}}` は `{"video": true, "video_height": 1024}` へフラット化します
- `{"video": {"width": 1024}}` は `{"video": true, "video_width": 1024}` へフラット化します
