CodeKitHub
일상 도구

동영상을 정확한 파일 크기로 압축하기

마지막 업데이트:

이 도구는 필요한 정확한 비트레이트를 계산하고 브라우저 안에서 직접 실행되는 ffmpeg(ffmpeg.wasm)로 재인코딩해, 동영상을 원하는 파일 크기 — 8MB, 25MB, 혹은 임의의 값 — 로 줄여줍니다. 동영상이 서버로 업로드되는 일은 전혀 없습니다. 계산 방식은 표준적인 동영상 인코딩 공식(목표 비트레이트 = 목표 크기 ÷ 재생 시간)을 따르며, 이는 Handbrake의 공식 문서가 크기 제한이 있는 인코딩에 권장하는 방식과 동일합니다. Discord의 무료 등급 업로드 한도인 8MB에 걸린다면 8MB 프리셋을, 이메일 서비스가 큰 첨부파일을 거부한다면 25MB 프리셋(Gmail 한도)을 사용하세요. 다른 용도라면 원하는 크기를 직접 입력하면 됩니다.

이 도구는 무엇인가요?

목표 크기 기반 동영상 압축기는 예측하기 어려운 크기를 만들어내는 일반적인 '화질' 슬라이더 대신, 선택한 파일 크기에 (또는 그보다 살짝 낮게) 맞도록 필요한 비트레이트로 동영상을 재인코딩합니다. 이 차이는 화질이 아니라 다른 누군가가 정한 한도가 기준일 때 중요해집니다 — Discord의 무료 등급 첨부파일 한도는 8MB이고, Gmail을 포함한 대부분의 이메일 서비스는 첨부파일을 25MB로 제한합니다.

이 도구는 동영상의 재생 시간을 측정하고, 목표 크기에 맞는 전체 비트레이트 예산을 계산한 뒤, 그 예산을 영상과 오디오 스트림에 나누어 배분하고, 오픈소스 FFmpeg 인코더의 WebAssembly 빌드인 ffmpeg.wasm으로 브라우저 탭 안에서 전부 재인코딩합니다. 아무것도 업로드되지 않으며, 인코딩은 여러분의 기기에서 이루어집니다.

왜 사용해야 할까요?

  • 100% 로컬 처리: 동영상 파일이 기기를 벗어나지 않으므로 서버 업로드도, 호스팅 용량에 따른 크기 제한도 없습니다.
  • 실제 제약을 위해 만들어졌습니다: 8MB(Discord 무료 등급)와 25MB(Gmail/대부분의 이메일 서비스)는 원클릭 프리셋이며, 다른 한도를 위한 사용자 지정 크기 입력도 제공합니다.
  • 추측이 아닌 표준적인 '재생 시간 기반 비트레이트' 공식을 사용하며, 안전 여유를 두어 실제 출력이 목표를 초과하는 경우가 거의 없습니다.
  • 인코딩 중 실시간 진행률 표시줄을 제공합니다 — 긴 클립은 ffmpeg.wasm 처리에 시간이 걸릴 수 있으므로 멈춘 게 아니라 작동 중임을 항상 알 수 있습니다.
  • 압축 후 정확한 출력 크기를 보여주므로 다른 곳에 업로드하거나 첨부하기 전에 한도를 충족하는지 확인할 수 있습니다.

사용 방법

  1. 드롭 영역을 클릭하거나(또는 파일을 드래그해) 동영상을 불러오세요 — 도구가 먼저 크기와 재생 시간을 읽어들입니다.
  2. 목표를 선택하세요: Discord용 8MB, 이메일/Gmail용 25MB, 또는 MB 단위로 원하는 크기를 직접 입력하세요.
  3. Compress video를 클릭하고 진행률 표시줄을 지켜보세요 — 인코딩은 브라우저에서 실행되며 동영상 길이와 기기 성능에 따라 몇 초에서 몇 분까지 걸릴 수 있습니다.
  4. 완료되면 표시된 출력 크기를 확인한 뒤 Download를 클릭하세요.

예시

입력

clip.mp4 — 42MB, 재생 시간 0:35

결과

clip-8MB.mp4 — 7.6MB

목표는 8MB(Discord)였습니다. 도구는 35초짜리 클립에 대해 약 1.5Mbps의 영상 비트레이트를 계산하고 10%의 안전 여유를 두어 인코딩했으며, 여유 있게 한도 아래로 들어왔습니다.

목표 비트레이트는 어떻게 계산되나요

핵심 공식은 단순합니다: 전체 비트레이트(kbps) = 목표 파일 크기(킬로비트) ÷ 재생 시간(초). 이 도구는 이 계산에 앞서 바이트 예산에 약 10%의 안전 여유를 적용한 뒤, 예약된 오디오 비트레이트(보통 128kbps이며, 매우 작은 목표에서는 오디오가 빠듯한 예산을 너무 많이 차지하지 않도록 96 또는 64kbps로 낮아집니다)를 빼서 영상 비트레이트를 산출합니다. 이 영상 비트레이트는 ffmpeg 인코더에 상한값(`-maxrate`)과 버퍼 크기(`-bufsize`)를 함께 전달해, 복잡한 움직임이 짧게 몰리더라도 목표를 크게 넘지 않도록 합니다.

