【快问快答】蘑菇影视官网后台播放时为什么横竖屏?一图看懂
【快问快答】蘑菇影视官网后台播放时为什么横竖屏?一图看懂

一句话答案 后台播放横屏或竖屏,通常不是“播放器任性”,而是视频文件的宽高比例、旋转元数据、播放器/页面的样式设置或设备方向一起决定的。排查这四项,90%问题可解。
一图看懂(文本图示) 视频文件(宽×高 / 旋转元数据) ──> 播放器读取 ──> 页面容器(CSS/宽高/响应式) ──> 浏览器/设备方向 每一环有问题都可能把原本的横屏视频展示成竖屏,或把竖屏视频撑成横屏。
常见原因(快速识别)
- 视频本身宽高比与期望不符(比如 1080×1920 实际是竖屏)。
- 视频容器或父元素被 CSS 强制宽高(height 固定、object-fit 不当),导致拉伸或裁切。
- 视频文件带有旋转元数据(rotate tag),播放器是否尊重这个元数据会影响显示方向。
- 浏览器或移动设备的屏幕方向锁定或 orientationchange 处理不当。
- 流媒体转码/播放器逻辑针对不同分辨率自动切换了流(ABR)导致横竖表现不一致。
操作性解决方案(按步骤排查并修复) 1) 快速确认文件本身
- 在电脑上打开文件信息(例如用 VLC、mp4box、ffprobe)看宽高与 rotate 元数据。
- ffprobe 示例: ffprobe -v error -selectstreams v:0 -showentries stream=width,height,rotation -of default=noprint_wrappers=1:nokey=1 input.mp4
2) 如果是 rotate 元数据导致(文件原本是横的但标记旋转)
- 保留元数据方式(清除或修正 rotate):
- 将旋转写入视频帧(物理旋转): ffmpeg -i input.mp4 -vf transpose=1 -c:a copy output.mp4 (transpose=1 向右旋转 90°;transpose=2 向左等,按需选择)
- 或清空 rotate 元数据: ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4 说明:物理旋转更稳妥,兼容性最好;只改元数据对部分播放器可能仍有问题。
3) 页面和播放器层面修正(HTML/CSS/JS)
-
HTML5 基本示例:
- 推荐 CSS: video { max-width: 100%; height: auto; object-fit: contain; display: block; } 这能保证按容器等比例显示,不被拉伸。
- 若需要固定展示方向,可在容器上做约束: .video-wrap { width:100%; max-width:900px; aspect-ratio:16/9; }(现代浏览器)
- 对 iOS/Android 特殊行为,用 playsinline 和监听 orientationchange,动态调整样式或切流。
4) 流媒体/多码率场景
- 确认转码服务是否为同一视频生成了横屏和竖屏两套分辨率,且播放器在切流时选中了不合适的分辨率。
- 最稳妥的做法是:为竖屏视频生成竖屏分辨率(如 720×1280)并在播放器分辨率映射中保持一致。
5) 用户端排查(若只个别用户遇到)
- 让用户尝试刷新、换浏览器、关闭屏幕旋转锁定。
- 检查是否为缓存旧文件或 CDN 缓存未生效。
快速示例:把竖屏转成横屏(物理旋转) ffmpeg -i input.mp4 -vf transpose=1 -c:v libx264 -crf 18 -preset veryfast -c:a copy output_rotated.mp4
小结(要点)
- 先看文件:宽高 + rotate 元数据。
- 再看页面:CSS(max-width/height/object-fit)和播放器配置。
- 若是转码或流媒体,确保流与原始方向一致,或者提前做物理旋转以统一处理。
需要我帮你写一份可直接复制到蘑菇影视后台的检查清单和修复命令吗?我可以把上面的步骤整理成一键式排查清单或把 ffmpeg 命令按场景细化。
-
喜欢(11)
-
不喜欢(2)
