이 페이지의 코드가 시작되지 않았습니다.

index.html을 폴더에서 바로 열면 브라우저가 JavaScript 모듈을 막습니다. 그래서 동영상을 골라도 아무 일도 일어나지 않아요. 폴더를 http로 띄워서 여세요:

powershell -ExecutionPolicy Bypass -File serve.ps1

그런 다음 http://localhost:8080/을 여세요.

동영상을 GIF로 — 영상을 움직이는 GIF로 변환

구간과 크기, 초당 프레임 수를 고르세요.

언어: 한국어
소스 보기
동영상은 절대 업로드되지 않습니다. 서버가 아예 없으니까요.

모든 프레임을 읽고 크기를 줄이고 색을 고르고 써 내는 일은 내 브라우저가 내 기기의 성능으로 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져올 수도 보낼 수도 없습니다. 설령 있더라도 이 페이지 반대편에는 영상을 받아 줄 서버가 없습니다.

실시간 확인: 확인 중…

오프라인: 확인 중…

그냥 믿지 마시고 직접 확인해 보세요. 개발자 도구의 '네트워크' 탭을 켜 놓고 GIF를 만들어 보십시오. 프레임도, 파일 이름도, 고른 파일의 단 1바이트도 실려 나가는 요청이 없습니다. 아니면 인터넷을 끊고 그냥 만들어 보셔도 됩니다. 영상을 어딘가로 보내서 변환하는 도구라면 그대로 멈출 테니까요.

1 동영상 고르기

2 구간 고르기

영상을 재생하면서 원하는 부분을 표시하세요. I는 재생 위치를 시작으로, O는 끝으로 잡고, 막대의 양쪽 손잡이는 끌어 옮길 수 있습니다.

0:00.000 —

3 크기와 프레임 레이트

너비 높이는 따라오므로 비율은 절대 바뀌지 않습니다. GIF의 값을 치르는 것은 너비입니다. 너비가 절반이면 픽셀은 4분의 1입니다.

정확한 너비 픽셀 단위로 16에서 1920 사이.

초당 프레임 수 영상 자신의 레이트가 아닙니다. 거기서 프레임을 뽑아 오는 것입니다. 12면 움직임으로 읽히고, 20을 넘으면 부드러움이 드러나는 것보다 파일이 더 빨리 커집니다.

디더링 맞는 색이 없는 자리에서 팔레트의 두 색을 섞습니다. 정렬 방식이라 가만히 있는 배경이 일렁이지 않습니다.

무한 반복 끄면 한 번 재생하고 멈춥니다.

구간
—
출력
—
프레임
—
대략적인 용량
—

Markdown으로 보기

동영상을 GIF로 만드는 방법

  1. 동영상을 고릅니다. MP4, MOV, M4V, WebM을 선택 영역에 끌어다 놓거나 직접 골라 주세요. 브라우저가 디스크에서 곧바로 읽습니다. 그동안 어디로도 아무것도 나가지 않습니다.
  2. 구간을 표시합니다. 영상을 재생하면서 시작할 곳에서 I를, 끝날 곳에서 O를 누르거나 막대의 손잡이를 끄세요. GIF는 몇 초짜리입니다. 파일이 작을지 어마어마할지를 정하는 것은 나머지 두 설정보다 이 길이입니다.
  3. 너비와 프레임 레이트를 고릅니다. 너비 480픽셀에 초당 12프레임이면 GIF의 웬만한 용도에 맞습니다. 너비를 절반으로 줄이면 픽셀은 4분의 1이 됩니다. 초당 12프레임이면 아무도 보지 못하는 프레임에 값을 치르지 않고도 움직임으로 읽힙니다.
  4. 만들고, 내려받습니다. 프레임을 읽어 애니메이션 전체에 쓸 256색 팔레트 하나를 고르고, 각 프레임은 달라진 부분만 써 냅니다. 다 되면 페이지에서 재생되는데, 내려받기가 주는 것과 같은 파일입니다.

자세한 설명

동영상을 GIF로 만드는 방법 어느 구간을, 어떤 너비로, 몇 프레임으로 고를지. 영상으로 만든 GIF가 원본 영상의 열 배가 되는 이유, 그리고 애초에 GIF를 써야 할 때.

자주 묻는 질문

