### 음악을 반복 재생
import pygame, threading, time
pygame.mixer.init()
# 음원 파일 경로
audio_file = 'PLAVE-03-RIZZ.mp3'
audio_file2 = 'PLAVE-02-Dash.flac'
pygame.mixer.music.load(audio_file)
pygame.mixer.music.load(audio_file2) # 마지막으로 불러온 파일로 재생된다.
# 스레드를 관리하는 변수
global music_thread_started
music_thread_started = False
# 음악을 백그라운드에서 재생하는 함수
def play_music():
global music_thread_started
pygame.mixer.music.play()
while pygame.mixer.music.get_busy(): # 음악이 끝날 때까지 대기
time.sleep(1) # 1초마다 확인 (CPU 자원)
music_thread_started = False
while True:
if not music_thread_started:
music_thread_started = True
# 백그라운드 작업을 반복적으로 실행하려면 인스턴스 생성을 새로 해줘야 함 (RuntimeError: threads can only be started once)
music_thread = threading.Thread(target=play_music)
music_thread.daemon = True
music_thread.start()
pygame.mixer: 게임 개발에서 가장 많이 사용되며, 다양한 오디오 파일 형식을 지원. 게임 관련 프로젝트에서 유용.
pydub: 오디오 변환 및 편집 기능이 강력하고, FLAC 파일을 지원
playsound: 가장 간단한 재생을 위한 라이브러리, 빠르고 간단한 오디오 재생을 원할 때
simpleaudio: WAV 파일을 재생하는 데 간편하고, 고급 제어도 가능
audioread: 다양한 형식의 오디오 파일을 디코딩할 수 있지만, 직접적인 재생 기능은 없음
moviepy (FFmpeg): 비디오 및 오디오 편집을 위한 강력한 도구로, 오디오 재생 기능 외에도 다양한 편집 기능을 제공
특징: pygame.mixer는 pygame 라이브러리의 일부로, 2D 게임 개발에 필요한 기능을 제공하면서 오디오 파일의 재생도 지원합니다. 다양한 오디오 파일 형식을 지원하며, 게임 개발에 많이 사용됩니다.
지원 포맷: WAV, MP3, OGG, FLAC (실제로 FLAC도 지원합니다)
사용 예시:
import pygame
pygame.mixer.init()
pygame.mixer.music.load("song.mp3")
pygame.mixer.music.play()
장점:
단점:
특징: pydub은 매우 강력한 오디오 처리 라이브러리로, 다양한 형식의 오디오 파일을 변환, 트리밍, 결합, 필터링하는 등의 작업을 할 수 있습니다. pydub은 직접적으로 오디오를 재생하는 기능을 제공하지 않지만, playback 모듈을 사용하여 간단히 재생할 수 있습니다.
지원 포맷: MP3, WAV, FLAC, OGG, AIFF 등
사용 예시:
from pydub import AudioSegment
from pydub.playback import play
sound = AudioSegment.from_file("song.flac")
play(sound)
장점:
단점:
특징: playsound는 매우 간단한 오디오 파일 재생 라이브러리로, 단 한 줄의 코드로 오디오 파일을 재생할 수 있습니다. 주로 WAV나 MP3 파일을 재생하는 데 사용됩니다.
지원 포맷: MP3, WAV
사용 예시:
from playsound import playsound
playsound('song.mp3')
장점:
간단한 사용법
매우 가벼운 라이브러리
단점:
고급 오디오 기능이나 제어가 불가능 (예: 볼륨 조절, 일시정지 등)
지원하는 포맷이 제한적
특징: simpleaudio는 오디오 파일을 매우 쉽게 재생할 수 있는 라이브러리입니다. WAV 파일을 직접 로드하고 재생할 수 있으며, 고급 기능도 제공합니다. FLAC 파일을 지원하지 않지만, WAV 형식에서 매우 간단하게 사용할 수 있습니다.
지원 포맷: WAV
사용 예시:
import simpleaudio as sa
wave_obj = sa.WaveObject.from_wave_file("song.wav")
play_obj = wave_obj.play()
play_obj.wait_done()
장점:
단점:
특징: audioread는 다양한 오디오 형식을 읽고 디코딩하는 라이브러리입니다. 이를 사용하여 오디오 파일을 재생하는 라이브러리와 결합할 수 있습니다. 자체적으로 오디오를 재생하지 않지만, 파일을 읽고 디코딩하는 데 유용합니다.
지원 포맷: MP3, FLAC, OGG 등
사용 예시:
import audioread
with audioread.audio_open("song.flac") as f:
# 오디오 데이터를 처리하는 코드 작성
pass
장점:
단점:
특징: moviepy는 비디오 및 오디오 편집을 위한 라이브러리로, FFmpeg를 백엔드로 사용하여 FLAC 파일을 포함한 다양한 포맷을 지원합니다. 오디오 재생뿐만 아니라 다양한 오디오 및 비디오 편집 기능도 제공합니다.
지원 포맷: MP3, FLAC, WAV, OGG 등
사용 예시:
from moviepy.editor import AudioFileClip
audio = AudioFileClip("song.flac")
audio.preview()
장점:
단점:
처음엔 playsound 모듈을 사용해 구현하려고 했는데 가지고있는 flac 파일이 지원되지 않아 gpt가 추천해 준 pygame 모듈을 사용하게 되었다. 그런데 나중에 알아보니 이외에도 많은 모듈이 있었다. pygame은 게임관련 라이브러리인만큼 목적에 맞는 모듈 선정에 신중을 가하자💖🔥