使用 ffmpeg 和 force_original_aspect_ratio 从视频创建 PNG - 生成的 PNG 被压缩为 sample_aspect_ratio(而不是 display_aspect_ratio)

Create PNG from video with ffmpeg and force_original_aspect_ratio - resulting PNG is squashed to sample_aspect_ratio (instead of display_aspect_ratio)

我有一个通用流程,其目的是拍摄任意纵横比的视频并从其中一帧生成 PNG。这个框架应该:

ffmpeg -y -nostats -ss 10 -i ./video.mp4 -max_muxing_queue_size 6400 -an -frames:v 1 -r 24/1 -vf "scale=w=720:h=405:force_original_aspect_ratio=decrease" -f image2 ./frame.png

当我给这个命令一个 sample_aspect_ratio (SAR) 为 4:3 和 display_aspect_ratio (DAR) 为 16:9 的视频时,我最终得到一个540x405 (4:3) PNG,其中图像被水平压缩。大概 force_original_aspect_ratio 正在查看 sample_aspect_ratio 而不是 display_aspect_ratio.

如何确保生成的图像与视频保持相同的宽高比(显示给用户)?

插入缩放过滤器以将帧转换为方形像素。

-vf "scale=iw*sar:ih,setsar=1,scale=w=720:h=405:force_original_aspect_ratio=decrease"