HOWTO · Python
Python으로 MP3 파일 재생하는 방법
설정, 경로, 플랫폼 안내와 함께 Python으로 MP3 파일을 재생하는 다섯 가지 방법을 알아보세요.
이 페이지의 내용
Python으로 MP3 파일을 재생하려면 짧은 재생 스크립트에는 playsound를, 믹서 제어가 필요하면 pygame를, VLC를 사용할 수 있는 환경에서는 python-vlc를 사용하세요. Python은 webbrowser로 브라우저 핸들러가 파일을 열도록 요청하거나, 설치된 시스템 플레이어를 실행할 수도 있습니다. 각 예제에서 sample.mp3를 오디오 파일의 경로로 바꾸세요. 상대 경로는 프로세스의 현재 작업 디렉터리를 기준으로 해석됩니다.
playsound로 MP3 파일 재생
서드파티 playsound 패키지를 python -m pip install playsound로 설치하세요. 그런 다음 파일 경로와 함께 재생 함수를 호출합니다. MP3와 WAV를 포함한 일반적인 오디오 형식을 지원하며, 재생은 패키지의 플랫폼 오디오 백엔드에 따라 달라집니다.
이 완성된 스크립트는 현재 작업 디렉터리에서 sample.mp3를 재생합니다. 먼저 패키지를 설치하고 파일을 그 위치에 두거나, track을 올바른 경로로 바꾸세요. 재생하려면 작동하는 오디오 장치와 패키지가 지원하는 플랫폼 오디오 백엔드가 필요합니다.
from pathlib import Path
track = Path("sample.mp3")
if track.is_file():
from playsound import playsound
playsound(str(track))
pygame로 MP3 파일 재생
python -m pip install pygame로 pygame를 설치하세요. 믹서 API가 트랙을 로드하고 재생을 시작합니다. MP3 디코딩은 사용 중인 pygame와 SDL_mixer 빌드에 따라 달라지므로, 설치된 빌드가 MP3를 디코딩할 수 없는 경우 WAV 파일이 실용적인 대안입니다. MP3 파일을 WAV로 변환하는 방법을 참조하세요.
이 스크립트는 현재 작업 디렉터리에서 sample.mp3를 로드합니다. 먼저 pygame를 설치하고 오디오 백엔드를 제공하세요. 믹서 play() 호출은 비동기로 재생을 시작하며, 루프는 트랙이 끝날 때까지 스크립트를 유지합니다. MP3 디코딩은 사용 중인 pygame와 SDL_mixer 빌드에 따라 달라지므로, 설치된 빌드가 트랙을 디코딩할 수 없는 경우 WAV 파일이 실용적인 대안입니다.
from pathlib import Path
track = Path("sample.mp3")
if track.is_file():
import time
import pygame
pygame.mixer.init()
pygame.mixer.music.load(str(track))
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
time.sleep(0.1)
python-vlc로 MP3 파일 재생
python-vlc는 pip 배포 이름이며, Python 임포트 이름은 vlc입니다. python -m pip install python-vlc로 바인딩을 설치하세요. 이 바인딩은 VLC의 네이티브 미디어 프레임워크를 사용하므로, 호환되는 VLC 런타임도 설치하고 프로세스에서 사용할 수 있도록 하세요. 필요한 설정은 운영 체제에 따라 다를 수 있습니다.
이 스크립트는 현재 작업 디렉터리에 있는 sample.mp3 파일을 사용합니다. 실행하기 전에 python-vlc 바인딩과 호환되는 VLC 런타임을 모두 설치하세요. player.play()는 비동기로 재생을 시작하므로, 프롬프트가 트랙이 재생되는 동안 프로세스를 유지합니다. 중지하려면 Enter를 누르세요. 오디오 출력도 필요합니다.
from pathlib import Path
track = Path("sample.mp3")
if track.is_file():
import vlc
player = vlc.MediaPlayer(str(track))
player.play()
input("Press Enter to stop playback.\n")
player.stop()
webbrowser로 MP3 파일 열기
webbrowser는 Python 표준 라이브러리의 일부이므로 pip 설치가 필요 없습니다. 이 완성된 예제는 시스템에 구성된 브라우저가 현재 작업 디렉터리에 있는 sample.mp3의 파일 URL을 열도록 요청합니다. 경로를 해석하고 URI로 변환하면 공백 및 기타 경로 문자를 처리할 수 있습니다.
from pathlib import Path
import webbrowser
track = Path("sample.mp3")
if track.is_file():
webbrowser.open(track.resolve().as_uri())
이는 브라우저나 등록된 핸들러가 파일을 열도록 요청하는 것입니다. 브라우저 탭에서 오디오가 재생된다고 보장하지 않으며, 동작은 브라우저와 운영 체제에 따라 다릅니다.
Python에서 시스템 플레이어 실행
인수 목록과 함께 subprocess.run을 사용하여 설치된 명령줄 플레이어를 시작하세요. 이렇게 하면 파일 경로로 셸 명령을 구성하는 것을 피할 수 있습니다. 플레이어는 별도로 설치하세요. 사용 가능 여부와 명령 이름은 운영 체제에 따라 다릅니다. 아래 예제는 Linux에서 mpg123를, macOS에서 afplay를 사용합니다.
이 완성된 스크립트는 Linux에서는 mpg123를, macOS에서는 afplay를 사용하여 현재 작업 디렉터리에서 sample.mp3를 재생합니다. 선택한 플레이어를 별도로 설치하세요. 인수 목록 형식은 경로에 공백이 포함되어 있어도 경로를 하나의 인수로 전달합니다. check=True는 플레이어의 0이 아닌 종료를 Python 오류로 보고하므로, 시작 실패를 진단할 때 유용합니다.
from pathlib import Path
import subprocess
import sys
track = Path("sample.mp3")
if track.is_file():
if sys.platform.startswith("linux"):
player = "mpg123"
elif sys.platform == "darwin":
player = "afplay"
else:
raise SystemExit("Choose a player command for this operating system.")
subprocess.run([player, str(track)], check=True)
재생 방법을 선택하기 전에 간단히 경로를 확인하려면, 현재 작업 디렉터리의 경로에서 파일 이름을 출력하는 이 독립 실행형 Python 예제를 사용하세요.
from pathlib import Path
track = Path("sample.mp3")
print(track.name)
sample.mp3