Tampermonkey script for correcting portrait and landscape video aspect ratios in a media player.
| .gitignore | ||
| README.md | ||
| 媒资播放器视频横竖屏比例智能修正_v1.2(20260323).txt | ||
NxPlayerScaleSwitching
用于媒资播放器的 Tampermonkey 用户脚本,可修正竖屏视频在横屏播放器中的显示比例,避免画面被横向拉伸。
当前脚本版本:1.2 (2026-03-23)
功能
- MP4 自动识别:读取视频元数据,根据宽高判断是否为竖屏视频并自动切换为
9:16显示。 - TS 手动切换:TS 视频无法通过当前探测方式自动判断,可点击播放器右上方按钮切换比例。
- 随视频重置:检测到新的 MP4 地址后,先恢复横屏状态,再重新判断新视频的方向。
- 适配窗口与全屏:窗口尺寸或全屏状态变化时会重新计算播放器尺寸。
- 状态提示:
- 红色按钮“切换竖屏比例”:当前为横屏显示;
- 绿色按钮“恢复横屏比例”:当前为竖屏显示。
适用页面
公开版本使用不会访问真实业务环境的占位地址:
http://example.invalid/apollo/page/*
https://example.invalid/apollo/page/*
实际部署前,请将脚本头部的 example.invalid 替换为自己的媒资系统地址,并设置 programMoviesEndpoint 视频信息接口关键字。维护者的真实部署值保存在本地敏感配置中,该文件已通过 .gitignore 排除。
文件说明
| 文件 | 说明 |
|---|---|
媒资播放器视频横竖屏比例智能修正_v1.2(20260323).txt |
已脱敏的 Tampermonkey 用户脚本源码 |
仓库不分发第三方 Tampermonkey CRX 安装包。请通过可信的官方渠道安装 Tampermonkey;旧版或受管浏览器环境请联系浏览器管理员。
安装
1. 安装 Tampermonkey
如果浏览器尚未安装 Tampermonkey,请通过浏览器扩展商店或 Tampermonkey 官方渠道安装。受管理或旧版 Chrome 环境可能需要管理员通过浏览器策略部署兼容版本。
2. 安装用户脚本
- 打开 Tampermonkey 管理面板。
- 新建脚本,并删除编辑器中的默认模板。
- 将
@match中的example.invalid替换为自己的部署地址,并把REPLACE_WITH_PROGRAM_MOVIES_ENDPOINT替换为视频信息接口关键字。 - 将
媒资播放器视频横竖屏比例智能修正_v1.2(20260323).txt的全部内容复制到编辑器。 - 保存脚本,并确认脚本已启用。
- 刷新媒资系统页面。
使用方法
MP4 视频
正常打开或切换视频即可。脚本会监听节目视频信息请求,取得 MP4 地址后加载视频元数据:
- 高度大于宽度:自动切换为竖屏
9:16; - 宽度大于或等于高度:保持横屏铺满播放器。
TS 视频或自动识别失败
点击播放器外部右上角的比例按钮:
- 点击“切换竖屏比例”进入竖屏显示;
- 点击“恢复横屏比例”恢复横屏显示。
手动切换后,脚本会保留手动状态,直到检测到下一个 MP4 视频并重置。
工作原理
- 脚本在页面加载初期接管
XMLHttpRequest,监听本地配置指定的视频信息接口响应。 - 从响应的
filePath或list[0].filePath中读取视频地址。 - 对 MP4 创建临时
<video>元素,仅预加载元数据以获取原始宽高。 - 竖屏模式下,根据播放器容器高度计算
9:16宽度并水平居中;横屏模式下恢复为100% × 100%。 - 监听窗口尺寸及全屏状态变化,重新应用播放器样式。
页面结构依赖
脚本依赖媒资页面中的以下元素:
| 元素 | 用途 |
|---|---|
#playerDiv |
定位播放器区域及按钮挂载位置 |
#ocx |
获取播放器容器高度 |
#nacl_module |
应用宽高和居中样式的播放器元素 |
.panel |
比例切换按钮的外层容器 |
如果媒资系统升级后修改了这些元素,脚本可能无法显示按钮或调整比例。
常见问题
页面上没有出现切换按钮
- 确认 Tampermonkey 和本脚本均已启用;
- 确认当前地址符合脚本的
@match; - 确认页面仍包含
#playerDiv,且其上层存在.panel; - 刷新页面后重试。
MP4 没有自动切换
- 打开浏览器开发者工具,检查控制台是否输出“探测器存活并成功返回”;
- 检查视频信息接口关键字是否已按本地敏感配置填写,并与当前接口一致;
- 检查接口返回中是否仍使用
filePath或list[0].filePath; - 视频地址若受鉴权、跨域或并发请求限制,元数据探测可能失败,此时可使用手动按钮。
全屏后比例不正确
先退出全屏再重新进入;如果仍未恢复,可点击比例按钮切换两次,强制重新应用样式。
已知限制
- 自动方向识别目前仅处理文件地址中包含
.mp4的视频。 - 竖屏显示固定按
9:16计算,其他竖屏比例不会按原始比例呈现。 - 仅处理接口返回的第一个
filePath,不遍历多个候选视频。 - 脚本依赖当前接口名称、响应字段和页面 DOM 结构,系统升级后可能需要适配。
- 视频元数据探测失败时不会自动重试,需要手动切换比例或重新打开视频。
调试
按 F12 打开浏览器开发者工具,在 Console 中可查看脚本输出:
拦截到新视频,重置状态
探测器存活并成功返回!尺寸: <宽度> x <高度>
探测器阵亡(可能被浏览器拦截并发请求)
维护信息
- 维护者:内部团队(联系信息保存在本地敏感配置中)
- Namespace:
http://tampermonkey.net/ - 当前仓库未包含许可证文件;如需分发或修改,请先确认内部使用规范。