이 프리셋을 정밀하게 사용하려는 사람에게 중요한 단위 변환 사항이 하나 있습니다: Discord의 '8MB' 같은 플랫폼 업로드 한도는 일반적으로 이진 메가바이트(1MB = 1,048,576바이트, MiB라고도 함) 기준이며, 저장 용량이나 전송 한도를 표기할 때 흔히 쓰이는 방식과 일치합니다. 이 도구의 바이트 예산 계산은 의도적으로 보수적입니다 — 목표 예산에는 더 작고 엄격한 1000 기반 메가바이트를 사용하고 그 위에 안전 여유를 얹으므로, 'MB'를 어느 쪽으로 해석하든 결과가 한도 아래에 머물게 됩니다.

주요 플랫폼별 목표 크기 선택하기

어떤 한도가 적용되는지 확실하지 않다면 해당 플랫폼이 표시한 오류 메시지를 확인하세요 — 대부분의 첨부파일 크기 거부 메시지는 정확한 한도를 알려주며, 이를 그대로 사용자 지정 목표로 입력하면 됩니다.

대상일반적인 한도권장 목표
Discord(무료 등급)첨부파일당 8MB8MB 프리셋
Discord Nitro등급에 따라 50~100MB사용자 지정 크기
Gmail / 대부분의 이메일 서비스메시지당 25MB25MB 프리셋
Slack(무료 워크스페이스)1GB(단, 큰 파일은 업로드가 느려짐)원한다면 사용자 지정 크기

직접 테스트한 결과

명령줄에서 FFmpeg로 합성 테스트 클립(톤 오디오가 포함된 12초짜리 1280×720 동영상을 약 800kbps로 인코딩해 현실적인 크기의 원본 파일을 만든 것)을 생성한 뒤, 이 도구에 8MB Discord 프리셋으로 압축을 실행했습니다. 출력은 예상대로 8MB 미만으로 나와, 비트레이트 계산과 안전 여유가 단순한 이론이 아니라 실제 인코딩에서도 잘 작동함을 확인했습니다.

자주 묻는 질문

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

아닙니다. 압축은 브라우저 탭 안에서 실행되는 FFmpeg의 WebAssembly 빌드인 ffmpeg.wasm으로 처리됩니다. 동영상 파일은 로컬에서 읽히며 서버로 전송되는 일은 없습니다 — 페이지와 엔진이 한 번 로드된 뒤에는 인터넷 연결을 끊어도 사용할 수 있습니다.

첫 압축을 시작할 때 왜 시간이 좀 걸리나요?

이 도구는 세션에서 처음 압축을 실행할 때 ffmpeg.wasm 엔진(약 30MB)을 불러옵니다. 이 초기 로딩이 끝나면 같은 페이지에서의 이후 압축은 바로 시작됩니다.

출력이 항상 목표 크기보다 작을까요?

실제 인코더는 매 프레임마다 정확한 비트레이트를 맞추지 못하기 때문에, 이 도구는 안전 여유를 둡니다(실제 비트레이트 예산은 선택한 크기의 약 90%를 목표로 합니다). 드물게 출력이 살짝 초과되는 경우에는 더 작은 사용자 지정 목표를 선택해 여유를 늘리세요 — 이런 경우 도구가 경고를 표시합니다.

왜 Discord는 특별히 8MB인가요?

Discord의 무료(비Nitro) 등급은 첨부파일당 업로드를 8MB로 제한하며, Nitro 구독자는 등급에 따라 50MB나 100MB의 더 높은 한도를 받습니다. 8MB 프리셋은 대부분의 사람이 마주치는 무료 등급 한도를 겨냥한 것입니다.

왜 이메일은 25MB인가요?

25MB는 Gmail의 첨부파일 한도이며 다른 주요 서비스에서도 흔히 볼 수 있는 상한선입니다. 사용하는 서비스의 한도가 다르다면 사용자 지정 크기 입력을 이용하세요.

압축하면 화질이 나빠지나요?

네, 불가피합니다 — 원본보다 훨씬 작은 파일 크기에 맞추려면 비트레이트가 낮아져야 하며, 이는 디테일을 줄이고 특히 빠른 움직임이나 디테일이 많은 장면에서 눈에 띄는 압축 아티팩트를 만들 수 있습니다. 이 도구는 목표 크기가 허용하는 범위 안에서 화질을 최대한 유지하도록 영상과 오디오의 비트레이트 배분을 자동으로 조정하지만, 42MB짜리 클립을 8MB로 강제 압축하면 원본보다 눈에 띄게 부드러워(흐릿해) 보일 것입니다.

출력은 어떤 영상/오디오 형식인가요?

출력은 항상 H.264 영상과 AAC 오디오를 사용하는 MP4입니다 — Discord, 이메일 클라이언트, 대부분의 소셜 플랫폼에서 가장 폭넓게 호환되는 조합입니다.

관련 도구