Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

비디오 썸네일 시트란 무엇인가?

썸네일 시트(thumbnail sheet)는 비디오의 여러 장면을 한 장의 이미지에 모아 담은 파일입니다. 이 형식은 십여 년 전, 사람들이 아직 사진을 인화해서 보관하던 시절 유행했던 '사진 시트'에서 유래했습니다. 당시 사진 시트가 필름이나 SD카드 속 사진들의 미리보기 역할을 했던 것처럼, 오늘날의 썸네일 시트도 비디오 파일의 미리보기 역할을 합니다. 미디어 플레이어로 영상을 열어 처음부터 끝까지 재생하며 확인하는 것보다, 썸네일 시트를 훑어보는 편이 훨씬 빠르고 간편하게 영상의 내용과 화질을 파악할 수 있습니다.

다행히도 비디오에서 특정 프레임을 일일이 추출한 뒤 하나의 이미지로 직접 배치할 필요는 없습니다. 다양한 도구를 활용하면 비디오로부터 손쉽게 썸네일 시트를 만들 수 있습니다. 이 글에서는 리눅스 환경에서 이를 수행하는 두 가지 방법을 소개합니다.

방법 1: 그놈 비디오(GNOME Videos) 활용하기

그놈(GNOME) 데스크톱 환경을 사용 중이라면 기본 미디어 플레이어인 "비디오(Videos)"를 이용할 수 있습니다. 정확한 이름은 "GNOME Videos"이며, 그놈 도구 모음의 일부로 예전에는 "토템(Totem)"이라는 이름으로 불렸습니다. 이 프로그램은 썸네일 시트를 간편하게 만들 수 있는 기능을 기본으로 제공합니다.

먼저 프로그램을 실행합니다.

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

썸네일 시트를 만들고 싶은 비디오를 연 뒤, 애플리케이션 메뉴에서 "스크린샷 갤러리 만들기(Create Screenshot Gallery…)"를 선택합니다.

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

팝업 창에서는 썸네일 시트에 대한 몇 가지 기본 옵션을 설정할 수 있습니다. 각 썸네일의 너비를 조절할 수 있으며, 스크린샷 개수를 프로그램이 자동으로 선택하도록 하거나 원하는 개수를 직접 지정할 수도 있습니다.

설정이 끝나면 창 상단 가운데에 이미지 시트 파일의 이름을 입력하고, 오른쪽 위의 저장(Save) 버튼을 클릭하면 됩니다.

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

생성된 파일은 실용적이지만, 결과물이 기대와 다를 경우 세부적으로 조정할 여지가 많지 않습니다. 더 세밀한 제어가 필요하다면 더 많은 옵션을 제공하는 도구를 사용해야 합니다.

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

방법 2: FFMPEG 활용하기

FFMPEG는 매우 강력하지만 다소 복잡한 명령줄 도구로, 비디오를 다양한 방식으로 처리할 수 있습니다. 그중 하나가 바로 썸네일 시트 생성입니다. 다만 이를 위해서는 다소 복잡한 명령어를 작성해야 하며, 기본적인 형태는 다음과 같습니다.

ffmpeg -ss 3 -i "/path/to/video/file.mp4" -frames 5 -vf "select=not(mod(n\,3000)),scale=320:240,tile=4x3" -vsync vfr -q:v 10 image-sheet-filename_%03d.jpg
리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

기본 옵션 살펴보기

  • -ss: 비디오 시작 지점으로부터의 시간 오프셋을 지정합니다. 대부분의 영상은 타이틀 시퀀스로 시작하며, 이 부분의 썸네일은 크게 유용하지 않습니다. 이 옵션을 사용하면 영상 초반의 "X"초를 건너뛰고 썸네일을 추출할 수 있습니다.
  • -i: 썸네일을 추출할 입력 파일을 지정합니다.
  • -frames: 기록할 프레임 수를 정의합니다.
  • -q:v: 생성되는 이미지 파일의 압축 품질을 설정합니다.

핵심: 비디오 필터(-vf) 옵션

명령어에서 가장 흥미롭지만 동시에 복잡한 부분은 다음 구문입니다. 이 부분은 한 번에 세 가지 작업을 수행하기 때문에 좀 더 자세히 살펴볼 필요가 있습니다.

-vf "select=not(mod(n\,3000)),scale=320:240,tile=4x3"

맨 앞의 -vf는 FFMPEG에게 비디오 필터를 사용하도록 지시합니다. select=not(mod(n\,3000))은 최종 이미지에 포함될 프레임을 선별하는 역할을 합니다. 현재 프레임 번호("n")를 지정된 숫자("3000")로 나누는 방식입니다. 예를 들어 비디오가 3001번째 프레임에 도달했다면, 3001을 3000으로 나눈 값이 1이므로 이 프레임이 첫 번째 생성되는 이미지 시트의 첫 번째 썸네일이 됩니다. 6001번째 프레임이라면 6001÷3000 = 2이므로 두 번째 썸네일이 되는 식입니다. 따라서 이 숫자를 줄이면 프레임 선택 빈도가 높아지고, 늘리면 낮아집니다.

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

scale=320:240 부분은 최종 썸네일 시트에서 각 썸네일의 크기를 결정합니다. 최상의 결과를 얻으려면 원본 비디오의 해상도와 화면 비율(aspect ratio)을 고려하여 적절한 비율로 설정하는 것이 좋습니다.

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

마지막으로 tile=4x3 부분은 각 시트 안에서 썸네일들이 배열되는 방식을 정의합니다. 이 예제에서는 가로 4개, 세로 3개씩 배치됩니다.

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

파일명의 %03d는 무엇을 의미할까?

생성되는 이미지 파일의 최종 파일명이 다음과 같은 형태라는 점을 눈치채셨을 겁니다.

filename_%03d.jpg

%03d 부분은 설정에 따라 한 장의 시트에 담을 수 있는 것보다 더 많은 프레임이 선택될 경우, FFMPEG가 번호가 매겨진 파일명으로 여러 장의 이미지 시트를 추가로 생성한다는 의미입니다. 선택 간격("n\,숫자")을 줄이거나 시트당 타일 수를 늘리면 더 많은 파일이 생성되며, 그 반대의 경우 파일 수가 줄어듭니다.

리눅스에서 비디오 썸네일 시트 만드는 방법: GNOME Videos부터 FFMPEG까지

물론 이는 비디오 파일의 길이에도 좌우됩니다. 어차피 단순한 산수 문제입니다. 3시간 반이 넘는 대작인 "반지의 제왕"은 픽사의 단편 애니메이션 하나보다 훨씬 많은 프레임으로 이루어져 있으니까요.

원하는 시트 개수 계산하기

FFMPEG가 생성할 이미지 시트 파일의 개수를 직접 조절하고 싶다면 다음 공식을 사용하세요.

비디오의 총 프레임 수 ÷ 시트당 타일 수 ÷ 원하는 이미지 시트 수

계산 결과를 명령어의 "mod(n\,결과값)" 부분에 넣으면 됩니다.

참고로, 썸네일 시트 대신 개별 이미지를 선호한다면 FFMPEG로 비디오를 개별 이미지 파일들로 분해하는 것도 가능합니다.

여러분은 어떤 방법으로 비디오의 썸네일 시트를 만드시나요? 아래 댓글로 의견을 나눠주세요!