MP4 파일: 안에 무엇이 들어 있고, 무엇으로 변환해야 할까
MP4가 실제로 무엇을 담는지, 같은 확장자에 왜 전혀 다른 코덱이 들어가는지, 어떤 변환이 무손실인지 설명합니다. 업로드 없이 브라우저에서 MP4를 변환하세요.
한눈에 보기
- 종류
- 동영상
- 컨테이너 형식
- 예
- 확장자
- .mp4
- MIME 유형
- video/mp4
- 주요 코덱
- h264, h265, av1, aac
- 다른 이름
- MPEG-4 Part 14
MP4는 코덱이 아니라 컨테이너이며, 이 포맷에 관해 헷갈리는 거의 모든 것이 이 한 가지 사실에서 비롯됩니다. 파일은 중첩된 박스(사양에서는 box, 오래된 도구에서는 atom이라고 부릅니다)의 트리로, ISO/IEC 14496-14에 정의되어 있으며 이는 Apple이 QuickTime에서 기여한 ISO Base Media File Format의 한 프로파일입니다. 실제로 중요한 박스는 두 가지입니다. 모든 트랙을 기술하는 색인인 moov와, 실제 압축된 프레임이 담긴 불투명한 덩어리인 mdat입니다.
더 읽기
컨테이너는 트랙을 기술할 뿐이므로, 두 파일이 모두 유효한 MP4이면서 그 밖에는 공통점이 전혀 없을 수 있습니다. 어떤 파일은 H.264 동영상과 AAC 오디오를, 다른 파일은 H.265를, 또 다른 파일은 AV1을 담을 수 있고, 첫 번째 파일을 재생하는 플레이어가 세 번째 파일에서는 실패할 수 있습니다. 확장자는 똑같이 .mp4이고 MIME 유형도 똑같이 video/mp4인데도 말입니다. 그래서 "여기서 MP4가 되나요"라는 질문에는 일반적인 답이 없고, MP4와 MOV나 MKV 사이의 변환은 대개 즉시 끝나지만 WebM으로의 변환은 그렇지 않습니다. 앞의 경우는 다시 포장하는 작업이고, 뒤의 경우는 모든 프레임을 재인코딩해야 합니다.
moov 색인은 이 사이트가 작성하는 모든 MP4에 적용하는 -movflags +faststart도 설명해 줍니다. 트랙 길이는 인코딩이 끝나야 알 수 있으므로 인코더는 자연스럽게 moov를 파일 끝에 둡니다. 그러면 HTTP로 스트리밍하는 플레이어는 마지막 바이트가 도착할 때까지 재생을 시작할 수 없습니다. faststart는 색인을 앞에 두도록 파일을 다시 쓰며, 내보낼 때 한 번의 추가 처리를 대가로 즉시 시작되는 재생을 얻습니다.
이름은 규칙이 아니라 관례입니다. .m4a는 오디오만 담은 MP4 파일, .m4v는 Apple의 동영상 변형, .mp4는 일반적인 경우입니다. 셋 다 같은 컨테이너이며, 이름을 바꾼다고 변환되지는 않습니다. 이름 바꾸기가 지름길이 되지도 않습니다. 여기서 오디오를 M4A로 추출하면 기존 AAC 트랙을 그대로 옮기지 않고 재인코딩하므로, MP3와 똑같이 두 번째 손실 세대가 됩니다. 같은 코덱 계열이라는 점만 다를 뿐입니다.
MP4을(를) 다른 형식으로 변환
MP4→MP3
오디오 트랙만 남기고 더 작은 파일로 압축MP4→GIF
영상 클립을 움직이는 GIF로 만듭니다MP4→WAV
오디오 트랙만 남기고 음질은 그대로MP4→MOV
같은 스트림을 다시 포장합니다. 무손실이며 거의 즉시 끝납니다MP4→AVI
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다MP4→WebM
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다MP4→MKV
같은 스트림을 다시 포장합니다. 무손실이며 거의 즉시 끝납니다MP4→M4A
오디오 트랙만 남기고 더 작은 파일로 압축MP4→AAC
오디오 트랙만 남기고 더 작은 파일로 압축MP4→FLAC
오디오 트랙만 남기고 음질은 그대로
다른 형식을 MP4(으)로 변환
MOV→MP4
같은 스트림을 다시 포장합니다. 무손실이며 거의 즉시 끝납니다MKV→MP4
같은 스트림을 다시 포장합니다. 무손실이며 거의 즉시 끝납니다AVI→MP4
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다WebM→MP4
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다WMV→MP4
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다FLV→MP4
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다MPEG→MP4
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다3GP→MP4
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다TS→MP4
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다M4V→MP4
같은 스트림을 다시 포장합니다. 무손실이며 거의 즉시 끝납니다OGV→MP4
새 컨테이너에 맞게 모든 프레임을 재인코딩합니다MP3→MP4
검은 화면 위에 오디오를 얹어 동영상 컨테이너에 담습니다WAV→MP4
검은 화면 위에 오디오를 얹어 동영상 컨테이너에 담습니다
MP4 자주 묻는 질문
MP4는 손실 압축인가요, 무손실인가요?
둘 다 아닙니다. 컨테이너는 이에 관여하지 않으며, 안에 든 트랙이 결정합니다. 실제로 MP4는 거의 항상 손실 압축인 H.264나 H.265 동영상과 손실 압축인 AAC 오디오를 담으므로 가지고 있는 파일은 거의 확실히 손실 압축이지만, 이는 MP4 자체가 아니라 코덱의 특성입니다.
내 MP4가 어떤 기기에서는 재생되지 않는 이유는 무엇인가요?
확장자는 플레이어에게 코덱에 대해 아무것도 알려 주지 않습니다. H.265나 AV1 동영상을 쓰는 파일은 H.264만 디코딩하는 하드웨어에서 열리지 않습니다. 두 파일 모두 정상적인 MP4인데도 말입니다. H.264 동영상과 AAC 오디오로 된 MP4로 변환하는 것이 호환성이 가장 넓은 선택이며, 이 사이트가 만드는 것도 그 형태입니다.
어떤 MP4 변환이 무손실인가요?
안에 든 코덱이 대상 컨테이너에서 이미 허용되는 경우의 MP4 MOV 변환, MP4 MKV 변환, MP4 M4V 변환입니다. 이들은 스트림 복사로 실행됩니다. 압축된 프레임을 건드리지 않고 그대로 옮기므로 결과 동영상은 비트 단위로 동일합니다. 이 경우 "스트림 복사됨" 안내가 표시됩니다. MP4를 WebM이나 MP3로 바꾸는 것처럼 코덱이 바뀌는 변환은 반드시 재인코딩됩니다.
MP4, M4A, M4V의 차이는 무엇인가요?
관례상 담는 내용만 다른 같은 컨테이너입니다. M4A는 오디오만 담고, M4V는 Apple의 동영상 변형이며, MP4는 일반적인 경우입니다. 확장자를 바꿔도 바이트는 그대로이므로 아무것도 변환되지 않습니다. 다만 플레이어가 올바르게 추측하지 못하게 만들 수는 있습니다.
이 사이트에서는 얼마나 큰 MP4까지 처리할 수 있나요?
무엇으로 변환하느냐에 따라 다릅니다. 한도는 입력 파일이 아니라 작업하는 동안 붙잡고 있어야 하는 양에 따라 정해지기 때문입니다. 오디오 추출은 출력이 원본의 일부에 불과하므로 데스크톱에서 최대 2 GB까지, 컨테이너 교체는 출력이 입력과 같은 크기이므로 약 667 MB까지 가능하며, 휴대폰에서는 모든 경우 512 MB가 한도입니다. 64 MB가 넘는 파일은 변환기가 작업하는 메모리로 복사하지 않고 원래 위치에서 읽는데, 바로 이 덕분에 수 GB 입력도 가능해집니다. 각 업로드 상자에 해당 변환 조합의 실제 한도가 표시됩니다.
여기서 MP4를 변환하면 동영상이 업로드되나요?
아니요. 디먹싱과 인코딩 모두 WebAssembly로 빌드한 ffmpeg를 통해 브라우저의 백그라운드 스레드에서 실행됩니다. 시작하기 전에 네트워크 패널을 열어 보세요. 파일을 전송하는 요청은 하나도 없습니다.
MP4를 WebM으로 변환하는 것이 MKV로 변환하는 것보다 훨씬 느린 이유는 무엇인가요?
MKV는 H.264를 받아들이므로 동영상 트랙이 복사되고, 작업은 사실상 파일을 다시 쓰는 것에 불과합니다. WebM은 H.264도 AAC도 받아들이지 않으므로 모든 프레임을 디코딩한 뒤 VP8이나 VP9로 재인코딩해야 합니다. 사용자의 CPU에서 이루어지는 실제 압축 작업입니다.
MP4에서 정지 이미지를 꺼낼 수 있나요?
네, 그리고 무엇을 얻는지 알아 둘 만합니다. 디코딩한 프레임 한 장을 PNG나 JPG로 다시 인코딩한 것입니다. 원본 프레임이 이미 손실 압축이므로, 그 프레임의 PNG는 원래 장면이 아니라 그 프레임에 대해서만 무손실입니다.