相关文章推荐
冲动的八宝粥  ·  flinkcdc连接oracle的报错汇总 ...·  10 月前    · 
千杯不醉的甘蔗  ·  Python正在慢慢褪色 | 机器之心·  11 月前    · 
性感的香蕉  ·  Get exclusive jobs on ...·  1 年前    · 
腹黑的篮球  ·  Python制作复古地牢文字冒险游戏_pyt ...·  1 年前    · 
Code  ›  Chrome扩展- navigator.mediaDevices.getUserMedia()失败,返回NotAllowedError:由于关机而失败开发者社区
谷歌浏览器 alert mediarecorder
https://cloud.tencent.com/developer/ask/sof/1217609
鼻子大的红金鱼
1 年前
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
提问
问 Chrome扩展- navigator.mediaDevices.getUserMedia()失败,返回NotAllowedError:由于关机而失败
Stack Overflow用户
提问于 2020-03-20 22:53:54
EN

我正在尝试开发一个Chrome扩展来访问网络摄像头和录制视频,并在停止后下载它。

调用以下代码行时,扩展失败并出现错误:

navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then(handleSuccess).catch(function (err) {alert(err)});".

错误是:

 NotAllowedError: Failed due to shutdown

我在Mac上使用Chrome版本80.0.3987.132 (官方版本)(64位)。

我在这里做错了什么?我们不能通过分机访问设备摄像头吗?有什么建议吗?

示例代码如下:

manifest.json

{
  "manifest_version": 2,
  "name": "Video Capture",
  "version": "0.1",
  "browser_action": {
    "default_icon": "logo.png",
    "default_popup": "popup.html"
}

popup.html

<html>
    <title>Video Capture</title>
    <script src="videoCapture.js"></script>
  </head>
    <button id="start">Start</button>
    <button id="stop">Stop</button>
    <a id="download">Download</a>
  </body>
</html>

videoCapture.js

var shouldStop = false;
window.addEventListener('load', function showPopup() {
    alert("Extension started");
    startButton = document.getElementById('start');
    stopButton = document.getElementById('stop');
    downloadLink = document.getElementById('download');
    shouldStop = false;
    startButton.addEventListener('click', function() {
        if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
            alert("This browser does not support the API yet");
        alert("Media Devices Available..Starts recording.");
        var handleSuccess = function(stream) {
            alert("handling recording");
            const options = {mimeType: 'video/mp4'};
            const recordedChunks = [];
            const mediaRecorder = new MediaRecorder(stream);
            mediaRecorder.start(5000); //capture video for 5 seconds
            mediaRecorder.ondataavailable = function(e) {
                if (e.data.size > 0) {
                    recordedChunks.push(e.data);
                if(shouldStop === true && stopped === false) {
                    mediaRecorder.stop();
                    stopped = true;
                    stream.getTracks().forEach(function(track) {
                        track.stop();
            mediaRecorder.onstop = function() {
                downloadLink.href = URL.createObjectURL(new Blob(recordedChunks));
                var currentTimestamp = Date.now();
                downloadLink.download = 'recording-'+currentTimestamp+'.mp4';
                alert("Click Download Link to download captured video");
        navigator.mediaDevices.getUserMedia({ audio: false, video: true })
            .then(handleSuccess).catch(function (err) {alert(err)});
 
推荐文章
冲动的八宝粥  ·  flinkcdc连接oracle的报错汇总 - 贾彤 - 博客园
10 月前
千杯不醉的甘蔗  ·  Python正在慢慢褪色 | 机器之心
11 月前
性感的香蕉  ·  Get exclusive jobs on InCareer
1 年前
腹黑的篮球  ·  Python制作复古地牢文字冒险游戏_python冒险者游戏_CAE320的博客-CSDN博客
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号