제 동영상이 어딘가로 업로드되나요?

아닙니다. 읽고 뽑아내고 변환하는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 서버 쪽이라는 것이 없고, 이 페이지의 Content-Security-Policy에 연결해도 되는 주소가 전부 적혀 있는데 그중 이 사이트 것은 하나도 없습니다. 말로 듣기보다 직접 확인하고 싶다면, 인터넷을 끊고 그냥 GIF를 만들어 보세요.

어떤 영상 형식을 변환할 수 있나요?

MP4, M4V, MOV는 안에 무엇이 들었든 곧바로 읽습니다. H.264, HEVC, AV1, VP9 가운데 무엇이든 브라우저가 그 코덱을 디코딩할 수 있으면 문제 없습니다. 브라우저가 재생할 수 있는 나머지, 대표적으로 WebM은 플레이어를 각 시점으로 옮겨 가며 읽습니다. 더 느리고, 어느 프레임이 어디에 놓이는지가 조금 덜 정확합니다. 브라우저가 읽지도 재생하지도 못하는 파일, 실제로는 AVI, WMV, FLV와 대부분의 MKV는 중간에 실패하는 대신 그렇다는 메시지와 함께 거부합니다.

제 GIF는 왜 이렇게 큰가요?

GIF가 움직임이 아니라 그림 전체를 저장하는 1987년의 형식이기 때문입니다. 5초짜리 클립으로 만든 GIF를 그 5초짜리 MP4만큼 작게 만들 방법은 없습니다. 영상으로 만든 GIF는 흔히 원본 영상의 열 배예요. 실제로 크기를 정하는 세 가지는 순서대로 구간의 길이, 화면의 너비, 초당 프레임 수입니다. 너비를 절반으로 줄이면 픽셀은 4분의 1이 되고, 값을 치르는 것은 픽셀입니다.

왜 256색뿐인가요?

그게 형식입니다. GIF는 최대 256색짜리 표 하나를 싣고 각 픽셀을 그 표의 번호로 저장합니다. 이 도구는 표시한 구간의 모든 프레임에 든 색을 세어 256개 무리로 나눠 그 256색을 고릅니다. median cut이라는 표준적인 방법이고요. 그래서 팔레트가 고정된 색 묶음이 아니라 그 영상에 맞습니다. 없는 색이 있는 자리에서는 디더링이 가장 가까운 두 색을 섞어, 그러데이션이 줄무늬가 되지 않고 그러데이션으로 남습니다.

디더링 설정은 무엇을 하나요?

약간의 잡티를 내주고 심한 띠 현상을 막습니다. 켜면 평평한 네 개의 띠가 되었을 하늘이 그러데이션으로 남고, 대신 옅은 결이 생기고 파일이 커집니다. 끄면 그림이 더 평평해지고 파일이 작아지는데, 화면 녹화나 선화처럼 이미 평평한 색으로 이루어진 것에 어울립니다. 여기 쓰는 디더링은 오차 확산 방식이 아니라 정렬 방식이라, 달라지지 않은 배경이 프레임 사이에서 일렁이지 않고 완전히 가만히 있습니다.

길이나 용량에 제한이 있나요?

제한되는 것은 구간이고, 규칙이 아니라 메모리 때문입니다. 팔레트를 고르는 동안 구간의 모든 프레임을 한꺼번에 들고 있어야 해서, 페이지가 지금 설정이 얼마를 요구하는지 계산해 시작 전에 알려 줍니다. 탭이 메모리를 다 쓰고 사라지게 두는 대신 거부하는 것이죠. 구간을 짧게, 너비를 작게, 프레임 레이트를 낮게. 어느 쪽이든 그 값을 끌어내립니다.

소리도 남나요?

GIF는 소리를 담을 수 없습니다. 오디오가 있는 판본이 아예 없고, 웹이 GIF를 소리 없이 반복되는 영상으로 거의 대체한 가장 큰 이유이기도 합니다. 소리가 중요하다면 영상 그대로 두세요. 동영상 구간 자르기가 프레임 하나 다시 인코딩하지 않고 원하는 구간을 잘라 줍니다.

무료인가요? 가입해야 하나요?

무료이고 계정도, 로그인도, 체험판도, 워터마크도 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 영상에 관한 것은 넘어가지 않습니다.