竖拍视频宽高显示1920×1080?两种存法怎么分辨

做过视频上传功能的人大概都见过这种怪事。一段竖着拍的视频点开播放是正的,后台读出来的宽高却是 1920×1080 这种横屏才有的数。我以前一直当它是哪个环节读错了。这两天腾出一个下午折腾清楚,才知道谁也没读错,「竖拍视频」本来就有两种存法。

第一种最好懂:画面真的是竖着存的。文件里每一帧就是 1080 宽、1920 高,拿什么工具打开都是竖的。第二种绕一点:画面是躺着存的。每一帧其实是 1920 宽、1080 高的横图,文件里另外贴了一个标签写着「播放时请转 90 度」。这个标签的正式名字叫旋转标记,是写在视频文件头部信息里的一条说明,不在画面里。播放器读到它就把躺着的画面转正了再给你看。两种视频放在一起播,肉眼看不出区别。

手上没有现成的对照材料。我从网上找了一段拍风机的竖屏示例视频,用 ffmpeg 7.1 做了两份 5 秒长、每秒 30 帧的样片。一份保持画面竖着存成 1080×1920,不带标签。另一份把画面放倒存成 1920×1080,再贴上旋转标签。为了看方向,我还在左上角画了红块,右上角画了绿块。这里得交代一句:标签是 ffmpeg 写进去的,不是手机直接拍出来的文件。手机竖拍常见的是第二种存法。不过手机原片和 HEVC 编码的视频我这次都没测,下面的数只对这几段对照样片负责。

先说行不通的办法:放进浏览器里看。我在 Chromium 149、Chrome 154、Firefox 151 和 WebKit 26.5(macOS)里都播了一遍。两份样片全是正的,网页上读到的宽高也都是 1080×1920。浏览器已经替你把标签处理掉了,从播放这一侧什么也看不出来。

管用的办法是看文件自己的信息。在命令行里敲 ffmpeg -i 文件名 就能看到它打印出来的视频流尺寸。真竖的那份显示 1080×1920,没有别的。带标签的那份显示 1920×1080,旁边还多一行 rotation of -90.00 degrees。判断起来就一句话:播放是竖的,文件信息里宽高却是 1920×1080,后面还跟着一行 rotation,那就是带标签的那种。这行读数是负 90,平时大家嘴上说的却是「旋转 90 度」。我对着正负号愣了好一会儿,后来干脆只认有没有这一行。我这台机器没装 ffprobe,换别的工具读出来长什么样我没试过。

一开始我以为只看宽高就够了:宽比高大的就是带标签的。做到第三份样片才发现不行。那份是倒立着存的,标签写的是转 180 度。它的尺寸还是 1080×1920,光看宽高跟真竖的一模一样。能把它认出来的只有那行 rotation of -180.00 degrees。后来我都是两样一起看。

想亲眼确认画面真是躺着的,可以把标签拿掉试试。我用 ffmpeg 把带标签那份的标签去掉,画面原样不动。再放进浏览器,四个浏览器里全部躺倒,读到的宽高也变回了 1920×1080,红块从左上角跑到了左下角。

分清这件事对做上传功能的人是实打实有用的。上传链路里不只有播放器,还有取封面、转码、读宽高入库这些程序自己干的活。它们未必都看标签。同一份带标签的样片,浏览器里读出来是 1080×1920,ffmpeg 读出来是 1920×1080。截封面也一样:用 ffmpeg 截一帧,默认出来是 1080×1920 的正图,多加一个 -noautorotate 参数就成了 1920×1080 的躺图。不知道有两种存法的时候,这些现象看着像一堆互不相干的 bug。

最后我还想看看带标签的视频压一遍之后会变成哪一种。这一步我用的是图映 ImgIng,一个网页版的图片视频处理工具。把带标签的样片导进去以后,界面上「画面与体积」一栏写的是 1080 × 1920 和 1.48 MB,按的是转正之后的方向。我选了「体积优先」档,把转 90 度、270 度、180 度三种带标签的样片都压了一遍。出来全是不带标签、竖着存的 608×1080,等于从第二种变成了第一种。这个结果只在 Chromium 149 里用 5 秒的样片测过,别的浏览器和别的档位没试。

这张图看左侧「画面与体积」那一格,写的是 1080 × 1920。中间预览里红块在左上、绿块在右上,方向是正的。

下次再碰到「播放是正的、别处是横的」这种事,我会先对那份文件跑一遍 ffmpeg -i。先看宽高,再看有没有 rotation 那一行,分清是哪一种再往下查。手机直出的文件是不是都贴标签、不同机型有没有差别,我还没验证,等手边攒够原片再说。文里的风机这段是维基共享资源上 Grendelkhan 的视频,CC BY-SA 4.0 许可。红绿色块和旋转标签是我后加的。

相关推荐
吴名氏.7 小时前
Java转AI Agent教程(第五周)Prompt工程
java·人工智能·prompt·ai agent
合天网安实验室7 小时前
从压缩到泄露:KV Cache Compression 的选择性失忆与系统提示词风险
人工智能·llm
spapient7 小时前
scx:手写一个零依赖的查询感知上下文压缩器
人工智能
云和恩墨7 小时前
数据库监控简史:从会回答到能交付——AI-DBA如何成为真正的数字同事
数据库·人工智能·dba
宋艳_AI应用开发7 小时前
LangSmith 追踪实战:判断花 4.4 秒,回答花 1 秒,最后一句是"我无法访问"
人工智能
u1301307 小时前
GitHub 热榜项目:日榜(2026-11-02)
人工智能·github
米小虾7 小时前
Agent 省钱工程:七成的钱不是模型花掉的
人工智能·agent
丘山录7 小时前
本地部署 LongCat-2.5,要 7 台机器我只有 4 台
人工智能·算法
张炳午7 小时前
DeepSeek 开源 Super-agent 原型拆解:授权链怎么设计、实验怎么读、Watchdog 为什么没实装
人工智能
方方洛7 小时前
ray教程-23-附录C-术语表
人工智能·分布式·机器学习