火狐浏览器画中画多窗口教程:同时播放多个视频的技巧
火狐浏览器默认限制只能开启一个画中画窗口,这对需要多屏监控的用户来说不甚友好。要同时播放多个视频,关键在于调整一项配置:将 media.videocontrols.picture-in-picture.allow-multiple 设置为 true。其他绕弯子的方法本质上只是辅助手段。
修改 about:config 启用多实例 PiP
这是最直接、底层的解决方案。Firefox 89+ 版本已内置该开关,但默认关闭,导致每次触发 PiP 时新窗口直接覆盖旧窗口。
- 地址栏输入
about:config,点击“接受风险并继续” - 搜索
media.videocontrols.picture-in-picture.allow-multiple - 双击该条目,将值从
false改为true - 无需重启浏览器,改动即时生效;但已存在的单个 PiP 窗口不会自动分割成多个,需要重新触发 PiP 操作
注意:该设置仅控制“是否允许并发多 PiP”,无法解决网站禁用 API 或 video 元素未正确暴露的问题。
确保多 PiP 窗口稳定共存的操作细节
即使配置项已开启,第二个 PiP 仍可能覆盖第一个——这种情况常见的原因是浏览器误判为“同一上下文的请求”。
- 第一个视频进入 PiP 后,关键步骤是解除其聚焦状态:点击其他标签页或桌面空白区域,使其失去 DOM 焦点
- 第二个视频必须在独立标签页中播放,播放后手动点击视频区域(确保 video 元素获得焦点)
- 使用快捷键
Ctrl + Shift + P或右键菜单触发 PiP,尽量避免依赖页面自带的控件按钮——部分网站按钮会复用同一 PiP 实例 - 若遇到某些网站(如部分 Bilibili 嵌入页)始终只弹出一个窗口,大概率是其后台调用了
document.exitPictureInPicture()主动清理旧实例。此时需改用不同用户配置文件的独立 Firefox 实例
通过多用户配置文件启动隔离的 Firefox 实例
当 about:config 设置无效,或怀疑扩展、Cookie、媒体策略等因素干扰时,该方案是最彻底的隔离方式——每个实例拥有完全独立的存储和运行环境,互不干扰。
- 访问
about:profiles,创建两个新配置文件,例如命名为PiP-A和PiP-B - 关闭所有 Firefox 窗口
- Windows 下使用命令行启动:
firefox.exe -P "PiP-A" -no-remote;macOS 下:/Applications/Firefox.app/Contents/MacOS/firefox -P "PiP-A" -no-remote - 另开一个终端,以
PiP-B配置名启动第二个实例;两个窗口彼此独立,各自可开启一个 PiP,效果相当于两台物理浏览器并行
缺点是内存占用翻倍,且无法跨实例共享书签或登录状态;但能绕过几乎所有策略和脚本层面的干扰,尤其适合需要长期、多源监控的场景。
用 JavaScript 手动调用 requestPictureInPicture() 创建 PiP
此法适用于网页本身无 PiP 按钮,或需精确控制哪个 video 元素进入 PiP 的情况——例如 iframe 内嵌视频或自定义播放器。
- 打开开发者工具(
F12),切换到 Console 面板 - 执行:
document.querySelector('video').requestPictureInPicture()(将选择器替换为目标视频的对应选择器) - 若报
NotAllowedError,说明当前上下文不满足触发条件:可能是视频未播放、未静音,或未经用户手势(如 click)激活 - 可将该函数绑定到视频的
click事件回调中,确保满足“用户交互触发”要求
此方式不依赖页面 UI,但需手动执行;如需批量处理,可编写临时 userscript 注入,但需注意跨域 iframe 的限制。
归根结底,真正的难点不在于“如何开启多个”,而在于让多个 PiP 窗口稳定共存、不互相抢占焦点、不被系统级策略中断——尤其当某个视频暂停、缓冲或跳转时,Firefox 可能悄悄销毁其 PiP 实例。因此更推荐的做法是:先用 about:config 启用多实例支持,再配合正确的操作顺序;若场景复杂,再考虑多配置文件方案。
