console.lealog();

@leader22のWeb系に関する勉強めもブログですのだ

getUserMedia()で指定できるMediaTrackConstraintsのよもやま

Media Capture and Streams

この仕様書をだらーっと流し読みしたので、知らんかったことをメモ。

続きを読む

ChromeのMediaStreamTrackとvideo要素の組合せには罠がある話

WebRTC界隈で、

  • Chromeの`video.srcObject = stream`はバグってるから使っちゃダメ
  • 代わりに`video.src = URL.createObjectURL(stream)`を使え

という噂があって。

とはいっても、

などなど事情もあるのでそろそろ`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どうしでは再現しなくて、片側はChromeFirefoxの時だけっていう。

確認バージョン

続きを読む

2017年版 getUserMedia()で画面のストリームを取得する

間違ってたら教えてください。

続きを読む

Flowでコンストラクタをエクスポートするモジュールの型を定義する

こういうやつ。

import EventEmitter from 'events';

const ee = new EventEmitter(); // <- コレ

これはあくまで例で、Node標準の`events`のEventEmitterなら、Flowがビルトインで型情報を持ってるので困りません。
でも似たようなのを自分で書いたり、他のライブラリに型をつける場合に必要になるはず。

続きを読む