FFmpeg 的 PAR,DAR 及 SAR 概念,你了解吗?

2020-09-24 10:56:45 浏览数 (1)

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

今天主要总结一下视频参数 PAR,DAR和SAR的理解。

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

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

三者的关系: PAR x SAR = DAR 或者 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播放后,解析出来视频参数:

从中可以看到,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,可以得出该视频最初应该是来自电视制式拍摄而来。

文章作者: YUV420.COM 文章链接: https://www.yuv420.com/2020/02/20/ffmpeg-ji-chu-gai-nian-zhi-par-dar-he-sar/

0 人点赞