ffmpeg解析出的视频参数PAR,DAR,SAR的意义

时间:2024-03-24 17:13:04

视频参数 SAR,PAR,DAR基础概念

FFmpeg基础概念解析。
今天主要总结一下视频参数 PAR,DAR和SAR的理解。

FFmpeg中的视频参数 SAR,PAR,DAR, 从宏观上描述一个视频轮如何被播放器正确显示。在不同的文档中,通常对这三个参数有不同的表述。但是,均指代同一事物。首先来看解释:

  1. PAR - pixel aspect ratio,单个像素的宽高比,大多数情况像素宽高比为1:1,也就是一个正方形像素,如果不是1:1, 则该像素可以理解为长方形像素。常用的PAR比率有(1:1,10:11, 40:33, 16:11, 12:11 ).
  2. DAR - display aspect ratio,显示宽高比。即最终播放出来的画面的宽与高之比。比如常见的16:9和4:3等。缩放视频也要按这个比例来,否则会使图像看起来被压扁或者拉长了似的。
  3. SAR - Sample aspect ratio,采样纵横比, 表示横向的像素点数和纵向的像素点数的比值,即为我们通常提到的分辨率宽高比。就是对图像采集时,横向采集与纵向采集构成的点阵,横向点数与纵向点数的比值。比如VGA图像640/480 = 4:3,D-1 PAL图像720/576 = 5:4,高清视频 等。

三者的关系:
PAR x SAR = DAR
或者
PAR = DAR/SAR.

已知其中任意两个可以推导出另一个。

举例说明:

ffmpeg解析出的视频参数PAR,DAR,SAR的意义

看上图,如果这是一个由5x4一共20个像素点构成的一个长方形视频图像,其SAR=5:4,如果每个像素点都是方形像素,即PAR=1:1,根据上面公式: DAR= PAR x SAR = 5:4x1:1 = 5:4, 则该图像的显示宽高比是5:4。
同理,如果有一视频,告诉你视频宽高分别是160和120,则DAR= 160:120, 如果SAR仍然是5:4,则PAR = 160:120 / 5:4 = 16:15,也就是说,这个视频每个像素为长方形的像素.

播放器如何正确播放视频

播放器标准的播放流程,应该是先找容器也就是 container 中的DAR,按这个比例来显示视频,进行播放;如果没有DAR的话,则使用SAR进行视频显示播放。

再比如,看下面这个视频,ffplay播放后,解析出来视频参数:

ffmpeg解析出的视频参数PAR,DAR,SAR的意义

从中可以看到,ffplay通过ffmpeg获取到视频分辨率: 640x480, 即 SAR=640:480=4:3,DAR=16:9,也就是显示分辨率按照16:9显示。

通过上面公式, 计算 PAR = DAR/SAR = 16:9 / 4:3 = 4:3,则说明该视频中原始视频像素宽高比为:4:3.

这里有一点需要说明,就是视频的制式:
视频的制式按照设备可以分为计算机制式和电视制式。而电视制式又可以分为PAL和NTSC。电视制式的PAR通常不为1:1,而计算机制式的PAR为1:1. 所以上面得出视频的PAR为4:3,可以得出该视频最初应该是来自电视制式拍摄而来。

看wiki上更加清晰的解释:

Pixel Aspect Ratio
A pixel is a pixel, it is a small block of color information. However, some playback devices have different shaped pixels than others. Computer monitors have square pixels and hence everything that is designed for display on a monitor should have a PAR of 1. TVs however have ‘rectangular pixels’ which have a different PAR depending on the format (NTSC or PAL).
翻译一下:计算机PAR通常为1,也就是1:1,电视因为是长方形像素,因此PAR依赖不同的制式如NTSC或者PAL,PAR值也会不同。

这里有一篇英文文章,大家如果英语好,也可以参考一下:
https://www.animemusicvideos.org/guides/avtech3/theory-videoaspectratios.html

更多FFmpeg基础概念,请关注 影音视频技术空间