您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Forcefully chose a specific webrtc input/output audio/video device
当前为
// ==UserScript== // @name WebRTC media source switcher // @namespace https://daniil.it // @version 0.1.3 // @description Forcefully chose a specific webrtc input/output audio/video device // @author Daniil Gentili <[email protected]> // @match https://*/* // @grant none // ==/UserScript== (function() { 'use strict'; var hidden = { enumerateDevices: navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices), getUserMedia: navigator.mediaDevices.getUserMedia, } navigator.mediaDevices.getUserMedia = constraints => hidden.getUserMedia({audio: true, video: true}).then(() => navigator.mediaDevices.enumerateDevices().then(devices => { devices.forEach(function(device) { if (device.kind == "videoinput" && constraints.video) { if (constraints.video === true) constraints.video = {} constraints.video.deviceId = {exact: device.deviceId} } else if (device.kind == "audioinput" && constraints.audio) { if (constraints.audio === true) constraints.audio = {} constraints.audio.deviceId = {exact: device.deviceId} } }) console.log(constraints) return hidden.getUserMedia(constraints) }) ) navigator.mediaDevices.enumerateDevices = () => hidden.enumerateDevices().then(res => { alert("Called enumerateDevices"); if (window.newRes) { return window.newRes; } else { window.newRes = []; } var temp = {}; var tempLabels = {}; for (var i = 0; i < res.length; i++) { if (!temp[res[i].kind]) { temp[res[i].kind] = []; tempLabels[res[i].kind] = "Choose a "+res[i].kind+" device:\n"; } temp[res[i].kind].push(res[i]) tempLabels[res[i].kind] += temp[res[i].kind].length+": "+res[i].label+"\n" } for (let [key, value] of Object.entries(tempLabels)) { var choice = prompt(value); window.newRes.push(temp[key][choice-1]); } return window.newRes; }) /* for (let [key, value] of Object.entries(navigator.mediaDevices)) { navigator.mediaDevices[`__${key}`] = value; navigator.mediaDevices[key] = () => { alert(`Called ${key}`); return navigator.mediaDevices[`__${key}`](...arguments); } }*/ })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址