FFMPEG: 비디오 소스 해상도가 다른 비디오의 이미지 패딩 계산

FFMPEG: 비디오 소스 해상도가 다른 비디오의 이미지 패딩 계산

해상도가 다른(1920x1080, 1280x720, 1280,544, 640x480 등) 비디오가 있습니다.

내가 필요한 것:

  1. 2초에서 15초까지 영상 자르기(+)
  2. 너비가 source_video_height와 같고 높이가 (source_video_height*1.777777777777778)과 동일하도록 해상도를 변경합니다. (+)
  3. 비디오에 다른 텍스트 추가(+)
  4. 검은색 패딩을 그림으로 변경하거나 이 비디오에 그림(원본 그림은 1800x1200) 배경을 만듭니다. (현재 그림 오버레이 비디오는 정확하지 않습니다.) (-)
  5. 포인트 2에서와 같이 계산을 통해 너비 및 높이 패딩을 생성하려고 시도했지만 왜 거기에서 ih 및 iw를 사용할 수 없는지 이해하지 못합니다(-)
ffmpeg -loop 1 -i bg.jpeg -i video.mp4 -ss 00:00:02.000 -to 00:00:14.999 -vf "[in]scale=ih:(ih*1.777777777777778):force_original_aspect_ratio=decrease,pad=width=720:height=1280:x=(720-iw)/2:y=(1280-ih)/2:color=black,drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_1':enable='between(t,5,8)',drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_2':enable='between(t,8,10)',drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_3':enable='between(t,10,12)'[out]" -c:a copy output_0_$RANDOM.mp4

답변1

당신은 필요하지 않습니다 pad. 첫 번째 단계에서는 배경으로 작업을 수행한 다음 비디오를 오버레이합니다.

#!/bin/bash
ffmpeg -loop 1 -i in1.png \
-i "input 1.mp4" \
-ss 00:00:02.000 -to 00:00:14.999 -filter_complex "
[1:v]scale=ih:-2[1v];
[0:v][1v]overlay=(W-w)/2:(H-h)/2:shortest=1,
drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_1':enable='between(t,5,8)',
drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_2':enable='between(t,8,10)',
drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_3':enable='between(t,10,12)'
[v]
" -map [v] -map 1:a -c:v h264_nvenc -cq 20 -c:a copy /tmp/output.mp4 -hide_banner -y
mpv /tmp/output.mp4

관련 정보