【发布时间】:2020-02-18 22:45:05
【问题描述】:
我正在使用带有视频流输入(网络摄像头或手机摄像头)的 ZXing JS 条码扫描器库 https://github.com/zxing-js/library/,如下代码所示。
一般来说,当一个视频流刚刚开始时,如何给<video>添加一个事件监听器来做一个动作?(一个使用MediaDevices.getUserMedia视频流API的视频,从ZXing的decodeFromInputVideoDevice)?
const codeReader = new ZXing.BrowserQRCodeReader();
codeReader
.decodeFromInputVideoDevice(undefined, 'video') // uses the default input
.then(result => console.log(result.text)) // this happens when the barcode is found / recognized
.catch(err => console.error(err));
<script src="https://unpkg.com/@zxing/library@0.15.2/umd/index.min.js"></script>
<video id="video"></video>
注意:目前我使用setTimeout(..., 2000),当用户单击按钮开始播放视频时,但显然如果出现对话框“您是否要允许此网站使用摄像头设备?”,那么 2 秒是不够的。事件“VideoHasJustStarted”的监听器会更好。
编辑:
Here is a jsFiddle 显示问题:无法处理各种事件:started、devicechange。
【问题讨论】:
-
我猜想在播放视频时流“开始”?如果是这样,您是否尝试过
video.addEventListener('playing', function() {})监听器? developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/… -
@Oliver,我不是在“播放”视频,而是在使用视频流捕获(来自网络摄像头或智能手机摄像头)。这适用于这里吗?
标签: javascript video html5-video getusermedia mediadevices