使用ffmpeg输出具有正确宽高比的图像

时间:2018-08-13 15:28:17

标签: ffmpeg

我有一个具有以下属性的mkv视频(通过mediainfo获得):

Width                                    : 718 pixels
Height                                   : 432 pixels
Display aspect ratio                     : 2.35:1
Original display aspect ratio            : 2.35:1

我想在特定时间对其进行截图:

ffmpeg -ss 4212 -i filename.mkv -frames:v 1 -q:v 2 out.jpg

这将产生718x432 jpg图像,但是长宽比不正确(图像“水平”压缩)。 AFAIK,输出图像应为1015 * 432(宽度=高度* DAR)。这种计算正确吗?

是否有一种方法可以使ffmpeg输出的所有视频的尺寸/ AR正确(即没有“硬编码”值)?我尝试使用setdar / setsar过滤器没有成功。

出于好奇,尝试使用ffmpeg获取SAR和DAR会产生:

Stream #0:0(eng): Video: h264 (High), yuv420p(tv, smpte170m/smpte170m/bt709, progressive),
718x432 [SAR 64:45 DAR 2872:1215], SAR 155:109 DAR 55645:23544, 24.99 fps, 24.99 tbr, 1k tbn, 49.98 tbc (default)

2872/1215是2.363,因此该值与mediainfo报告的值略有不同。有人知道为什么吗?

2 个答案:

答案 0 :(得分:1)

不查看文件就无法诊断读数不同的原因,但是获得正方形像素结果的通用方法是

ffmpeg -ss 4212 -i filename.mkv -vf scale=iw*sar:ih -frames:v 1 -q:v 2 out.jpg

答案 1 :(得分:0)

根据doc of FFmpeg

ffmpeg -ss 4212 -i filename.mkv -vf scale='trunc(ih*dar):ih',setsar=1/1  \
    -frames:v 1 -q:v 2 out.jpg

确保最终的分辨率是均匀的(某些编解码器要求)