M3U8 MP4 변환 방법: FFmpeg·VLC와 오류 해결
M3U8 파일과 주소를 MP4로 저장하는 순서입니다. FFmpeg 스트림 복사, H.264·AAC 재인코딩, VLC와 403·소리 없음 오류를 살펴보세요.
M3U8을 받았는데 영상 편집기에 넣을 수 없거나, 이름을 MP4로 바꿔도 열리지 않나요? 먼저 재생목록이 가리키는 영상 조각에 접근할 수 있는지 확인해야 합니다. 아래에서는 직접 보유하거나 저장할 권한이 있는, 재생이 끝나는 HLS 소스를 기준으로 실제 파일을 만드는 순서를 정리했습니다.
먼저 M3U8과 실제 영상 조각을 구분하세요
M3U8은 보통 영상 자체가 아니라 HLS 재생 순서와 조각 파일 주소를 적은 텍스트 재생목록입니다. 화질별 목록이나 별도 음성 목록을 가리킬 수도 있습니다. 파일 이름의 .m3u8을 .mp4로 바꾸는 것으로 영상 데이터가 만들어지지는 않습니다.
URL을 입력한다면 목록과 그 안의 조각 주소에 모두 접근할 수 있어야 합니다. 컴퓨터에 저장한 목록이라면 참조하는 .ts·.m4s와 초기화 파일도 필요합니다. 상대경로로 연결돼 있으면 원래 폴더 구조를 유지하세요. 이 글은 완료된 영상 소스를 대상으로 하며 진행 중인 라이브 녹화 방법은 다루지 않습니다.
FFmpeg로 재인코딩 없이 먼저 저장해 보세요
먼저 새 터미널에서 ffmpeg -version을 실행하세요. 명령을 찾지 못하면 FFmpeg 설치 상태와 실행 경로를 확인합니다. 예시는 첫 번째 영상과 첫 번째 음성을 선택합니다. 첫 영상이 최고 화질이거나 첫 음성이 원하는 언어라는 뜻은 아닙니다. 영상은 있지만 음성이 없으면 무음 MP4를 만들며, 음성만 있는 목록에는 이 명령을 쓰지 않습니다. 자막과 나머지 트랙은 포함하지 않습니다.
-c copy는 미디어를 다시 인코딩하지 않고 MP4 컨테이너에 담습니다. 추가 압축으로 인한 화질 손실은 피할 수 있지만, 누락된 조각을 복원하거나 MP4와 맞지 않는 코덱을 바꿔 주지는 않습니다. URL을 사용한다면 유효한 M3U8 주소를 넣고, 공백이나 쿼리가 있는 경로는 따옴표 안에 유지하세요. +faststart는 MP4 메타데이터를 앞쪽으로 옮겨 파일 재생 시작을 돕는 설정입니다. 네트워크의 다운로드 속도가 빨라지는 기능은 아닙니다.
- 저장할 작업 폴더에서 터미널을 엽니다. 로컬 재생목록을 사용한다면 원본의 복사본과 조각 파일을 원래 폴더 구조대로 준비하세요.
- 입력 경로를 실제 M3U8 파일이나 URL로 바꾸고, 기존 파일과 다른 출력 이름을 정합니다.
- 복사 명령을 실행한 뒤 오류 없이 끝났는지 확인합니다. 파일이 생겼다는 이유만으로 검사를 생략하지 마세요.
ffmpeg -i "input.m3u8" -map 0:v:0 -map "0:a:0?" -c copy -movflags +faststart "output.mp4"호환성이 문제라면 재인코딩하거나 VLC를 이용하세요
복사한 MP4를 대상 기기에서 재생할 수 없다면 H.264 영상과 AAC 음성으로 다시 인코딩하는 대안을 시험합니다. 아래 예시는 FFmpeg의 libx264와 AAC 인코더가 필요합니다. 재인코딩은 처리 시간이 들고 화질이나 용량이 달라질 수 있으므로 원본을 덮어쓰지 마세요. 아래 설정은 일반 SDR 영상 기준이며, HDR에서 SDR로의 색 변환에는 별도 설정이 필요합니다.
ffmpeg -i "input.m3u8" -map 0:v:0 -map "0:a:0?" -c:v libx264 -crf 20 -preset medium -pix_fmt yuv420p -c:a aac -b:a 128k -movflags +faststart "output-compatible.mp4"명령줄이 익숙하지 않다면 VLC의 변환 기능도 선택지입니다. Windows의 일반적인 흐름은 Media → Convert/Save에서 Network 입력을 선택하고 변환 프로필과 출력 파일을 정하는 방식입니다. 프로필은 H.264 + MP3 (MP4)처럼 표시될 수 있고 AAC 프로필이나 메뉴 이름은 버전에 따라 다릅니다. macOS는 메뉴 구성이 다르므로 자신의 버전에서 확인하세요.
- VLC의 Media → Convert/Save에서 Network 탭 또는 네트워크 입력을 찾습니다.
- M3U8 주소를 넣고 Convert를 선택합니다.
- MP4용 변환 프로필을 확인하고 새 .mp4 출력 파일을 지정합니다.
- Start 후 진행이 끝나면 저장 파일을 다시 엽니다. 화면이 다르면 설치한 버전의 공식 안내를 확인하세요.
403·404·소리 없음은 원인부터 나눠 확인하세요
403은 접근 권한이나 주소 만료, 404는 바뀌거나 사라진 주소를 먼저 살펴볼 신호입니다. 목록은 열리는데 특정 .ts·.m4s에서 실패하면 해당 조각과 초기화 파일의 경로도 확인하세요. 로컬 폴더를 옮겼거나 목록만 따로 저장했을 때도 이런 오류가 납니다. 재인코딩 옵션을 바꾸는 것만으로 누락된 미디어를 해결할 수는 없습니다.
영상만 저장됐다면 입력에 음성이 있는지, 음성이 별도 재생목록인지, 선택한 트랙이 맞는지 확인합니다. 첫 음성 트랙이 원하는 언어라는 보장도 없습니다. 제공자가 허용한 새 주소나 공식 다운로드를 이용하고, 저작권·서비스 이용 조건을 지키세요. DRM이나 접근 제한을 우회하는 방식 대신 서비스가 제공하는 저장 방법을 사용합니다.
모바일·온라인 도구 이용과 결과 확인
휴대전화에서는 서비스의 공식 다운로드나 오프라인 기능이 있는지 먼저 살펴보세요. 온라인 변환은 목록만 올려도 되는지, 조각도 필요한지, 파일이나 주소가 외부 서버로 전달되는지 확인해야 합니다. 개인 영상과 인증 정보가 담긴 주소를 낯선 사이트에 넣기 전에 처리·보관 조건을 읽으세요.
완성된 MP4는 실제 사용할 플레이어에서 시작·중간·끝을 재생하고 소리와 전체 길이를 비교합니다. 진행 중인 라이브 목록은 종료 표시가 없으면 자동으로 끝나지 않을 수 있고, 앞서 사라진 구간도 되찾지 못합니다. 완료된 VOD나 공식 저장 파일을 준비한 뒤 확인한 결과를 공유하세요. 아래 자체 예제는 짧은 완료형 HLS를 저장한 결과입니다.
ffprobe -v error -show_entries format=duration:stream=codec_type,codec_name,width,height -of json "output.mp4"MP4가 만들어지면 원본 재생목록과 길이를 비교하고, 시작·중간·끝의 화면과 소리를 확인하세요. 재생이 맞는지 확인한 뒤 필요한 완성 파일을 전달하면 됩니다. 원본 목록과 조각 파일은 검사가 끝날 때까지 보관하세요.
도구
참고 자료
공개 문서 확인 기준이며 기능 전체·보안 검증을 의미하지 않습니다.