목차
- 파이썬 eyed3 활용 MP3 총 재생 시간 구하기 이전 포스팅 예제 참고 학습
- 파이썬 pygame 활용 MP3 음악 파일 재생, 중지 이전 포스팅 예제 참고 학습
- 파이썬 MP3 재생 시간 만큼 드래그 가능한 프로그래스바 버튼 UI 만들기 이전 포스팅 예제 참고 학습
- 파이썬 MP3 총 재생 시간 만큼 드래그 가능한 프로그래스 버튼 만들기 예제
- 파이썬 qt ui 실행시 mp3 자동 실행 및 프로그래스바 클릭시 해당 시간부터 mp3 재생 예제
파이썬 eyed3 활용 MP3 총 재생 시간 구하기 이전 포스팅 예제 참고 학습
이전 포스팅에서는 파이썬 라이브러리인 eyed3를 사용하여 MP3 파일의 총 재생 시간을 구하는 방법과 예제에 대해 알아보았습니다. eyed3는 MP3 파일의 메타데이터를 처리하는 도구로, 이를 활용하여 MP3 파일의 재생 시간을 계산하고 출력하는 방법을 다루었습니다. 오늘 예제에서도 이러한 MP3 총 재생 시간을 파이썬에서 구하여 마우스 드래그가 가능한 프로그래스바 버튼을 만드는데 사용하겠습니다. 아직 해당 내용을 잘 모르신다면 아래 링크를 참고해주세요.
2023.09.11 - [Python] - [Pytohn] 파이썬 MP3 총 음악 재생 시간 구하기 예제(eyed3)
파이썬 pygame 활용 MP3 음악 파일 재생, 중지 이전 포스팅 예제 참고 학습
다음으로 이전 포스팅에서는 파이썬 라이브러리인 pygame을 사용하여 MP3 음악 파일을 재생하고 중지하는 방법에 대해 알아보았습니다. pygame은 주로 게임 개발을 위한 라이브러리이지만 오디오 재생과 관련된 기능을 제공하며 MP3 파일을 재생하는 방법과 예제에 대해서도 이전 포스팅에서 알아보았습니다. 오늘 예제도 실질적인 MP3 음악 파일 재생 기능이 포함되기때문에 해당 내용을 미리 학습해주세요.
2023.09.11 - [Python] - [Pytohn] 파이썬 MP3 음악 파일 재생, 중지 예제(pygame)
파이썬 MP3 재생 시간 만큼 드래그 가능한 프로그래스바 버튼 UI 만들기 이전 포스팅 예제 참고 학습
마지막으로 이전 포스팅에서는 파이썬과 PyQt5 라이브러리를 사용하여 MP3 재생 시간 만큼 드래그 가능한 프로그래스바 버튼 UI를 만드는 방법과 예제를 알아보았습니다. 이 UI를 통해 사용자는 MP3 파일을 원하는 재생 시간으로 이동시킬 수 있으며, 시간을 선택하면 해당 시간부터 MP3 재생을 시작할 수 있는 인터페이스를 구현했습니다. 오늘은 이러한 인터페이스에 실제 MP3 재생 기능을 추가하여 내가 원하는 구간의 음악을 파이썬에서 실행할 수 있는 예제를 알아보겠습니다.
2023.09.12 - [Python] - [Python] 파이썬 MP3 재생 시간 만큼 드래그 프로그래스바 버튼 만들기 예제(pyqt5)
파이썬 MP3 총 재생 시간 만큼 드래그 가능한 프로그래스 버튼 만들기 예제
아래는 MP3 파일의 총 재생 시간 만큼 드래그 가능한 프로그래스 버튼을 만드는 예제 코드를 제공합니다. 이 코드는 PyQt5 라이브러리를 사용하여 GUI 애플리케이션을 작성합니다. 이 버튼을 가지고 아래 예제에서 실제 MP3를 내가 원하는 구간을 재생시킬 수 있도록 구현하겠습니다.
import sys
import time
import eyed3
from PyQt5.QtWidgets import QApplication, QMainWindow, QSlider, QLabel, QPushButton
from PyQt5.QtCore import Qt, QTimer
import pygame
def get_mp3_duration(file_path):
audiofile = eyed3.load(file_path)
if audiofile.tag and audiofile.info:
return audiofile.info.time_secs
else:
return 0
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("MP3 재생 및 프로그래스바")
self.setGeometry(100, 100, 400, 200)
mp3_file = "/tmp/test.mp3"
self.duration = get_mp3_duration(mp3_file) # MP3 파일 재생 시간 (초)
self.current_time = 0 # 현재 재생 시간 (초)
self.slider = QSlider(Qt.Horizontal, self)
self.slider.setGeometry(50, 80, 300, 20)
self.slider.setMinimum(0)
self.slider.setMaximum(self.duration)
self.slider.sliderMoved.connect(self.update_current_time)
self.label = QLabel(self)
self.label.setGeometry(180, 110, 60, 20)
self.label.setText("0:00")
self.play_button = QPushButton("재생", self)
self.play_button.setGeometry(100, 150, 80, 30)
self.stop_button = QPushButton("정지", self)
self.stop_button.setGeometry(220, 150, 80, 30)
def update_current_time(self, position):
self.current_time = position
minutes, seconds = divmod(self.current_time, 60)
self.label.setText(f"{minutes}:{seconds:02}")
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
파이썬 qt ui 실행시 mp3 자동 실행 및 프로그래스바 클릭시 해당 시간부터 mp3 재생 예제
아래는 PyQt5를 사용하여 UI를 만들고 MP3 파일을 자동으로 실행하며 프로그래스바를 클릭하면 해당 시간부터 MP3를 재생하는 예제입니다.
import sys
import time
import eyed3
import pygame
from PyQt5.QtWidgets import QApplication, QMainWindow, QSlider, QLabel, QPushButton
from PyQt5.QtCore import Qt, QTimer
def get_mp3_duration(file_path):
audiofile = eyed3.load(file_path)
if audiofile.tag and audiofile.info:
return audiofile.info.time_secs
else:
return 0
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("MP3 재생 및 프로그래스바")
self.setGeometry(100, 100, 400, 200)
mp3_file = "/tmp/test.mp3"
self.duration = get_mp3_duration(mp3_file) # MP3 파일 재생 시간 (초)
self.current_time = 0 # 현재 재생 시간 (초)
pygame.mixer.init()
pygame.mixer.music.load("/tmp/test.mp3")
self.slider = QSlider(Qt.Horizontal, self)
self.slider.setGeometry(50, 80, 300, 20)
self.slider.setMinimum(0)
self.slider.setMaximum(self.duration)
self.slider.sliderMoved.connect(self.update_current_time)
self.label = QLabel(self)
self.label.setGeometry(180, 110, 60, 20)
self.label.setText("0:00")
self.play_button = QPushButton("재생", self)
self.play_button.setGeometry(100, 150, 80, 30)
self.play_button.clicked.connect(self.play_music)
self.stop_button = QPushButton("정지", self)
self.stop_button.setGeometry(220, 150, 80, 30)
self.stop_button.clicked.connect(self.stop_music)
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_slider)
self.timer.start(1000) # 1초마다 타이머 실행
def update_current_time(self, position):
self.current_time = position
minutes, seconds = divmod(self.current_time, 60)
self.label.setText(f"{minutes}:{seconds:02}")
def play_music(self):
pygame.mixer.music.play(start=self.current_time)
def stop_music(self):
pygame.mixer.music.stop()
def update_slider(self):
if not pygame.mixer.music.get_busy():
self.current_time = 0
self.slider.setValue(self.current_time)
self.label.setText("0:00")
else:
self.current_time += 1
self.slider.setValue(self.current_time)
minutes, seconds = divmod(self.current_time, 60)
self.label.setText(f"{minutes}:{seconds:02}")
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())