# Apple Safari の WebRTC について

## 概要

2025 年 12 月 時点で Safari 28.2 を使用して確認しています。

> **重要**
>
> Safari の利用者がいる場合は [Safari タイムスタンプバグに対するワークアラウンド](WORKAROUND.html#e73b7a) をご確認ください。

## 注意点

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

## iOS の Chrome や Firefox について

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

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

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

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

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

## 録画機能音ズレ問題

Safari や Safari Technology Preview では録画機能利用時に `replaceTrack` などを利用して `MediaStreamTrack` を削除し、
一定時間経過後に新しく追加した際、音声パケットに関連するタイムスタンプと NTP タイムスタンプが正しく出力されない問題あります。

この問題により Safari や Safari Technology Preview では録音/録画したファイルにて音ズレが発生してしまいます。

この問題はブラウザ側のバグであり、現在のところ回避策はありません。

## WebRTC Encoded Transform API が利用できる

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

## H.265 (HEVC)

Safari 18.0 から HEVC (H.265) がデフォルトで有効になりました。

[Safari 18.0 Release Notes | Apple Developer Documentation](https://developer.apple.com/documentation/safari-release-notes/safari-18-release-notes#Media)

## VP9 Profile 2

ドキュメントに記載はありませんが、Safari 18.0 より VP9 Profile 2 がデフォルトで有効になりました。

## 実験的機能

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

### WebRTC AV1

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


