스트림에서 로컬 MP4까지: 네 가지 변환 방식 실측 비교
측정에 쓴 조건
비교가 공정해야 결론도 의미가 있습니다. 10분 분량의 720p 다시 보기 스트림(4초 세그먼트, H.264 + AAC, 암호화 없음)을 같은 회선에서 네 경로로 각각 변환하고, 소요 시간과 결과 파일의 화질·호환성을 기록했습니다. 절대 수치보다 경로 간 상대 차이에 주목해서 읽어 주세요. 기기와 회선에 따라 배율은 달라집니다.
경로 A · 컨테이너만 교체
명령줄 FFmpeg에서 재인코딩을 끄고 조각을 그대로 MP4에 담는 방식입니다:
ffmpeg -i "https://example.com/vod/master.m3u8" -c copy -bsf:a aac_adtstoasc result.mp4
실측에서 10분 영상이 2분 남짓으로 끝났습니다. 내려받기 속도에 거의 비례하죠. 화질은 원본과 픽셀 단위로 같습니다. 대신 코덱이 MP4 친화적이지 않은 스트림이면 결과 파일이 일부 플레이어에서만 재생될 수 있어, 저장 후 한 번 확인해 보는 습관이 필요합니다.
경로 B · 재인코딩
ffmpeg -i "https://example.com/vod/master.m3u8" -c:v libx264 -preset medium -crf 20 -c:a aac result.mp4
같은 영상에 11분이 걸렸습니다. CPU가 프레임을 하나씩 다시 그리는 작업이라 처리 시간이 영상 길이와 비슷하거나 더 깁니다. 대신 거의 모든 환경에서 재생되는 표준적인 파일이 나오고, 해상도와 비트레이트를 원하는 값으로 조정할 수 있습니다. 오래된 기기 호환성이나 편집용 소스가 필요하다면 이 길이 답입니다.
경로 C·D · 브라우저와 녹화
M3U8→MP4 변환 웹 도구는 FFmpeg.wasm으로 브라우저 안에서 경로 A와 비슷한 처리를 수행합니다. 측정 기기 기준 10분 영상에 6분 정도로 네이티브 CLI보다 느리지만, 프로그램 설치 없이 끝나고 영상이 외부로 전송되지 않는다는 점이 값어합니다. 화면 녹화는 10분 그대로 걸렸고 결과 화질은 출력 설정에 좌우되었습니다. 스트림을 "다루는" 방식이 아니라 화면을 "따라 적는" 방식이라 최후의 수단으로 남겨 두는 것이 좋습니다.
결과 비교
| 경로 | 10분 영상 소요 | 화질 | 주요 제약 |
|---|---|---|---|
| A · 컨테이너 교체 | 약 2분 | 원본 동일 | 코덱 호환성 의존 |
| B · 재인코딩 | 약 11분 | 설정값 따름 | CPU 시간 필요 |
| C · 웹 도구 | 약 6분 | 원본 동일 | CORS 허용, 메모리 한도 |
| D · 화면 녹화 | 10분(실시간) | 출력 설정 좌우 | 실시간 대기 필수 |
무엇을 고를까
요약하면 이렇습니다. 변환을 자주 하고 회선이 좋다면 A, 결과 파일을 여러 환경에서 돌려야 한다면 B, 프로그램 설치가 불가능한 환경이면 C, 위의 모든 길이 막혔다면 D. 작업 전에 주소가 살아 있는지는 온라인 플레이어로 1분 안에 확인할 수 있고, 명령줄 옵션 조합이 궁금하면 튜토리얼의 관련 글을 찾아보세요.