词典

文件的高度是什么?

文件高度是指文件中图片的垂直尺寸,以像素计。图像、视频以及带封面图的音频文件都可以报告这个数值。

height

文件高度是文件中图片的垂直尺寸,以像素计数。元数据报告会在“Height”这一行显示这个数值。文件的宽度和高度一起决定图片的尺寸,例如 1920x1080,其中宽度在前。

文件高度和文件大小不同。高度统计的是像素行数,而文件大小统计的是文件中的字节数。

FFmpeg 项目的 ffprobe 程序把视频流的高度称为 height。ExifTool 有一个名为 ImageHeight 的标签,对应的Image Height文章对此有说明。在 MOV 和 MP4 视频中,ExifTool 从轨道头中读取这个标签,因此这两个数值可能不同。

哪些文件携带它

带封面图的图像、视频和音频文件都可以报告高度。每种格式在自己的位置保存高度信息:

  • MOV 和 MP4:视频样本描述中以像素保存源图像的高度。轨道头中为轨道单独保存一个高度。
  • MKV 和 WebM:PixelHeight 元素保存编码后视频帧的高度。
  • AVI:AVI 头中保存图像高度。
  • PNG:IHDR 数据块以 4 字节数字形式保存像素高度。

声音本身没有高度,所以 ffprobe 不会为音频流输出高度。不过,如果音频文件包含封面图片,仍然可以显示这个值。FFmpeg 会把这个附加图片当作视频流来处理,这个流就会有高度。

MP3 文件中的图片帧没有高度字段,因此高度值只能从图片数据中得出。FLAC 的图片块有自己的高度字段,当高度未知时,该字段保存 0。

文档的情况不同。PDF 页面使用 1/72 英寸为单位来衡量,而不是像素。Page Size文章解释了这些数值。

该数值的格式

这个值通常是一个不带单位的整数像素值。FFmpeg 会列出包括以下在内的视频尺寸,每个尺寸中的第二个数字就是高度:

  • 1280x720:高度为 720
  • 1920x1080:高度为 1080
  • 3840x2160:高度为 2160
  • 7680x4320:高度为 4320

有少数文件会显示其他内容。没有高度的字幕流在 ffprobe 中会显示为 N/A。SVG 图像的高度可以是一个长度值或一个百分比。

数值的来源

创建文件的程序会设置高度。想要改变高度,你需要调整图片尺寸或裁剪图片,然后重新保存文件。

为什么高度会和你看到的不一样

视频文件可以保存一个旋转值,FFmpeg 默认会按这个值旋转视频。顺时针或逆时针旋转 90 度后,你看到的高度就等于保存的宽度。

有些格式还会保存两个不同的高度。在 Matroska 文件中,PixelHeight 是已编码帧的高度,DisplayHeight 是裁剪后用于显示的高度。在 FFmpeg 中,coded height 在帧在输出前被裁剪时,也可能与高度不同。

它的重要性

高度可以用来检查文件是否符合尺寸限制,例如在上传表单中。如果“高度”一行显示 720,则说明这个视频有 720 行像素,即使文件名中写的是 1080。

高度和宽度也共同决定像素总数。一个 1920x1080 的视频每帧有 2,073,600 个像素,大约是 2.1 百万像素。

用于打印时,Y Resolution 标签给出了沿高度方向每英寸或每厘米的像素数。用高度除以这个数,就能得到相同单位下的打印高度。