Categories
FFmpeg

FFmpeg으로 비디오 위에 비디오를 오버레이 (overlay) 하기

FFmpeg 으로 비디오 위에 다른 비디오를 오버레이 (overlay) 해 보자.

오버레이 효과를 위해서 overlay 필터를 사용한다.

1. 첫번째 예제

다음 명령을 살펴보자.

ffmpeg -i main.mp4 -i over.mp4 -filter_complex “[0:v][1:v]overlay=x=0:y=0[v]” output.mp4

이 명령은 over.mp4 의 비디오 스트림을 main.mp4 의 비디오 스트림 위에 오버레이 한다.

overlay 필터의 x 옵션은 메인 (main) 비디오 안에서 오버레이 비디오의 가로 위치를 지정한다.

overlay 필터의 y 옵션은 메인 비디오 안에서 오버레이 비디오의 세로 위치를 지정한다.

over.mp4 비디오는 main.mp4 비디오의 (0, 0) 위치에 오버레이 된다.

오버레이 했을 때 위에 있는 비디오를 오버레이 비디오 라고 부르고 아래에 있는 비디오를 메인 비디오 라고 부른다.

오버레이 비디오의 위치가 (x, y) 라는 말은 오버레이 비디오의 좌측 상단 꼭지점이 메인 비디오의 (x, y) 위치에 놓인다는 것을 의미한다.

2. shortest 옵션

메인 비디오와 오버레이 비디오의 재생 시간이 다를 때 shortest 옵션을 사용한다.

shortest 옵션을 1 로 지정하면 재생 시간이 짧은 비디오가 끝날 때 오버레이 작업이 끝난다. 완성된 출력 스트림의 재생 시간은 짧은 비디오의 재생 시간과 같게 된다.

ffmpeg -i main.mp4 -i over.mp4 -filter_complex “[0:v][1:v]overlay=x=0:y=0:shortest=1[v]” output.mp4

shortest 옵션의 기본값은 0 이다.

3. 임의의 위치에 오버레이하기

오버레이 비디오를 메인 비디오의 우측 상단에 오버레이 해보자.

ffmpeg -i main.mp4 -i over.mp4 -filter_complex “[0:v][1:v]overlay=x=W-w:y=0[v]” output.mp4

x 옵션의 값을 W-w 로 지정했다. W 는 메인 비디오의 가로 크기이고 w 는 오버레이 비디오의 가로 크기이다.

메인 비디오의 가로 크기는 1920 픽셀이고 오버레이 비디오의 가로 크기는 400 픽셀이라고 가정해 보자. 이 경우에 오버레이 비디오의 가로 위치는 1520 (1920 – 400) 이 된다.

오버레이 비디오의 위치는 (1520, 0) 이 된다.

오버레이 비디오를 메인 비디오의 우측 하단에 오버레이 해보자.

ffmpeg -i main.mp4 -i over.mp4 -filter_complex “[0:v][1:v]overlay=x=W-w:y=H-h[v]” output.mp4

y 옵션의 값을 H-h 로 지정했다. H 는 메인 비디오의 세로 크기이고 h 는 오버레이 비디오의 세로 크기이다.

메인 비디오의 세로 크기는 1080 픽셀이고 오버레이 비디오의 세로 크기는 300 픽셀이라고 가정해 보자. 이 경우에 오버레이 비디오의 세로 위치는 780 (1080 – 300) 이 된다.

오버레이 비디오의 위치는 (1520, 780) 이 된다.

Leave a Reply

Your email address will not be published. Required fields are marked *