3

有没有办法可以使用飞镖访问计算机上的网络摄像头。我已经尝试过文档并阅读了博客,但似乎以前没有人问过这个问题。

谢谢,肯尼斯

4

3 回答 3

4

访问 cam 不一定是 Dart 特定的问题,而是是否存在可通过 Dart 访问的相应 HTML5 API

MediaStreamLocalMediaStream可能是您正在寻找的。

于 2012-08-06T11:25:39.710 回答
0

我尝试了以下但没有成功:

VideoElement webcamVideo = query('#webcamVideo');
window.navigator.webkitGetUserMedia({'video': true}, (e) { 
    print(e);
    webcamVideo.src = new DOMURL().createObjectURL(e);
});

问题是在 Dart SDK 版本 10311 中,DOMURL 接口中明显缺少 createObjectURL(),尽管它在 _DOMURLImpl 中可用(编辑:作为静态方法)。

于 2012-08-07T21:29:06.483 回答
0

我认为这可能有助于使用 Flutter/Dart 访问网络摄像头

import 'package:flutter/material.dart';
import 'dart:html';
import 'dart:ui' as ui;

class WebCam extends StatefulWidget {
  const WebCam({Key? key}) : super(key: key);

  @override
  _WebCamState createState() => _WebCamState();
}

class _WebCamState extends State<WebCam> {
  // Webcam widget to insert into the tree
  late Widget _webcamWidget;
  // VideoElement
  late VideoElement _webcamVideoElement;
  @override
  void initState() {
    super.initState();
    // Create a video element which will be provided with stream source
    _webcamVideoElement = VideoElement();
    // Register an webcam
    // ignore: undefined_prefixed_name
    ui.platformViewRegistry.registerViewFactory(
        'webcamVideoElement', (int viewId) => _webcamVideoElement);
    // Create video widget
    _webcamWidget =
        HtmlElementView(key: UniqueKey(), viewType: 'webcamVideoElement');
    // Access the webcam stream
    window.navigator.getUserMedia(video: true).then((MediaStream stream) {
      _webcamVideoElement.srcObject = stream;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SingleChildScrollView(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Webcam MediaStream:',
                style: TextStyle(fontSize: 30, fontStyle: FontStyle.italic),
              ),
              Container(width: 750, height: 750, child: _webcamWidget),
            ],
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          print(_webcamVideoElement.srcObject!.active!);
          if (_webcamVideoElement.srcObject!.active!) {
            _webcamVideoElement.play();
          } else {
            _webcamVideoElement.pause();
          }
        },
        tooltip: 'Start stream, stop stream',
        child: Icon(Icons.play_circle),
      ),
    );
  }
}
于 2022-01-02T11:23:21.277 回答