코덱이란 무엇이고, MP4와는 어떻게 다른가
영상 파일에서 헷갈리는 것은 거의 전부 한 가지 구분에서 나옵니다. 확장자는 상자의 이름이지 그 안에 든 것의 이름이 아닙니다. 이 둘만 떼어 놓으면 나머지는 대부분 수수께끼가 아니게 됩니다.
수정
상자와 내용물
컨테이너(MP4 · MOV · WebM · MKV)는 파일 안의 것들이 어떻게 배치되어 있는지를 정합니다. 영상 흐름이 어디 있고 소리가 어디 있는지, 둘이 시간상 어떻게 맞물리는지, 색인이 어디 있는지.
코덱(그림 쪽은 H.264 · HEVC · VP9 · AV1, 소리 쪽은 AAC · Opus · MP3)은 그 내용물이 애초에 어떻게 압축되었는지입니다.
그래서 `.mp4`는 상자 모양만 알려 주고 안에 든 것은 거의 알려 주지 않습니다. 똑같이 `.mp4`로 끝나는 두 파일이 전혀 다른 코덱을 담고 있을 수 있고, 한쪽이 잘 열리는 기기에서 다른 쪽은 안 열릴 수 있습니다.
그래서 어떤 변환은 공짜이고 어떤 변환은 아닙니다
MOV → MP4는 거의 공짜입니다. 둘은 같은 형식 계열이고 MOV 안의 영상은 대개 이미 H.264인데, 그것은 MP4가 그대로 받는 코덱입니다. 그러니 압축된 데이터를 그대로 옮기고 그 둘레에 새 색인만 씁니다. 디코드도 재압축도 없습니다. 무손실이고 거의 즉시 끝납니다. 이것을 재mux라고 부릅니다.
MP4 → WebM은 정반대입니다. WebM은 H.264를 받지 않으므로 모든 프레임을 디코드해서 VP9로 다시 압축하고 소리도 Opus로 다시 압축해야 합니다. 실제 시간이 걸리고 화질이 한 세대 내려갑니다.
두 작업은 "변환"이라는 낱말 말고는 공통점이 없습니다. 저희 변환 도구가 누르기 전에 어느 쪽인지 말해 주는 이유입니다.
코덱 없이도 할 수 있는 일이 의외로 많습니다
예를 들어 자르기는 이미 압축된 표본 중 무엇을 남길지 고르는 일일 뿐입니다. 디코드가 없으니 화질이 비트 단위로 같고 거의 즉시 끝납니다.
대가가 하나 있는데 그것은 압축의 원리에서 곧바로 나옵니다. 시작점은 키프레임에만 앉을 수 있습니다. 키프레임은 혼자 힘으로 그려지는 프레임이고, 그 사이의 프레임들은 앞 프레임과 무엇이 다른지로 적혀 있습니다. 그 사슬 한가운데를 자르면 첫 몇 초가 참조할 것이 없어 깨진 채로 나옵니다.
그래서 요청한 지점 앞의 가장 가까운 키프레임으로 당기고, 실제로 어디서 잘리는지를 보여 줍니다. 정확히 그 프레임에서 자르려면 앞부분을 다시 인코딩해야 하는데 그러면 화질이 깎입니다 — 어느 쪽을 택할지는 조용한 대체가 아니라 사용자의 선택이어야 합니다.
소리를 M4A로 뽑는 것도 같은 수법입니다. 압축된 AAC 데이터를 건드리지 않고 새 상자로 들어 옮깁니다.
지원 여부는 확장자가 아니라 코덱 단위입니다
어떤 기기가 MP4를 못 연다고 할 때 문제가 컨테이너인 경우는 거의 없습니다. 대개는 안에 든 코덱이 지원되지 않는다는 뜻입니다. `.mp4` 안의 HEVC가 가장 흔한 경우입니다 — 최근 휴대폰이 그것으로 찍고, 오래된 소프트웨어가 그것을 거부합니다.
이름을 바꿔도 아무 일이 일어나지 않는 이유도 같습니다. `.mov`를 `.mp4`로 고치는 것은 상자에 붙은 딱지만 바꾸는 일이고 상자도 내용물도 그대로입니다.
저희의 한계도 여기서 나옵니다
저희 demuxer는 MP4 · MOV · M4V가 속한 ISOBMFF 계열을 읽습니다. WebM이 올라앉은 Matroska를 여는 코드는 저희에게 없습니다. 그래서 "WebM → MP4"는 목록에 없습니다 — 이미 하고 있는 것의 반대처럼 들리지만, 올려 두면 없는 능력을 있다고 말하는 것이 됩니다.
인코딩은 저희가 아니라 브라우저가 합니다. 무엇을 인코딩할 수 있는지는 기계와 운영체제에 따라 다릅니다. 그래서 메뉴를 늘어놓고 중간에 실패하는 대신, 브라우저에 직접 물어보고 할 수 있다고 답한 것만 내놓습니다.
업로드 없이 지금 해 보기
.mp4인데 이 기기에서 재생이 안 됩니다.
대개는 컨테이너가 아니라 안에 든 코덱 때문입니다. MP4 안의 HEVC가 흔한 경우로, 최근 휴대폰이 그것으로 찍고 오래된 재생기가 디코드하지 못합니다. H.264로 다시 인코딩하면 해결되고, 이름을 바꾸는 것으로는 안 됩니다.
확장자를 바꾸면 변환이 되나요?
아닙니다. 확장자는 딱지일 뿐 형식이 아닙니다. 이름을 바꾸면 재생기가 그냥 지나쳤을 파일을 한번 열어 보기는 하지만, 안의 바이트는 그대로라 정말 못 읽는 것이면 실패합니다.
MOV를 MP4로 바꾸면 화질이 떨어지나요?
안의 영상이 이미 H.264라면 떨어지지 않습니다. 대개 그렇습니다. 압축된 데이터를 건드리지 않고 새 상자로 옮기므로, 같은 그림이 다른 상자에 담겨 나옵니다.
읽어 둘 만한 글
- HEIC 파일이란 무엇이고, 왜 안 열릴까
- PNG·JPG·WebP·AVIF — 무엇을 골라야 할까
- PDF 용량이 큰 이유 — 그리고 실제로 줄이는 것
- MOV와 MP4 — 실제로 무엇이 다른가
- 배경 제거는 실제로 어떻게 동작하나 — 그리고 언제 실패하나
- AI 업스케일은 없던 세부를 되살릴까
- SRT와 VTT — 어느 자막 파일이 필요한가
- 스템이란 무엇이고, 완성된 곡을 정말 되풀 수 있나
- PDF가 안 열립니다 — 왜일까요
- CSV와 엑셀 — 실제로 무엇이 다른가
- AI 요약을 믿어도 될까
- WAV와 MP3 — 실제로 어느 쪽이 필요한가
- 제 영상은 왜 옆으로 누워 있을까