실제 상황: MP4 파일인데 Firefox에서 소리만 나오고 화면이 보이지 않을 때
컨테이너는 MP4지만 영상 트랙이 HEVC 10-bit일 수 있습니다. 운영체제 코덱과 브라우저 빌드에 따라 해당 조합을 디코딩하지 못하면 확장자가 익숙해도 재생할 수 없습니다.
판단 결과: 다른 기기에서 원본 코덱을 확인하고 지원되는 경우 H.264+AAC MP4 또는 VP9/Opus WebM으로 다시 인코딩합니다. DRM 파일이라면 변환으로 우회하지 않습니다.
단계별로 적용하는 방법
- 파일 이름의 확장자와 File 객체의 MIME 타입을 함께 보되 둘 중 어느 하나도 절대적인 판정으로 쓰지 않습니다.
- 브라우저의 미디어 요소로 메타데이터와 첫 프레임이 실제 디코딩되는지 확인합니다.
- ffmpeg 분석 결과가 제공되면 영상·오디오 코덱, 프로파일과 픽셀 형식을 살펴봅니다.
- 출력 컨테이너가 선택한 영상·오디오 코덱 조합을 담을 수 있는지 검증합니다.
- 현재 브라우저에서 재생할 목적과 다른 기기에 전달할 목적을 분리해 가장 넓은 호환 조합을 선택합니다.
비교해서 선택하기
| 컨테이너 | 흔한 영상 코덱 | 흔한 오디오 코덱 | 확인할 점 |
|---|---|---|---|
| MP4·M4V | H.264, HEVC, AV1 | AAC, MP3 | 코덱 라이선스와 OS 지원 차이 |
| WebM | VP8, VP9, AV1 | Opus, Vorbis | 일부 편집 앱의 가져오기 호환성 |
| MOV | H.264, HEVC, ProRes 등 | AAC, PCM 등 | 종류가 넓어 확장자만으로 판단 불가 |
| 오디오 전용 M4A | 해당 없음 | AAC, ALAC 등 | 같은 확장자 안의 손실·무손실 차이 |
주의할 점
- 파일 확장자를 .mov에서 .mp4로 이름만 바꿔도 내부 코덱은 변하지 않아 호환성 문제가 해결되지 않습니다.
- ‘모든 영상 형식 지원’이라는 표현은 실제 브라우저·WASM 코덱 범위를 반영하지 못하므로 사용하지 않습니다.
- DRM으로 보호된 트랙은 정상적인 디코딩을 제한하며 이 도구는 보호를 제거하거나 우회하지 않습니다.
기술적 한계와 브라우저 차이
- 코덱 지원은 브라우저 이름뿐 아니라 운영체제, 하드웨어 디코더와 설치된 구성 요소에 따라서도 바뀝니다.
- canPlayType은 ‘아마 가능’ 수준의 힌트이고 손상 파일이나 특정 프로파일의 실제 성공까지 보장하지 않습니다.
- ffmpeg.wasm 빌드 크기와 라이선스를 관리하기 위해 모든 디코더·인코더가 포함되지 않을 수 있습니다.
영상 확장자와 코덱은 어떻게 다를까 FAQ
MP4는 항상 H.264인가요?
아닙니다. MP4에는 H.264 외에도 HEVC, AV1 등 여러 영상 코덱과 다양한 오디오 코덱이 들어갈 수 있습니다.
MIME 타입이 video/mp4면 지원되는 파일인가요?
컨테이너 힌트일 뿐 내부 코덱까지 확인해 주지 않습니다. 실제 메타데이터 로드와 디코딩 테스트가 필요합니다.
WebM이 MP4보다 화질이 좋은가요?
컨테이너만으로 화질을 비교할 수 없습니다. 내부 코덱, 비트레이트, 해상도와 인코더 설정을 함께 봐야 합니다.
재생은 되는데 변환이 안 되는 이유는 무엇인가요?
브라우저의 네이티브 디코더는 지원하지만 ffmpeg.wasm 빌드에 같은 코덱이 없거나, 선택한 출력 인코더가 포함되지 않았을 수 있습니다.
코덱을 자동으로 설치해 주나요?
아닙니다. 기기에 구성 요소를 설치하지 않으며 현재 브라우저와 제공된 WASM 코어 안에서 확인된 기능만 사용합니다.