
현재 이 질문의 명령을 사용하여 두 비디오를 크로스페이드하고 있습니다.
내 명령:
ffmpeg -i firstVideo.mp4 -i secondVideo.mp4 -f lavfi -i color=black - filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v]scale=640x360,trim=duration=9[over];\
[over][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
-vcodec libx264 -map [outv] output.mp4
이 크로스페이드 애니메이션은 비디오를 원하는 640x360 대신 480x360으로 축소한다는 점을 제외하면 잘 작동합니다. 메타 정보는 크기가 640x360이라고 잘못 표시하지만 그렇지 않다고 확신합니다.
또한 두 입력 비디오가 모두 정확히 640x360이라고 확신합니다.
축소가 픽셀 형식으로 인한 것이라고 추측하고 있지만 yuva420p
다른 옵션이 무엇인지 잘 모르겠습니다. 픽셀 형식을 변경해 보았지만 지금까지 아무 것도 작동하지 않았습니다.
위에 주어진 명령은 오류 없이 실행됩니다.
답변1
사용
ffmpeg -i firstVideo.mp4 -i secondVideo.mp4 -f lavfi -i "color=black:s=640x360:d=9"
-filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
-vcodec libx264 -map [outv] output.mp4
컬러 필터는 별도로 지정하지 않는 한 320x240 비디오를 출력합니다. 스케일 필터는 소스 종횡비(이 경우 4:3)를 유지하려고 하므로 비디오는 640x360으로 인코딩되지만 디스플레이 종횡비는 4:3이므로 480x360으로 표시됩니다.