MP4 를 MP3 로 바꾸는 법 — 윈도우에서 설치·업로드 없이 동영상 소리만 뽑기
강의 영상이나 통화 녹화, 휴대폰으로 찍은 동영상에서 소리만 MP3 로 갖고 싶을 때가 있습니다. 검색하면 대부분 동영상을 통째로 올리라는 변환 사이트가 나옵니다. 윈도우는 이 일을 스스로 할 수 있습니다. 변환기가 이미 들어 있고 PowerShell 로 부를 수 있습니다. 폴더째 바꾸는 명령, 품질별로 잰 용량, 별다른 안내 없이 실패하는 두 가지 경우를 정리했습니다.

바꾼 MP3 를 끌어다 놓고 필요한 구간만 자를 수 있습니다. 파일이 서버로 올라가지 않습니다.
- ✓ 무료
- ✓ 설치·회원가입 없음
- ✓ 브라우저에서 바로 실행
- ✓ 파일이 서버로 올라가지 않음
- ✓ 소스 공개
🔒 파일을 서버나 다른 어떤 곳으로도 보내지 않습니다 — 내 컴퓨터의 브라우저 안에서만 처리합니다.
MP4 안에는 무엇이 들어 있나
.mp4 는 여러 트랙을 담는 그릇의 이름입니다. 보통 동영상은 그림 트랙과 소리 트랙을 나란히 담고 있고, 재생기가 둘을 함께 읽어 보여 줍니다. 그래서 MP3 를 얻으려면 두 가지가 필요합니다. 영상 트랙을 버리는 것, 그리고 소리를 MP3 로 다시 압축하는 것입니다. MP4 안의 소리는 처음부터 MP3 인 경우가 거의 없기 때문입니다.
아래 모든 시험에 쓴 55.7초짜리 영상을 FFmpeg 로 열어 본 결과입니다. 예전에 블로그용으로 만든 세로 영상으로, 해설 목소리가 들어 있습니다.
| 트랙 | 형식 | 비트레이트 |
|---|---|---|
| 영상 | H.264 (High), 1080×1350, 30fps | 445kb/s |
| 소리 | AAC LC, 48kHz, 스테레오 | 317kb/s |
| 파일 전체 | MP4, 55.72초 | 5,369,904바이트 |
파일의 상당 부분이 그림이라는 점을 보세요. 영상 트랙이 더 큰 몫을 차지하기 때문에, MP3 압축 방식을 고르기 전에 소리만 남기는 것만으로도 파일이 몇 배 작아집니다.
방법 1 — 윈도우에 있는 기능으로 (PowerShell)
윈도우에는 미디어 파운데이션(Media Foundation)이라는 영상·소리 처리 기능이 들어 있고, 윈도우의 기본 앱들도 이것을 씁니다. PowerShell 에서 이 기능을 부를 수 있습니다. 아래 덩어리를 PowerShell 창에 붙여 넣고 주석이 달린 줄의 폴더 경로만 바꾸면, 그 폴더의 MP4 마다 옆에 MP3 가 생깁니다. 원래 동영상은 그대로 남고, 어디로도 보내지 않습니다.
Add-Type -AssemblyName System.Runtime.WindowsRuntime
$ms = [System.WindowsRuntimeSystemExtensions].GetMethods()
$op = ($ms | Where-Object { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -like 'IAsyncOperation*' })[0]
$ap = ($ms | Where-Object { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -like 'IAsyncActionWithProgress*' })[0]
function Wait-Op($o, $t) { $x = $op.MakeGenericMethod($t).Invoke($null, @($o)); $x.Wait(-1) | Out-Null; $x.Result }
function Wait-Act($a) { $x = $ap.MakeGenericMethod([double]).Invoke($null, @($a)); $x.Wait(-1) | Out-Null }
[Windows.Storage.StorageFile, Windows.Storage, ContentType=WindowsRuntime] | Out-Null
[Windows.Storage.StorageFolder, Windows.Storage, ContentType=WindowsRuntime] | Out-Null
[Windows.Media.MediaProperties.MediaEncodingProfile, Windows.Media, ContentType=WindowsRuntime] | Out-Null
[Windows.Media.Transcoding.MediaTranscoder, Windows.Media, ContentType=WindowsRuntime] | Out-Null
$folderPath = "C:\Users\you\Videos" # .mp4 파일이 있는 폴더
$folder = Wait-Op ([Windows.Storage.StorageFolder]::GetFolderFromPathAsync($folderPath)) ([Windows.Storage.StorageFolder])
$profile = [Windows.Media.MediaProperties.MediaEncodingProfile]::CreateMp3("High")
Get-ChildItem "$folderPath\*.mp4" | ForEach-Object {
$src = Wait-Op ([Windows.Storage.StorageFile]::GetFileFromPathAsync($_.FullName)) ([Windows.Storage.StorageFile])
$dst = Wait-Op ($folder.CreateFileAsync([IO.Path]::ChangeExtension($_.Name, ".mp3"), 1)) ([Windows.Storage.StorageFile])
$t = New-Object Windows.Media.Transcoding.MediaTranscoder
$prep = Wait-Op ($t.PrepareFileTranscodeAsync($src, $dst, $profile)) ([Windows.Media.Transcoding.PrepareTranscodeResult])
if ($prep.CanTranscode) { Wait-Act ($prep.TranscodeAsync()); "$($_.Name) -> $($dst.Name)" }
else { "$($_.Name): $($prep.FailureReason)" }
}바뀐 파일마다 lecture.mp4 -> lecture.mp3 처럼 한 줄씩 찍힙니다. 바꿀 수 없는 파일은 이유를 대신 찍고 다음 파일로 넘어가므로, 파일 하나 때문에 폴더 전체가 멈추지 않습니다.
Wait-Op·Wait-Act 는 군더더기가 아닙니다. 이 기능은 비동기로 동작해서, 기다리지 않으면 MP3 를 아직 쓰는 중인데 PowerShell 이 다음 줄로 넘어가고, 그 뒤에 하는 일은 덜 써진 파일을 보게 됩니다.
윈도우 11 의 Windows PowerShell 5.1(윈도우에 기본으로 있는 powershell.exe)에서 시험했습니다. 예전 M4A 가이드에서 쓴 것과 같은 덩어리이고, 폴더와 *.mp4 부분만 바꿨습니다.
품질 프리셋 고르기 — 실측
덩어리는 High 프리셋을 씁니다. "High" 를 "Medium" 이나 "Low" 로 바꾸면 음질 대신 크기를 줄입니다. 같은 55.7초 영상으로 세 가지를 모두 재 봤습니다.
| 프리셋 | MP3 비트레이트 | 크기 | 변환 시간 |
|---|---|---|---|
| High | 192kbps | 1,336,823바이트 | 0.49초 |
| Medium | 128kbps | 889,130바이트 | 0.29초 |
| Low | 96kbps | 667,506바이트 | 0.28초 |
1분 가까운 소리를 바꾸는 데 0.5초도 걸리지 않았습니다. PowerShell 이 뜨는 시간이 더 깁니다. 강의·회의·음성 메모처럼 말소리라면 Medium 으로 대개 충분하고 파일도 작습니다. 오래 들을 음악이라면 High 를 쓰세요. MP3 가 원래 AAC 보다 좋아질 수는 없으니, 원본보다 높게 잡을 이유는 없습니다.
방법 2 — FFmpeg 가 이미 있다면
FFmpeg 는 윈도우에 들어 있지 않지만 여러 프로그램이 함께 설치해 두는 경우가 많습니다. PowerShell 이 못 하는 경우를 하나씩 맡는 명령 두 개를 알아 두면 좋습니다. 아래 결과는 같은 영상을 FFmpeg 7.1 로 바꾼 값입니다.
MP3 로 — 높은 음질에 더 작게
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3-vn 은 영상 트랙을 버리고, -q:a 2 는 LAME 인코더에 높은 음질의 가변 비트레이트를 요청합니다. 결과는 918,769바이트, 평균 131kb/s 였습니다. 가변 비트레이트는 조용한 부분에 비트를 덜 쓰기 때문에, 비슷한 음질을 노리면서도 윈도우의 고정 192kbps 보다 작게 나왔습니다.
원래 소리 그대로 — 다시 압축하지 않기
ffmpeg -i input.mp4 -vn -c:a copy output.m4a-c:a copy 는 AAC 트랙을 있는 그대로 꺼냅니다. 풀었다가 다시 압축하지 않으니 더 잃는 것도 없습니다. 원래 317kb/s 그대로 2,221,936바이트. 보낼 곳이 M4A 를 받는다면(휴대폰·브라우저·메신저 대부분이 재생합니다) 가장 깨끗한 결과입니다. 다만 MP3 는 아니니, MP3 가 꼭 필요하지 않을 때만 쓰세요.
확장자만 .mp3 로 바꾸면 왜 안 되나
많은 분이 가장 먼저 해 보는 방법이라 직접 시험했습니다. MP4 를 복사해서 이름만 .mp3 로 바꿨습니다. 윈도우는 이름만 보고 audio/mpeg 라고 표시했지만, 길이는 0:00, 비트레이트는 0 으로 읽었습니다. 속이 MP3 가 아니기 때문입니다. 파일은 5,369,904바이트 그대로였고 영상도 그대로 들어 있었으며, 첫 바이트는 모든 MP4 가 시작하는 표시인 ftyp 였습니다.
확장자만 검사하는 업로드 양식은 통과할 수도 있습니다. 하지만 실제로 MP3 를 풀어 재생하는 곳 — 차량 오디오, 오래된 재생기, 더 꼼꼼한 업로드 검사 — 에서는 안 됩니다. 확장자는 이름표일 뿐이고, 형식은 파일 속 바이트가 정합니다.
안 될 때
소리 없는 동영상. 시험 영상에서 소리 트랙을 지운 파일을 같은 명령에 넣었더니 CanTranscode 가 False, 이유는 Unknown 으로만 나왔습니다. 소리 트랙이 없다는 말은 어디에도 없습니다. 소리를 함께 녹음하지 않은 화면 녹화가 흔한 경우입니다. 명령을 의심하기 전에 영상을 틀어 소리가 나는지 먼저 확인하세요.
결과를 너무 일찍 읽기. 변환 뒤에 MP3 를 옮기거나 올리는 단계를 덧붙인다면 기다리는 부분을 지우지 마세요. 변환이 끝나기 전에 본 파일은 잘렸거나 비어 있는 것처럼 보입니다.
다른 동영상 형식. 이 덩어리는 *.mp4 에 맞는 파일만 고릅니다. 다른 영상 형식은 이번에 시험하지 않았습니다. 필요하면 무늬를 바꾸고, 찍히는 이유를 확인하세요.
방법 한눈에 비교
| 방법 | 설치 | 업로드 | 시험 영상 결과 | 어울리는 경우 |
|---|---|---|---|---|
| PowerShell (윈도우) | 없음 | 없음 | MP3, 667,506~1,336,823바이트 | 동영상 폴더째, 다른 프로그램 없이 |
| FFmpeg → MP3 | FFmpeg | 없음 | MP3, 918,769바이트(가변) | 높은 음질에 더 작은 MP3 |
| FFmpeg → M4A 복사 | FFmpeg | 없음 | M4A, 2,221,936바이트 | M4A 를 받는 곳, 추가 손실 없이 |
| 이름만 .mp3 | — | — | 여전히 MP4, 5,369,904바이트 | 없음 — MP3 가 아님 |
| 온라인 변환 사이트 | 없음 | 동영상 전체 | 재지 않음 | 올려도 괜찮은 한두 개 파일 |
온라인 변환 사이트도 동작은 하지만, 동영상 전체가 내 PC 밖으로 나갑니다. 녹화한 회의에서 오간 말이나 가족 영상도 함께입니다. 남에게 보이기 싫은 파일이라면 표의 첫 두 줄이 같은 일을 파일을 내보내지 않고 해 줍니다.
일부만 필요하다면 바꾼 뒤에 자르기
한 시간짜리 강의를 192kbps MP3 로 바꾸면 80MB 가 넘지만, 실제로 필요한 10분은 15MB 가 안 됩니다. 먼저 바꾸고, 이 사이트의 오디오 자르기에 MP3 를 끌어다 놓아 필요한 구간만 남기세요. 브라우저 안에서 동작하므로 녹음 파일도 올라가지 않습니다.
자주 묻는 질문
Q. 확장자만 .mp4 에서 .mp3 로 바꾸면 안 되나요?
안 됩니다. 이름을 바꾼 파일을 윈도우는 길이 0:00 으로 읽었습니다. 속은 여전히 영상이 든 MP4 이기 때문입니다. 위의 PowerShell 로 바꾸세요. 1분짜리 소리에 1초도 걸리지 않습니다.
Q. MP3 가 동영상 소리보다 나빠지나요?
한 번 더 손실 압축을 거칩니다. AAC 를 풀어서 MP3 로 다시 압축하기 때문입니다. 소리를 그대로 보존해야 한다면 MP3 대신 FFmpeg 로 AAC 를 M4A 로 꺼내세요.
Q. 폴더에 있는 동영상을 한꺼번에 바꿀 수 있나요?
네. 덩어리가 지정한 폴더의 모든 .mp4 를 돌면서 동영상 옆에 MP3 를 만들고, 건너뛴 파일은 이유를 찍습니다.
Q. 윈도우 10 에서도 되나요?
이 글은 윈도우 11 에서 시험했습니다. 쓰는 기능(미디어 파운데이션·WinRT 변환)은 윈도우 10 에도 있지만, 윈도우 10 에서 직접 돌려 보지는 않았습니다.
Q. 파일이 어디로 올라가나요?
아니요. 두 방법 모두 내 PC 안에서 동작합니다. PowerShell 덩어리는 윈도우에 들어 있는 기능만 부릅니다.
바꾼 MP3 를 끌어다 놓고 필요한 구간만 자를 수 있습니다. 파일이 서버로 올라가지 않습니다.
- ✓ 무료
- ✓ 설치·회원가입 없음
- ✓ 브라우저에서 바로 실행
- ✓ 파일이 서버로 올라가지 않음
- ✓ 소스 공개
🔒 파일을 서버나 다른 어떤 곳으로도 보내지 않습니다 — 내 컴퓨터의 브라우저 안에서만 처리합니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨 주세요.
댓글은 회원만 쓸 수 있습니다.
광고·욕설·비방·개인정보·불법 내용이 담긴 댓글은 숨기거나 지웁니다. 댓글은 닉네임과 함께 공개됩니다. 개인정보처리방침