손상된 MP4·MOV 동영상 복구
MP4나 MOV 파일에서 손상된 프레임을 찾아 어디가 깨졌는지 정확히 보여 주고, 끊기지 않고 재생되는 복구 사본을 만듭니다. 모든 처리는 사용 중인 기기에서 이루어지며 파일은 기기 밖으로 나가지 않습니다.
이 페이지가 실제로 검사하는 것
동영상을 고르면 이 페이지가 스트림 전체를 훑어 데이터가 손상된 프레임을 찾고, 그 위치를 타임라인에 표시합니다. 복구하면 정상적으로 디코딩되는 프레임만 담은 새 파일을 만들므로, 결과물은 중간에 멈추지 않고 재생됩니다. 모든 처리는 사용 중인 기기에서 이루어지며 아무것도 업로드되지 않습니다.
MP4나 MOV 안에서 H.264 또는 HEVC 프레임은 사슬처럼 저장됩니다. 길이를 나타내는 숫자, 그 길이만큼의 화면 데이터, 다시 다음 길이 숫자가 이어지며, 이것이 프레임 데이터가 끝날 때까지 반복됩니다. 이 사슬은 프레임의 끝에 정확히 맞아떨어져야 합니다. 길이가 0이거나 데이터가 끝나는 지점을 넘어선다면, 그 프레임의 바이트는 파일이 주장하는 내용이 아닙니다.
패킷 길이를 확인한 뒤에는 프레임 그룹을 하나씩 디코딩합니다. 디코딩에 실패하면 그 그룹을 제외하고 다음 키프레임부터 다시 검사합니다. 정확히 어느 프레임에서 실패했는지 알 수 없을 수도 있으므로, 타임라인에는 해당 그룹 전체가 표시됩니다.
손상된 동영상을 ffmpeg에서 처리하다가 Invalid NAL unit size (0 > 1241) 같은 메시지가 지나가는 것을 본 적이 있다면, 바로 이 상태를 보고하는 것입니다. 플레이어는 보통 멈추거나, 건너뛰거나, 뭉개진 블록을 보여 줍니다. 존재하지 않는 바이트로 할 수 있는 일이 그것뿐이기 때문입니다.
검증하려면 동영상 코덱에 맞는 디코더가 필요합니다. 동영상을 디코딩할 수 없는 브라우저에서는 복구한 사본을 검증할 수 없습니다.
손상에는 두 종류가 있고, 모습도 다릅니다
데이터가 손상된 프레임. 무언가가 잘못된 바이트를 기록한 경우입니다. USB 메모리로 복사하다 중단되었거나, 메모리 카드가 고장 나기 시작했거나, 동기화가 중간에 멈춘 경우가 그렇습니다. 파일의 길이와 인덱스는 온전해서 동영상은 정상적으로 열리지만, 안에 있는 일부 프레임을 쓸 수 없습니다. 타임라인에서는 손상이 생긴 곳마다 흩어진 표시로 나타납니다.
중간에 끊긴 동영상. 다운로드나 전송이 도중에 멈춘 경우입니다. 헤더에는 여전히 원래 길이가 기록되어 있어 플레이어는 전체 길이의 재생 막대를 보여 주지만, 화면 데이터는 중간에서 끝나 버립니다. 이 페이지는 파일에 기록된 길이와 실제로 도달할 수 있는 마지막 프레임을 비교해 이를 감지하며, 타임라인에서는 끝부분의 회색 블록 하나로 나타납니다.
두 경우를 구분하는 이유는 기대할 수 있는 결과가 다르기 때문입니다. 흩어진 손상은 여기저기서 1초 정도씩 잃는 데 그치는 경우가 많습니다. 반면 40% 지점에서 끊긴 파일은 동영상의 60%가 없으며, 기록된 적 없는 내용을 만들어 낼 수 있는 도구는 없습니다.
복구한 파일이 더 짧은 이유
동영상 프레임은 서로 독립적이지 않습니다. 키프레임은 그 자체로 완전하지만, 그 뒤의 프레임은 키프레임과의 차이로 저장됩니다. 그래서 키프레임의 데이터가 손상되면, 그 키프레임에 의존하는 프레임은 자기 데이터에 아무 문제가 없어도 모두 쓸 수 없게 됩니다. 손상된 프레임이 10개뿐인 파일에서 그보다 훨씬 많은 프레임을 잃을 수 있는 이유입니다.
복구는 실제로 디코딩할 수 있는 프레임만 남기고 빈 구간을 이어 붙여, 손상된 곳에서 멈추지 않고 처음부터 끝까지 재생되게 합니다. 그 대가로 결과물은 버려진 분량만큼 원본보다 짧아집니다. 얼마나 짧아지는지는 실행하기 전에 알려 드리고, 결과 화면에서도 다시 보여 드립니다.
기본 모드에서는 남긴 프레임을 재인코딩 없이 복사합니다. 전체 디코딩 검사에는 시간이 걸리며, 선택 사항인 ‘화면이 불완전한 프레임도 남기기’를 켜면 남긴 동영상을 다시 인코딩합니다.
소리도 남고, 싱크도 맞습니다. 빈 구간을 이어 붙이면 화면이 원래 길이의 사운드트랙과 더 이상 맞지 않으므로, 오디오도 정확히 같은 경계에서 잘라 냅니다. 남긴 화면 구간마다 그에 해당하는 소리 구간이 함께하며, 같은 만큼 앞당겨집니다. 한 구간 안에서는 화면과 소리가 정확히 맞물려 있고, 어긋날 수 있는 곳은 구간과 구간이 이어지는 지점뿐입니다. 그마저도 오디오 패킷 하나의 절반, 약 10밀리초를 넘지 않습니다. 사람이 입 모양과 소리가 어긋난다고 느낄 수 있는 수준보다 한 자릿수 작은 값입니다.
이 도구로 할 수 없는 일
아예 열리지 않는 파일은 여기서 다룰 수 없습니다. 모든 MP4에는 각 프레임이 어디에 있는지 기록한 인덱스가 들어 있습니다. 녹화가 제대로 마무리되지 않고 멈췄을 때 흔히 그렇듯 이 인덱스가 손상되었거나 없다면, 따라갈 지도가 없는 셈입니다. 이때 이 페이지는 헛돌지 않고 그렇다고 알려 드립니다. 이런 파일을 살리려면 원본을 다시 구하거나, 프레임 경계를 추정해 인덱스를 다시 만드는 프로그램이 필요합니다.
오디오는 손상 여부를 검사하지 않습니다. 기존 오디오 패킷은 남긴 동영상에 맞춰 잘라 낸 뒤 복사합니다. 이미 손상되었거나 빠져 있던 오디오는 이 과정으로 되살릴 수 없습니다.
H.264와 HEVC만 지원합니다. 프레임 앞에 길이 정보를 붙여 저장하는 코덱은 이 두 가지이며, 검사가 읽는 것이 바로 이 길이 정보입니다. MJPEG, MPEG-4 Part 2 등은 프레임을 다른 방식으로 배치하므로, 이 잣대로 재면 모두 손상된 것처럼 보입니다. 그래서 이 페이지는 이런 파일을 처리하지 않습니다.
자주 묻는 질문
동영상이 어딘가로 업로드되나요?
업로드되지 않습니다. 파일은 사용 중인 기기의 브라우저가 읽고, 복구한 사본도 같은 기기에 저장됩니다. 서버로 전송되는 것은 없습니다. 검사하는 동안 브라우저의 네트워크 패널을 열어 보거나, 복구를 시작하기 전에 인터넷 연결을 끊고 진행해 보면 확인할 수 있습니다.
복구하면 화질이 떨어지나요?
기본 모드에서는 남긴 프레임을 재인코딩 없이 복사합니다. ‘화면이 불완전한 프레임도 남기기’를 켜면 동영상을 다시 인코딩하므로 화질이 달라질 수 있고, 복구된 프레임에는 블록 모양의 깨짐이 보일 수 있습니다.
복구한 파일에도 소리가 있나요?
있으며, 화면과 싱크도 맞습니다. 오디오는 화면과 같은 경계에서 잘리고 같은 만큼 앞당겨지므로, 남긴 구간마다 화면과 소리가 정확히 맞물립니다. 구간과 구간이 이어지는 지점에서만 조금 어긋날 수 있는데, 그 차이는 최대 오디오 패킷 절반, 약 10밀리초로 사람이 알아챌 수 있는 수준보다 훨씬 작습니다. 다만 버려진 구간에 속한 소리는 되찾을 수 없습니다. 그 소리와 함께 있던 화면도 사라졌기 때문입니다.
검사 결과는 정상인데 여전히 재생되지 않습니다. 왜 그런가요?
이 검사는 H.264와 HEVC 동영상의 화면 데이터만 확인합니다. 검사를 통과한 파일이라도 플레이어가 지원하지 않는 코덱, 손상된 오디오 트랙, 컨테이너의 특이한 구조 같은 다른 이유로 재생되지 않을 수 있습니다. 여기서 정상으로 나온 결과는 문제를 해결해 주지는 않지만, 원인의 범위를 좁혀 줍니다.
검사하는 데 얼마나 걸리나요?
검사는 동영상을 읽기만 하는 것이 아니라 디코딩도 하므로, 걸리는 시간은 동영상 길이, 해상도, 코덱, 기기 성능에 따라 다릅니다. 큰 동영상은 몇 분이 걸릴 수 있습니다. 다른 파일을 고르면 현재 분석은 중단됩니다.
다운로드되지 않은 부분도 복구할 수 있나요?
복구할 수 없습니다. 전송이 도중에 멈췄다면 빠진 화면 데이터는 디스크에 기록된 적이 없으므로, 기기에는 되살릴 데이터가 없습니다. 이 페이지가 할 수 있는 일은 얼마나 빠졌는지 정확히 알려 드리고, 도착한 부분만으로 깨끗하게 재생되는 사본을 만드는 것입니다.
파일이 아예 열리지 않습니다. 어떻게 해야 하나요?
이는 프레임이 아니라 파일의 인덱스에 문제가 있다는 뜻이며, 이 페이지가 도울 수 없는 유일한 경우입니다. 가능하다면 원본을 다시 구하세요. 그럴 수 없다면 다음 단계는 프레임 경계를 찾아 인덱스를 다시 만드는 전용 복구 프로그램입니다. Mac 앱도 브라우저로는 할 수 없는 방식으로 손상된 부분을 피해 다시 인코딩할 수 있습니다.
다른 동영상 도구
AskClean 팀 · 업데이트 2026-09-01