Categories
FFmpeg

FFmpeg으로 동영상에서 이미지 추출하기

FFmpeg 으로 동영상에서 이미지를 추출하는 방법을 알아보자.

1. 1개의 이미지 추출

아래 명령은 지정된 위치에서 1개의 이미지를 추출한다.

ffmpeg -ss 01:23:45 -i input.mp4 -vframes 1 output.png

-ss 옵션은 시간을 지정한다. 1시간 23분 45초 지점을 지정했다.

-vframes 는 출력할 프레임의 수를 지정한다. 1을 지정했으므로 1개의 프레임이 출력된다.

출력 결과는 output.png 라는 이미지 파일로 저장된다.

2. 매초 1장씩 이미지 추출

이미지를 1초에 1장씩 추출하는 방법을 알아보자.

ffmpeg -i input.mp4 -vf fps=1 output_%d.png

fps 필터의 지정값이 1이므로 1초마다 1프레임 씩 출력된다.

결과는 여러 개의 이미지 파일에 저장된다. 파일 이름은 output_1.png, output_2.png, output_3.png 등과 같이 순차적으로 정해진다.

파일 이름에서 숫자 부분의 형식을 바꿔 보자.

ffmpeg -i input.mp4 -vf fps=1 output_%04d.png

숫자 부분의 자리수는 4개가 된다. 4자리가 안되는 숫자의 앞부분은 0으로 채워진다.

파일 이름은 output_0001.png, output_0002.png, output_0003.png 등과 같이 순차적으로 정해진다.

3. 임의의 주기에 따라 이미지 추출

임의의 시간을 주기로 하여 이미지를 추출해 보자.

아래 명령은 10초에 1장씩 이미지를 추출한다.

ffmpeg -i input.mp4 -vf fps=1/10 output_%d.png

아래 명령은 0.1초에 1장씩 이미지를 추출한다. 1초에 10장의 이미지를 추출하는 셈이다.

ffmpeg -i input.mp4 -vf fps=10 output_%d.png

Categories
FFmpeg

FFmpeg: drawtext 필터로 동영상에 텍스트 및 타임스탬프 표시하기

FFmpeg 의 drawtext 필터를 사용하여 동영상 위에 텍스트를 표시하는 방법을 알아보자.

1. 텍스트를 좌측 상단 구석에 표시

아래 명령을 살펴보자.

ffmpeg -i input.mp4 -vf “drawtext=text=’xtmci.com’:x=0:y=0:fontsize=32:fontcolor=white” output.mp4

동영상 위에 표시되는 텍스트는 ‘xtmci.com’ 이다.

표시되는 위치는 (0, 0) 이다. 좌측 상단 구석에 표시된다.

폰트 사이즈는 32 픽셀이고 폰트 색상은 흰색이다.

2. 텍스트를 정가운데에 표시

텍스트를 동영상의 정가운데에 표시해 보자.

ffmpeg -i input.mp4 -vf “drawtext=text=’xtmci.com’:x=(w-text_w)/2:y=(h-text_h)/2:fontsize=32:fontcolor=white” output.mp4

w 는 동영상의 가로 크기이다. text_w 는 텍스트 영역의 가로 크기이다.

텍스트의 x 위치를 (w-text_w)/2 로 지정했다. 이것은 w/2-text_w/2 와 같다. 동영상 가로 크기의 절반에서 텍스트 영역 가로 크기의 절반을 뺀 값이다.

h 는 동영상의 세로 크기이다. text_h 는 텍스트 영역의 세로 크기이다.

텍스트의 y 위치를 (h-text_h)/2 로 지정했다. 이것은 h/2-text_h/2 와 같다. 동영상 세로 크기의 절반에서 텍스트 영역 세로 크기의 절반을 뺀 값이다.

이와 같이 지정하면 해당 텍스트는 동영상의 정가운데에 표시된다.

3. 텍스트의 배경색 지정

텍스트에 배경색을 지정하면 가독성을 높일 수 있다. 텍스트에 배경색을 지정해 보자.

ffmpeg -i input.mp4 -vf “drawtext=text=’xtmci.com’:x=0:y=0:fontsize=32:fontcolor=white:box=1:boxcolor=black” output.mp4

box 옵션의 값이 1 이므로 배경이 표시된다.

boxcolor 옵션은 배경색을 지정한다.

4. 동영상에 타임스탬프 표시하기

drawtext 필터를 이용하여 동영상에 타임스탬프를 표시해 보자.

ffmpeg -i input.mp4 -vf “drawtext=text=’timestamp: %{pts \:hms}’:x=0:y=0:fontsize=32:fontcolor=white” output.mp4

텍스트 내용이 들어갈 자리에 timestamp 옵션과 pts 옵션이 사용되었다. 지정값이 hms 이므로 타입스탬프는 ‘시:분:초’ 형식으로 표시된다.

Categories
FFmpeg

우분투에서 FFmpeg 설치하기

FFmpeg 을 설치하기 전에 시스템의 패키지 리스트를 업데이트한다.

sudo apt update

ffmpeg 패키지를 설치한다.

sudo apt install ffmpeg

설치가 끝난 후에 FFmpeg 의 버전을 확인해 보자.

ffmpeg -version

출력 결과를 통해 버전 정보 뿐만 아니라 다양한 컴파일 옵션도 확인할 수 있다.