MP4 소리는 나는데 화면이 안 나오나요? 영상 스트림 확인하기

소리는 나는데 화면이 안 나오는 MP4는 플레이어가 디코딩하지 못하는 영상 스트림이 있거나, 영상 스트림이 아예 없습니다. 코덱과 픽셀 형식을 프로브한 뒤 재인코딩하세요.

읽는 시간 5분Sume
전체 글

MP4에서 소리는 나는데 화면이 안 나온다면, 플레이어가 소리는 디코딩하지만 화면은 디코딩하지 못하고 있는 것입니다. 소리와 화면은 파일 안에서 각자의 코덱으로 압축된 별개의 스트림입니다. 파일 쪽에서는 세 가지를 확인하세요. HEVC처럼 플레이어가 디코딩하지 못하는 영상 코덱, 10비트나 4:4:4처럼 플레이어가 표시하지 못하는 픽셀 형식, 또는 영상 스트림이 아예 없는 경우입니다. 어느 쪽인지는 파일을 프로브해 확인하세요. 코덱이나 픽셀 형식 문제라면 영상을 8비트 yuv420p의 H.264로 재인코딩하고 오디오는 그대로 두세요.

FFmpeg 관련 내용은 FFmpeg의 ffmpeg, ffprobe, 필터, 코덱, 포맷 문서와 pixfmt.h 레퍼런스에서, Sume 관련 내용은 영상 트림과 영상 검사 문서, Sume API 레퍼런스에서 가져왔으며, 모두 2026-09-28에 확인했습니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다.

어떤 원인인지 어떻게 구분하나요?

먼저 같은 파일을 다른 플레이어에서 재생해 보세요. 거기서 화면이 나온다면 파일에는 문제가 없고, 처음 플레이어나 그 설정, 또는 기기가 문제입니다. 이 글은 파일 쪽을 다룹니다. 화면이 나오다가 멈추고 소리만 계속된다면 다른 문제이므로 영상은 멈추는데 소리는 계속될 때를 참고하세요. 소리조차 나지 않고 아무것도 재생되지 않는다면, Faststart MP4: moov atom을 파일 앞으로 옮기는 방법에서 쓰기가 끝나지 않은 MP4를 다룹니다.

그 밖의 경우에는 파일의 영상 스트림을 프로브하세요. 아래 ffprobe 명령은 영상 스트림만 골라 코덱과 픽셀 형식을 출력하므로, 결과가 비어 있으면 파일에 영상 스트림이 없다는 뜻입니다. 옵션은 영상 코덱 확인하는 방법: ffprobe 또는 API로에서 설명합니다.

ffprobe -v error -select_streams v -show_entries stream=codec_name,pix_fmt \
  -of default=noprint_wrappers=1 input.mp4

프로브 결과는 무슨 뜻인가요?

명령이 출력한 내용을 아래 표와 대조해 보세요.

FFmpeg의 ffprobe, ffmpeg, 포맷, 필터 문서와 pixfmt.h 레퍼런스 기준, 2026-09-28 확인.
명령 출력의미조치
아무것도 없음파일에 영상 스트림이 없어 표시할 화면이 없음.재인코딩으로는 스트림을 추가할 수 없음. 파일을 만든 단계를 다시 실행. FFmpeg라면 -vn이나 영상을 빠뜨린 -map을 확인.
hevc처럼 h264가 아닌 codec_name플레이어에 그 코덱의 디코더가 없을 수 있음.영상을 H.264로 재인코딩.
yuv420p10le(10비트)나 yuv444p(4:4:4)처럼 yuv420p가 아닌 pix_fmt플레이어가 그 픽셀 형식을 처리하지 못할 수 있음.8비트 YUV 4:2:0인 yuv420p로 재인코딩.
codec_name=h264와 pix_fmt=yuv420p영상이 이미 아래 해결 방법으로 만드는 형식임.대신 플레이어나 기기를 확인.

FFmpeg로 어떻게 고치나요?

영상 스트림은 재인코딩하고 오디오는 그대로 복사하세요. FFmpeg 문서는 바로 이렇게 나눠 처리하는 데 -c:v libx264 -c:a copy를 쓰며, -pix_fmt는 픽셀 형식을 정합니다. 너비나 높이가 홀수라서 인코딩이 멈춘다면 FFmpeg height not divisible by 2 오류 원인과 해결에 해결 방법이 있고, 변환 자체는 HEVC를 H.264로 변환하는 방법에서 더 자세히 다룹니다.

아래 명령을 실행한 뒤, 새 파일을 같은 방법으로 프로브해 h264와 yuv420p가 나오는지 확인하세요.

ffmpeg -i input.mp4 -c:v libx264 -pix_fmt yuv420p -c:a copy output.mp4

이미 Sume에 있는 파일은 어떻게 고치나요?

Sume의 미디어 도구는 이전 Sume Job의 출력처럼 워크스페이스에 있는 media.sume.com 파일을 읽습니다. 먼저 frames: false를 담은 POST /v1/video-inspect로 무료 프로브를 실행해 클립을 확인하세요. 이 프로브는 video_codec, pix_fmt, hdr 필드를 반환합니다(영상 코덱 확인하는 방법: ffprobe 또는 API로에 필드가 정리되어 있습니다). 그다음 기본 정밀도인 exact로 start 0부터 프로브의 duration_seconds까지 클립 전체를 트림하세요. 이 트림은 영상을 libx264로 yuv420p에 재인코딩하고 유지한 오디오를 AAC로 리먹스하므로, Job 하나로 코덱과 픽셀 형식이 모두 바뀝니다.

현재 코드에서 프로브와 트림은 300 MiB가 넘는 소스 파일을 source_too_large로 거부하고, exact 트림은 PQ와 HLG 소스(hdr: true)를 hdr_source_unsupported로 거부합니다. keyframe 트림은 스트림을 그대로 복사하므로 도움이 되지 않습니다. 요청 예시와 길이 제한, 비용은 HEVC를 H.264로 변환하는 방법에서 다룹니다.

Sume로 편집한 영상에도 이 문제가 생기나요?

Sume의 편집 도구는 yuv420p의 H.264로 재인코딩합니다. 문서에 따르면 exact 트림이, 현재 코드에서는 영상 필터, 타임라인 합성, Timeline 렌더가 그렇게 합니다. keyframe 트림은 소스의 코덱과 픽셀 형식을 그대로 두므로 예외입니다. 편집한 파일이 소리만 나고 화면이 나오지 않는다면 같은 방법으로 프로브하세요. 반대 증상은 MP4 영상에 소리가 없을 때를 참고하세요.

출처

관련 글

미디어 도구 카테고리의 다른 글

미디어 도구 글 전체 보기

작성자 Sume