Google Canary - на Macbook Air OSX 10.9.4 выдает ошибку

1

Является ли это ошибкой в ​​Mac или Canary?

Мне нужно использовать захват экрана через Google Canary, который работал ранее в старых старых версиях.

Но поскольку они выпускают Canary M37 или M39, он больше не работает. Неужели моя команда --enable-usermedia-screen-capture недействительна, как я ее выполняю?

$ alias canary="open /Applications/Google\ Chrome\ Canary.app/ --args --enable-usermedia-screen-capturing"
$ canary

Теперь, когда я пытаюсь запустить захват экрана (который работал в старых версиях), это дало мне ошибку:

getUserMedia error:  NavigatorUserMediaError {constraintName: "", message: "", name: "InvalidStateError"}

код:

function start() {
  console.log("Requesting local stream");
  btn1.disabled = true;
  var video_constraints = { 
    audio: false,
    video: {
      mandatory: {
        chromeMediaSource: 'screen',
        maxWidth: 1024,
        maxHeight: 768,
        minWidth:800,
        minHeight:400,
        minFrameRate: 1,
        maxFrameRate: 2,
        //minAspectRatio: 1.333, maxAspectRatio: 1.334,
      }
    }
  };

  navigator.webkitGetUserMedia(video_constraints, function(stream){
    console.log("Received local stream");
    vid1.src = webkitURL.createObjectURL(stream);
    localstream = stream;


  }, function(e){

    console.log("getUserMedia error: ", e);
  });
}  

EDIT:

<html>
<head>
<style>
  body {
    background: white;
    display: -webkit-flex;
    -webkit-justify-content: center;
    -webkit-align-items: center;
    -webkit-flex-direction: column;
  }
  video {
    width: 640px;
    height: 480px;
    border: 1px solid #e2e2e2;
    box-shadow: 0 1px 1px rgba(0,0,0,0.2);
  }
</style>
</head>
<body>
  <video id="video" autoplay></video>
  <p><button id="start">Start</button><button id="cancel">Cancel</button></p>
  <script>
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

function gotStream(stream) {
  console.log("Received local stream");
  var video = document.querySelector("video");
  video.src = URL.createObjectURL(stream);
  localstream = stream;
  stream.onended = function() { console.log("Ended"); };
}

function getUserMediaError() {
  console.log("getUserMedia() failed.");
}

function onAccessApproved(id) {
  if (!id) {
    console.log("Access rejected.");
    return;
  }
  navigator.webkitGetUserMedia({
      audio:false,
      video: { mandatory: { chromeMediaSource: "desktop",
                            chromeMediaSourceId: id } }
  }, gotStream, getUserMediaError);
}

var pending_request_id = null;

document.querySelector('#start').addEventListener('click', function(e) {
  pending_request_id = chrome.desktopCapture.chooseDesktopMedia(
      ["screen", "window"], onAccessApproved);
});

document.querySelector('#cancel').addEventListener('click', function(e) {
  if (pending_request_id != null) {
    chrome.desktopCapture.cancelChooseDesktopMedia(pending_request_id);
  }
});

  </script>
</body>
</html>
  • 0
    Также попытался --usermedia-screen-capturing, но все getUserMedia error: NavigatorUserMediaErrorconstraintName: ""message: ""name: "InvalidStateError"__proto__: NavigatorUserMediaError
Теги:
macos
webrtc
google-chrome

3 ответа

1
Лучший ответ

Шаг 1 - загрузите готовый торт, чтобы начать

https://developer.chrome.com/extensions/examples/api/desktopCapture.zip

Шаг 2 - RTFM

Load the extension
Extensions that you download from the Chrome Web Store are packaged up as .crx files, which is great for distribution, but not so great for development. Recognizing this, Chrome gives you a quick way of loading up your working directory for testing. Let do that now.

Visit chrome://extensions in your browser (or open up the Chrome menu by clicking the icon to the far right of the Omnibox:  The menu icon is three horizontal bars.. and select Extensions under the Tools menu to get to the same place).

Ensure that the Developer mode checkbox in the top right-hand corner is checked.

Click Load unpacked extension… to pop up a file-selection dialog.

Navigate to the directory in which your extension files live, and select it.

Alternatively, you can drag and drop the directory where your extension files live onto chrome://extensions in your browser to load it.

If the extension is valid, it'll be loaded up and active right away! If it invalid, an error message will be displayed at the top of the page. Correct the error, and try again.

Шаг 3 - Запустите приложение

Изображение 174551Изображение 174551

EDIT: Ссылки:

https://developer.chrome.com/extensions/manifest#web_accessible_resources

qaru.site/questions/1545813/...

qaru.site/questions/1545813/...

5

В новых версиях Chrome этот тип захвата экрана устарел, и я считаю, что он удален.

Это началось с Chrome M36 +.

Новый API DesktopCapture намного лучше и дает больший диапазон возможностей.

EDIT:

Новый API доступен только в том случае, если он используется через расширение. Команда Chrome заявляет, что это было изменено по соображениям безопасности. Возможно, в будущем он будет перенесен обратно, чтобы не требовать расширения, которое будет создано, но на данный момент оно недоступно непосредственно на странице.

  • 0
    Я получаю сообщение об ошибке: не удается прочитать свойство 'ChooseDesktopMedia неопределенного при попытке вашего предложения в M39: pending_request_id = chrome.desktopCapture.chooseDesktopMedia (["screen", "window"], onAccessApproved);
  • 0
    Тогда это вполне может быть ошибкой, если ни один из них сейчас не работает в Chrome Canary для OSX ... Есть ли еще флаг enable-usermedia-screen-capture в Chrome?
Показать ещё 7 комментариев
1

В Firefox теперь также есть экран/окно/etc. Пока что по тем же причинам, что и в Chrome, мы включили доступ к функции за белым списком (хотя расширение также может расширить белый список, пока мы еще не прототипировали его).

См. http://mozilla.github.io/webrtc-landing/gum_test.html (в Firefox 33 или более поздней версии - в настоящее время эта бета-версия, никакая попытка polyfill не была выполнена там, страница тестирования).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню