Apple Safari の WebRTC について

概要

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

注意点

  • 音声が含まれているまたは音声のみの配信の場合 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

録画機能音ズレ問題

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

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

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

WebRTC Encoded Transform API が利用できる

Safari では WebRTC Encoded Transform API が利用できます。

重要

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

H.265 (HEVC)

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

Safari 18.0 Release Notes | Apple Developer Documentation

VP9 Profile 2

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

実験的機能

注意

SafariSafari Technology Preview (Safari TP) では実験的機能の挙動が異なります

WebRTC AV1 が利用できる

SafariSafari Technology Preview (Safari TP) 最新版では開発メニューで有効にすることで WebRTC AV1 が利用できます。

© Copyright 2024, Shiguredo Inc Created using Sphinx 8.1.3