Upgrade to Pro — share decks privately, control downloads, hide ads and more …

あなたのサービスを最強にするためのMediaDevices

sublimer
December 15, 2023

 あなたのサービスを最強にするためのMediaDevices

WebRTCを用いてWeb会議サービスなどを開発する際に、MediaDevicesを活用してより良いサービスを作るためのtipsを紹介します。

WebRTC Meetup Tokyo #26の発表資料です。
https://webrtcmeetup.connpass.com/event/301967/

sublimer

December 15, 2023
Tweet

More Decks by sublimer

Other Decks in Programming

Transcript

  1. 本日お話すること・しないこと • お話すること ◦ MediaDevicesの概要 ◦ MediaDevicesの実用的な使い方の紹介 • お話しないこと ◦

    Reactコンポーネントライブラリの作り方 ◦ WebRTCを使ったサービスの作り方 • 今日のゴール ◦ WebRTCを使ったサービスを作るときに、 UXを向上させるためのポイントを抑える
  2. MediaDevicesとは • WebRTCで、JavaScriptからカメラやマイクにアクセスする際に使うAPI • (たぶん)一番有名なのはgetUserMedia() • 他にも、getDisplayMedia()[1] やenumerateDevices()[2] といったメソッドがある •

    devicechange[3] イベントを拾えば、デバイスの接続・切断を検知できる ”MediaDevices インターフェイスは、カメラやマイク、さらに画面共有などの接続されたメディア入力機器へのアクセスを提供します。 要するに、メディアデータのソースであるハードウェアにアクセスすることができるようになります。” https://developer.mozilla.org/ja/docs/Web/API/MediaDevices [1]. https://developer.mozilla.org/ja/docs/Web/API/MediaDevices/getDisplayMedia [2]. https://developer.mozilla.org/ja/docs/Web/API/MediaDevices/enumerateDevices [3]. https://developer.mozilla.org/ja/docs/Web/API/MediaDevices/devicechange_event
  3. • これを使うと何が嬉しいのかというと、デバイスの選択機能を実装できる • 複数のカメラ・マイクが接続されていたり、音声を特定のスピーカーから出力したい 場合は、enumerateDevices()を介して取得したdeviceIdを使う必要がある • getUserMedia()の引数(MediaTrackConstraints[1] )でdeviceIdを指定すると、その デバイスからメディアを取得する •

    HTMLMediaElementのsetSinkId()[2] にdeviceIdを渡すと、そのデバイスからメディ アが再生される • deviceIdを指定しないと、ブラウザのデフォルトのデバイスが使われるため、意図し ていないメディアが流れたりしてしまう • 利用するデバイスを設定可能にして、サービスのUXを高めましょう!! enumerateDevices()を使う [1]. https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints [2]. https://developer.mozilla.org/ja/docs/Web/API/HTMLMediaElement/setSinkId