WebRTC Meetup Tokyo #16 に行ってきたメモ #webrtcjp
ChromeのMediaStreamTrackとvideo要素の組合せには罠がある話
WebRTC界隈で、
- Chromeの`video.srcObject = stream`はバグってるから使っちゃダメ
- 代わりに`video.src = URL.createObjectURL(stream)`を使え
という噂があって。
とはいっても、
- Safariでは`URL.createObjectURL(stream)`がエラーになる
- URL.createObjectURL(stream) が廃止予定となりました | Firefox サイト互換性情報
などなど事情もあるのでそろそろ`srcObject`だけ使いたい!
そのためにもどういうケースでバグってるとか、この噂の真意を確かめたいなーと思って調べてたのが事の発端。
Safari TPのWebRTCでaddTransceiver('audio').setDirection('recvonly')するとMediaStreamがautoplayされない問題
タイトルに収まらんw
SafariのWebRTCは新しめの仕様なので、`createOffer()`にオプションを渡して`recvonly`にする方法が使えない。
pc.createOffer({ offerToReceiveAudio: true, offerToReceiveVideo: true, })
こういうやつ。
なので、代わりに、
pc.addTransceiver('audio').setDirection('recvonly'); pc.addTransceiver('video').setDirection('recvonly'); // からの pc.createOffer();
とする必要がある。
だがしかし、こうやって開始したP2Pで相手のストリームを受け取ると、`video`に`autoplay`を指定していても再生が開始されないという謎の挙動を踏みましたというメモです。
しかもSafariどうしでは再現しなくて、片側はChromeかFirefoxの時だけっていう・・。
続きを読む確認バージョン