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