如何用Chrome、Selenium和Python修改.y4m虚拟摄像头设备名称
解决Chrome虚拟摄像头显示文件路径为名称的问题
你的代码能正常加载y4m虚拟摄像头,但Chrome默认会把y4m文件的路径作为设备名称展示给网站,这是--use-file-for-fake-video-capture参数的默认行为,目前没有直接的命令行参数可以修改这个名称。可以通过以下方法解决:
推荐方案:使用Chrome扩展修改设备名称
通过编写轻量的Chrome扩展,注入脚本拦截浏览器的MediaDevices API返回结果,替换虚拟摄像头的名称。
步骤1:创建扩展文件
在本地新建一个文件夹(比如fake-cam-renamer),里面创建两个文件:
- manifest.json(扩展配置文件)
{ "manifest_version": 3, "name": "Fake Camera Renamer", "version": "1.0", "content_scripts": [ { "matches": ["<all_urls>"], "js": ["content.js"], "run_at": "document_start" } ] }
- content.js(注入页面的脚本)
// 重写enumerateDevices方法,替换虚拟摄像头名称 const originalEnum = navigator.mediaDevices.enumerateDevices; navigator.mediaDevices.enumerateDevices = async function() { const devices = await originalEnum.call(this); return devices.map(device => { // 匹配视频输入设备,且名称包含y4m路径的设备 if (device.kind === 'videoinput' && device.label.includes('.y4m')) { return { ...device, label: '我的虚拟摄像头' // 替换成你想要的自定义名称 }; } return device; }); };
步骤2:在Selenium中加载扩展
修改你的Python代码,添加加载扩展的参数:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager as cdm service = Service(cdm().install()) options = Options() options.add_argument("--use-fake-device-for-media-stream") options.add_argument("--use-file-for-fake-video-capture=fake_web_cam.y4m") # 加载扩展,替换为你本地的扩展文件夹绝对路径 options.add_argument(r"--load-extension=C:\your-path\fake-cam-renamer") driver = webdriver.Chrome(service=service, options=options)
注意事项
- 确保Chrome版本在88以上(支持Manifest V3)
- 若只需针对特定网站生效,修改
manifest.json中的matches字段,比如["https://your-target-site.com/*"] - 扩展文件夹路径必须写绝对路径,避免相对路径导致加载失败
内容的提问来源于stack exchange,提问作者Kh4lid MD
相关产品推荐
相关产品推荐

