워터마크 없이 동영상 GIF 변환하는 방법

왜 결과물에 로고가 박힐까요

변환된 GIF 구석에 찍히는 로고는 GIF 형식의 한계도, 변환 과정에서 생기는 것도 아니에요. 그냥 광고예요. 그리고 그 광고가 필요한 이유는 변환이 어디서 일어나는지에 있어요.

서버에서 변환하는 서비스는 파일 하나마다 실제 비용이 들어요. 영상을 받는 회선, 디코딩과 인코딩에 쓰는 연산, 결과물을 잠깐 보관하는 저장 공간까지요. 이 비용이 방문자 수만큼 늘어나니까 무료로 쓰는 사람들에게서 뭐라도 회수해야 하고, 결과물마다 로고를 박아두는 게 가장 싼 방법이에요. 그래서 “워터마크 제거”가 유료 요금제의 대표 항목이 되는 거고요.

브라우저에서 처리하면 넣을 이유가 없어요

디코딩과 인코딩이 브라우저 탭 안에서 일어나면 이 비용 구조가 통째로 사라져요. 이미 영상을 가지고 있는 기기가 직접 처리하니까 파일마다 회수할 서버 비용이 없고, 결과물에 로고를 박을 이유도 같이 없어져요.

같은 구조에서 따라오는 게 하나 더 있어요. 영상이 서버로 전송되지 않아요. 동영상 GIF 변환은 기기 안의 파일을 로컬 주소로 열어서 브라우저가 디코딩하고, 프레임을 캔버스에 옮긴 다음 이 페이지의 자바스크립트가 GIF를 만들어요. 서버는 프레임 한 장 보지 못하고, 탭을 닫으면 전부 사라져요.

용량을 정하는 건 세 가지예요

GIF는 프레임 사이를 압축하지 않아요. 모든 프레임을 매번 완성된 그림으로, 256색으로 줄여서 저장해요. 원본 MP4보다 GIF가 더 커지는 일이 흔한 이유가 이거고, 결국 용량은 프레임 수에 프레임 한 장 값을 곱한 값이 돼요.

이걸 정하는 설정 세 가지가 내보내기 전에 전부 화면에 있어요.

  • 구간 — 처음엔 3초가 잡혀 있고 최대 30초까지 돼요. 1초 늘어나면 용량도 그만큼 그대로 늘어요. 화면이 거의 멈춰 있어도 깎아주는 게 없어요.
  • 프레임 속도 — 10fps면 움직임이 자연스러우면서 용량도 감당할 만해요. 20fps는 더 부드러운 대신 프레임 수가 두 배가 되고, 느린 화면이나 화면 녹화는 5fps로도 충분한 경우가 많아요.
  • 긴 쪽 길이 — 320·480·640·800px 중에 고르면 그게 상한이 돼요. 길이를 절반으로 줄이면 프레임 한 장의 면적이 4분의 1이 되니까, 용량이 감당 안 될 때 가장 빠르게 듣는 손잡이예요.

프레임은 한 번에 300장까지예요. 고른 속도로 이걸 넘기면 구간을 잘라내는 대신 같은 구간에 낮은 속도로 고르게 나눠 담아요. 재생 길이는 그대로고 움직임만 조금 덜 부드러워져요.

GIF와 WebP, 둘 다 뽑아서 비교해요

두 결과물은 같은 프레임으로 만들기 때문에 한 번 더 누르는 것만으로 내 영상에서 실제 차이가 얼마인지 알 수 있어요. 애니메이션 WebP는 색 제한이 없고 품질도 조절돼서, GIF의 256색으로는 안 되는 걸 해내거든요.

실제로 도구로 뽑아본 클립 하나는 25장 기준으로 GIF 354KB, WebP 129KB가 나왔어요. 64%쯤 작은 셈인데, 이 차이가 항상 같지는 않아요. 그라디언트와 노이즈가 많은 실사 영상은 WebP 쪽이 크게 유리하지만, 색이 몇 개 없는 플랫한 그래픽은 반대로 GIF 팔레트가 유리해요. 합성 테스트 GIF를 WebP로 바꿨더니 오히려 36% 커진 경우도 있었고요. 내보내면 두 용량이 다 나오니까 어림짐작 말고 숫자를 보세요. 어디에 올라갈지 모르겠다면 GIF, 내 사이트에 쓸 거라면 WebP가 나아요.

영상이 아니라 다른 데서 시작한다면

이미 GIF가 있고 용량만 줄이고 싶다면 GIF WebP 변환이 여러 파일을 같은 품질로 한꺼번에 바꿔줘요. 브라우저의 ImageDecoder 기능을 쓰기 때문에 크롬·엣지·사파리가 필요하고, 파이어폭스는 아직 지원하지 않아요.

사진 여러 장으로 움짤을 만드는 거라면 GIF 만들기에서 순서와 프레임별 시간을 정해 같은 두 포맷으로 저장할 수 있어요.

한 가지는 어떤 도구로도 안 돼요. GIF도 애니메이션 WebP도 소리를 담지 못해요. 형식 자체에 소리 트랙이 없어서, 소리가 중요하면 움짤은 미리보기로 쓰고 소리는 원본 영상에 맡기는 게 맞아요.