Вы можете попробовать это.
ffmpeg -i input_video -loop 1 -i input_image -t video_duration -filter_complex "[0:v]scale=iw*80/100:ih*80/100[vo];[1:v][vo]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2,setpts=PTS-STARTPTS[outv]" -c:v libx264 -map [outv] output_video
Здесь вы должны использовать filter_complex
и map
для наложения, и для масштабирования, и т.д. 0:v
относится к входному видео, а его ширина и высота масштабируются до 80% от его оригинала. 1:v
относится к входному изображению и накладывается на масштабированное видео по центру изображения. loop
зацикливает изображение на протяжении всего видео и -t
ограничивает продолжительность выходного видео секундами, которые вы хотите.
Если вам нужен оригинальный звук, доступный в выходном видео, используйте -map 0:a
перед указанием выходного файла.
ffmpeg -i input_video -loop 1 -i input_image -t video_duration -filter_complex "[0:v]scale=iw*80/100:ih*80/100[vo];[1:v][vo]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2,setpts=PTS-STARTPTS[outv]" -c:v libx264 -map [outv] -map 0:a -c:a copy output_video
Надеюсь, что это поможет вам!