# Apple Safari の WebRTC について

## 概要

2023 年 6 月時点で Safari 16.4 を使用して確認しています。

## 注意点

- 音声が含まれているまたは音声のみの配信の場合 iOS の Safari では自動再生されません- これは iOS の Safari の仕様のため、今のところ回避の方法はありません
  - macOS の Safari の場合も設定を有効にしないと同様です
- Certificate Management API に非対応です- ECDSA P256 使えません
- onaddstream ではなく ontrack を利用してください
- 映像コーデック VP9 は対応していますが、古い iPhone では動作しなかったりします
- getUserMedia を利用するには HTTPS が必須です- 開発モードで HTTPS 必須を無効にできます

## iOS の Chrome や Firefox について

iOS の Chrome や Firefox は WKWebView を利用しています。 WKWebView は iOS 14.3 にて getUserMedia に対応しました。

## iOS Safari で画面共有について

iOS Safari には画面共有用の getDisplayMedia API が実装されていません。
そのため、画面共有を利用するにはネイティブアプリケーションを利用する必要があります。

2023 年 6 月時点ですべてのモバイルブラウザが getDisplayMedia API には対応していません。

[MediaDevices.getDisplayMedia() - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#browser_compatibility)

## WebRTC Encoded Transform API が利用可能

Safari では [WebRTC Encoded Transform](https://www.w3.org/TR/webrtc-encoded-transform/) API が利用できます。

> **重要**
>
> Chrome に実装されているのは WebRTC Encoded Transform API の古いバージョンである Insertable Streams API です。
> そのため WebRTC Encoded Transform に関しては Safari が最先端となります。

## 実験的機能

> **注意**
>
> [Safari](https://www.apple.com/jp/safari/) や [Safari Technology Preview (Safari TP)](https://developer.apple.com/safari/technology-preview/) では実験的機能の挙動が異なります

### H.265 が利用可能

[Safari](https://www.apple.com/jp/safari/) や [Safari Technology Preview (Safari TP)](https://developer.apple.com/safari/technology-preview/) 最新版では開発メニューで有効にすることで H.265 が利用できます。

### WebRTC AV1 が利用可能

[Safari](https://www.apple.com/jp/safari/) や [Safari Technology Preview (Safari TP)](https://developer.apple.com/safari/technology-preview/) 最新版では開発メニューで有効にすることで WebRTC AV1 が利用できます。

### VP9 Profile 2 が利用可能

[Safari](https://www.apple.com/jp/safari/) や [Safari Technology Preview (Safari TP)](https://developer.apple.com/safari/technology-preview/) 最新版では開発メニューで有効にすることで VP9 Profile 2 が利用できます。


