getUserMedia 方法

  1. @SupportedBrowser(SupportedBrowser.CHROME)
Future<MediaStream> getUserMedia(
  1. {dynamic audio = false,
  2. dynamic video = false}
)

从本地计算机获取流(视频和或音频)。

使用 MediaStream.supported 检查当前平台是否支持此功能。参数 audiovideo 默认为 false(分别表示流不使用音频或视频)。

简单示例用法

window.navigator.getUserMedia(audio: true, video: true).then((stream) {
  var video = new VideoElement()
    ..autoplay = true
    ..src = Url.createObjectUrlFromStream(stream);
  document.body.append(video);
});

用户还可以传递 Map 到音频或视频参数以指定流的中必选和可选约束。不传递 Map 但传递 true 将提供具有音频或视频功能的 MediaStream,但没有任何额外约束。音频和视频的特定约束名称仍在变化,但截至本文撰写时,以下是一个提供更多约束的示例。

window.navigator.getUserMedia(
    audio: true,
    video: {'mandatory':
               { 'minAspectRatio': 1.333, 'maxAspectRatio': 1.334 },
            'optional':
               [{ 'minFrameRate': 60 },
                { 'maxWidth': 640 }]
});

另请参阅

实现

@SupportedBrowser(SupportedBrowser.CHROME)
Future<MediaStream> getUserMedia({audio = false, video = false}) {
  var completer = new Completer<MediaStream>();
  var options = {'audio': audio, 'video': video};
  _ensureGetUserMedia();
  this._getUserMedia(convertDartToNative_SerializedScriptValue(options),
      (stream) {
    completer.complete(stream);
  }, (error) {
    completer.completeError(error);
  });
  return completer.future;
}