如何使用 ffmpeg 将视频准确定位在 jpeg 中的特定像素位置?

问题描述

例如

  • 一个尺寸为 1900x1000 的 jpeg,它有一个框架(一个矩形),像素坐标为 490x100 和 1400x500
  • 需要在此矩形内放置分辨率为 720p 的视频

你能分享一下 ffmpeg 命令来连接 jpeg 和视频吗?我尝试了 -hstack-xstack 过滤器。但是,无法在矩形内获取视频。

TIA

解决方法

您的矩形的大小为 910x400,因此您必须缩小 1280x720 的视频以适应。但纵横比不匹配。因此,如果您想保持纵横比,您还需要对 1280x720 视频进行填充或裁剪以使其适合 910x400。

结合这些答案:

裁剪以适合

ffmpeg -i image.jpg -i video.mp4 -filter_complex "[1]scale=910:400:force_original_aspect_ratio=increase,crop=910:400[fg];[0][fg]overlay=x=490:y=100,format=yuv420p" -c:a copy -movflags +faststart output.mp4

垫以适合

ffmpeg -i image.jpg -i video.mp4 -filter_complex "[1]scale=910:400:force_original_aspect_ratio=decrease,pad=910:400:-1:-1[fg];[0][fg]overlay=x=490:y=100,format=yuv420p" -c:a copy -movflags +faststart output.mp4

挤压/拉伸以适合

这将忽略纵横比并导致图像失真。

ffmpeg -i image.jpg -i video.mp4 -filter_complex "[1]scale=910:400,setsar=1[fg];[0][fg]overlay=x=490:y=100,format=yuv420p" -c:a copy -movflags +faststart output.mp4