안녕하세요! 코딩의 즐거움을 나누는 블로거입니다. 😊 오늘은 파이썬(Python)을 이용해 여러 개의 동영상 파일에서 오디오(mp3)만 한 번에 추출하고, 원본 영상과 추출된 오디오 파일을 깔끔하게 정리하는 자동화 스크립트를 소개해 드리려고 해요.
강의 영상에서 음성만 따로 듣고 싶을 때, 뮤직비디오에서 노래만 저장하고 싶을 때 정말 유용하답니다! 그럼, 차근차근 알아볼까요? 🚀

✨ 왜 필요할까요?
가끔 동영상은 필요 없고 소리만 듣고 싶을 때가 있죠?
- 강의/강연 영상 📖: 이동 중에 음성만 반복해서 듣고 싶을 때
- 뮤직비디오 🎵: 좋아하는 가수의 노래를 mp3 파일로 만들고 싶을 때
- 인터뷰 영상 🎤: 내용을 텍스트로 옮기거나 팟캐스트처럼 듣고 싶을 때
이럴 때마다 동영상 편집 프로그램을 열어서 하나씩 작업하려면 번거롭잖아요? 오늘 배울 파이썬 스크립트 하나면 폴더에 있는 모든 영상을 한 번에 처리할 수 있답니다!
💻 준비물
스크립트를 실행하기 전에 딱 한 가지만 준비하면 됩니다. 바로 moviepy라는 파이썬 라이브러리인데요, 동영상과 오디오를 쉽게 다룰 수 있게 해주는 아주 강력한 도구랍니다.
아래 명령어를 터미널이나 명령 프롬프트에 입력해서 간단하게 설치해주세요.
pip install moviepy
📜 전체 코드 살펴보기
오늘 우리가 함께 만들어 볼 전체 코드입니다. 한 줄 한 줄 어떤 역할을 하는지 바로 아래에서 상세히 설명해 드릴게요!
import os
import shutil
from moviepy.editor import VideoFileClip
# 1. 파일들을 저장할 기본 디렉토리와 하위 디렉토리를 설정해요.
base_dir = "audio_split"
video_dir = os.path.join(base_dir, "video")
audio_dir = os.path.join(base_dir, "audio")
# 2. 위에서 설정한 폴더들이 없다면 자동으로 만들어줘요.
os.makedirs(video_dir, exist_ok=True)
os.makedirs(audio_dir, exist_ok=True)
# 3. 처리할 동영상 파일의 확장자를 지정해요.
video_exts = ('.mp4', '.mkv', '.avi', '.mov', '.webm')
# 4. 현재 폴더에 있는 모든 파일을 하나씩 확인해요.
for filename in os.listdir('.'):
# 5. 파일이 우리가 지정한 동영상 확장자로 끝나는지 확인해요. (대소문자 구분 없이!)
if filename.lower().endswith(video_exts):
try:
# 6. 원본 영상 파일을 'video' 폴더에 복사해서 백업해요.
shutil.copy2(filename, video_dir)
# 7. 동영상 파일을 열고 오디오를 추출해요.
video = VideoFileClip(filename)
output_name = os.path.splitext(filename)[0] + '.mp3'
audio_path = os.path.join(audio_dir, output_name)
video.audio.write_audiofile(audio_path)
print(f"✅ 오디오 추출 완료: {audio_path}")
except Exception as e:
# 8. 만약 문제가 생기면 에러 메시지를 출력해요.
print(f"❌ 에러 발생({filename}): {e}")
🔍 코드 한 줄 한 줄 뜯어보기
1️⃣ 라이브러리 불러오기 & 폴더 설정
import os
import shutil
from moviepy.editor import VideoFileClip
# 저장 디렉토리 설정
base_dir = "audio_split"
video_dir = os.path.join(base_dir, "video")
audio_dir = os.path.join(base_dir, "audio")
- os: 폴더나 파일을 다루는 기본 기능(폴더 생성, 파일 목록 읽기 등)을 사용하기 위해 필요해요.
- shutil: 파일을 복사하는 등 조금 더 고수준의 파일 작업을 위해 사용해요.
- moviepy.editor.VideoFileClip: 오늘의 주인공! 🦸♂️ 동영상 파일을 불러와 편집하는 역할을 해요.
- 그 아래에서는 결과물을 저장할 폴더 경로를 미리 변수로 만들어 둡니다. audio_split이라는 부모 폴더 아래에, 원본 영상을 보관할 video 폴더와 추출된 오디오를 저장할 audio 폴더를 만들기로 계획했어요.
2️⃣ 폴더 자동 생성 📁
# 폴더 없으면 생성
os.makedirs(video_dir, exist_ok=True)
os.makedirs(audio_dir, exist_ok=True)
- os.makedirs()는 폴더를 만드는 함수예요.
- exist_ok=True 옵션 덕분에 폴더가 이미 있어도 에러 없이 그냥 넘어간답니다. 스크립트를 여러 번 실행해도 걱정 없겠죠?
3️⃣ 동영상 파일 찾기 🎬
video_exts = ('.mp4', '.mkv', '.avi', '.mov', '.webm')
for filename in os.listdir('.'):
if filename.lower().endswith(video_exts):
# ... (추출 작업)
- video_exts: 우리가 오디오를 추출할 동영상 파일의 종류(확장자)를 미리 정해둬요. 여기에 다른 확장자를 추가할 수도 있어요!
- os.listdir('.'): 현재 스크립트가 있는 폴더의 모든 파일과 폴더 목록을 가져와요.
- for filename in ...: 가져온 목록을 하나씩 filename 변수에 넣으며 반복해요.
- filename.lower().endswith(video_exts): 파일 이름(filename)을 모두 소문자로 바꾼 뒤(lower()), 우리가 정해둔 동영상 확장자(video_exts) 중 하나로 끝나는지(endswith()) 확인해요. 이렇게 하면 'Video.MP4'처럼 대문자가 섞여 있어도 잘 찾아낼 수 있어요.
4️⃣ 핵심! 오디오 추출 및 저장 ✨
try:
# 원본 영상 파일 복사
shutil.copy2(filename, video_dir)
# 오디오 추출 및 저장
video = VideoFileClip(filename)
output_name = os.path.splitext(filename)[0] + '.mp3'
audio_path = os.path.join(audio_dir, output_name)
video.audio.write_audiofile(audio_path)
print(f"오디오 추출 완료: {audio_path}")
except Exception as e:
print(f"에러 발생({filename}): {e}")
- try...except: 가장 중요한 부분이에요. 혹시 파일이 깨졌거나 지원하지 않는 형식이라서 오류가 나더라도 프로그램이 멈추지 않고, 어떤 파일에서 문제가 생겼는지 알려준 뒤 다음 파일로 넘어가게 해주는 안전장치랍니다.
- shutil.copy2(filename, video_dir): 원본 동영상 파일을 우리가 만든 video 폴더로 복사해요. 원본은 소중하니까요! 😉
- video = VideoFileClip(filename): moviepy를 이용해 동영상 파일을 열어요.
- os.path.splitext(filename)[0] + '.mp3': 파일 이름에서 확장자를 떼어낸 뒤(.mp4 제거), .mp3를 붙여서 저장할 오디오 파일 이름을 만들어요. (예: my_video.mp4 -> my_video.mp3)
- audio_path = os.path.join(audio_dir, output_name): audio 폴더 경로와 방금 만든 mp3 파일 이름을 합쳐서 최종 저장 경로를 완성해요.
- video.audio.write_audiofile(audio_path): 바로 이 부분이 마법을 부리는 코드입니다! 🧙♂️ 불러온 비디오 객체(video)에서 오디오 부분(audio)만 지정된 경로(audio_path)에 파일로 저장(write_audiofile)해요.
🚀 스크립트 사용법
- 위 코드를 extract_audio.py 와 같이 .py 확장자로 저장하세요.
- 오디오를 추출하고 싶은 동영상 파일들을 extract_audio.py 파일과 같은 폴더에 넣어주세요.
- 터미널(명령 프롬프트)을 열고 해당 폴더로 이동한 뒤, 아래 명령어를 실행하세요.
python extract_audio.py
잠시 기다리면 터미널에 "오디오 추출 완료" 메시지가 뜨고, audio_split 이라는 새 폴더가 생겼을 거예요. 그 안의 audio 폴더에 mp3 파일들이, video 폴더에 원본 영상들이 정리된 것을 확인하실 수 있습니다! 🎉
이제 여러분도 파이썬으로 반복적인 파일 처리 작업을 멋지게 자동화할 수 있게 되셨습니다. 이 스크립트를 응용해서 여러분만의 편리한 도구를 만들어보는 건 어떨까요?
궁금한 점이 있다면 언제든지 댓글로 남겨주세요!
'일반IT' 카테고리의 다른 글
| 우분투 커널 변천사: 16.04부터 25.04까지 주요 변화 살펴보기 💻 (1) | 2025.08.31 |
|---|---|
| 윈도우 사용자 필수 유틸리티, Microsoft PowerToys 🚀 (5) | 2025.08.30 |
| 💻 시간 절약의 핵심! 주요 정보통신기반시설 취약점 자동 진단 스크립트 총정리 (4) | 2025.08.17 |
| 클라우드시큐리티랩 소개 (3) | 2025.08.17 |
| 🐍 파이썬 웹 크롤러/스캐너 Requests와 BeautifulSoup 날개 달기 (5) | 2025.08.16 |