如何在ffmpeg中缩放叠加图像

时间:2014-08-15 02:47:09

标签: video ffmpeg overlay scale

如何在ffmpeg中将叠加图像缩小到scale=320:240? 无论我在哪里尝试放置缩放命令,我都无法得到结果。 这是我正在使用的命令,但它实际上是在拉伸图像:

ffmpeg -i video.mp4 -i image.jpg -b:v 1M -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2, drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: text='Test Text': x=1: y=1: fontsize=30" output.mp4

1 个答案:

答案 0 :(得分:22)

在滤镜链中,您必须先单独缩放图像,然后执行叠加。只需使用[1:v]scale=320:240 [ovrl],[0:v][ovrl]添加过滤链。 最后的命令行(拆分为多行以提高可读性):

ffmpeg -i video.mp4 -i image.jpg -b:v 1M \
-filter_complex "[1:v]scale=320:240 [ovrl], \
[0:v][ovrl]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2, \
drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: \
text='Test Text': x=1: y=1: fontsize=30" output.mp4

但是,如果您的视频为anamorphic(存储宽高比(SAR)与显示宽高比(DAR)不同,主要用于电视广播),则视频会在播放时调整大小(拉伸)。当然,叠加的图像也会被拉伸,因为它是视频的一部分 例如,PAL SD广播(存储在720x576像素,SAR = 5:4)通常使用16:9 DAR显示,因此在播放到1024x576时将调整大小以保持DAR。因此,如果您在此类视频上叠加320x240图像,则其显示尺寸将为455x240,并且看起来会拉伸。

如果您需要保留叠加图像(4:3)的纵横比,则需要考虑视频的SAR和DAR,并计算正确的尺寸以调整图像的叠加效果。如果您知道视频的SAR和DAR,则可以使用此公式计算正确的宽度以调整叠加图像的大小(假设高度保持在240): width = 320 * SAR / DAR