В firefox я могу запросить видеопоток окна с помощью
navigator.mediaDevices.getUserMedia({
video: {
mediaSource: 'window',
},
})
Появится диалоговое окно:
Меня беспокоит только текущее окно. Есть ли способ указать в моем вызове getUserMedia
что я хотел бы только текущую вкладку (или окно)?
Я так не думаю...
То, что FF реализует здесь, пока не определено, но w3c работает над новым API, который позаботится о Screen Capture: MediaDevices.getDisplayMedia
.
Хотя это не то, что сделал Firefox, в этом документе есть четкий абзац о том, почему deviceId
не может и не будет работать над такими запросами:
Каждый потенциальный источник захвата обрабатывается этим API как дискретный источник медиа. Однако источники захвата экрана НЕ ДОЛЖНЫ перечисляться enumerateDevices, так как это будет показывать слишком много информации о хост-системе.
Поэтому источники захвата изображения не могут быть выбраны с помощью ограничения deviceId, поскольку это позволит приложениям влиять на выбор; set deviceId ограничение может привести к тому, что результирующий MediaStreamTrack станет чрезмерно ограниченным.
Итак, еще раз, даже если FF еще не реализует этот API, мы можем предположить, что они следуют этому же правилу для их текущей реализации по тем же причинам.
Однако, что, по-видимому, можно будет сделать, когда этот API оживет, следует использовать ограничение "browser"
вместо "window"
. Хотя спецификации не совсем ясны относительно того, что это точно ("поверхность экрана браузера или одно окно браузера"), я думаю, это будет ближе к тому, что вы хотите, чем "window"
, а кто-то даже спросил 2 дня назад для ограничение "tab"
, можем ли мы даже надеяться на ограничение "текущая вкладка"? Возможно, кому-то понадобится открыть проблему на странице w3c github.