라즈베리 파이에서 파이썬으로 MPV 활용하기: 설치부터 예제까지
라즈베리 파이에서 MPV 미디어 플레이어를 파이썬 스크립트를 통해 제어하는 방법에 대해 알아봅니다. 단순한 미디어 재생을 넘어, MPV가 왜 필요한지, 어떤 장점을 제공하는지 살펴보고 파이썬과 함께 활용하여 강력한 기능을 구현하는 방법을 소개합니다.
왜 MPV인가? MPV가 필요한 이유
라즈베리 파이는 다양한 용도로 활용될 수 있는 강력한 소형 컴퓨터입니다. 특히, 미디어 재생에 뛰어난 성능을 발휘하며, MPV는 라즈베리 파이에서 최고의 미디어 재생 경험을 제공하는 핵심 요소입니다.
MPV 주요 장점
- 뛰어난 코덱 지원: 다양한 오디오 및 비디오 코덱을 기본적으로 지원
- 높은 호환성: 다양한 운영체제 (Linux, macOS, Windows) 지원
- 뛰어난 화질과 성능: 고화질 비디오를 부드럽게 재생
- 유연한 설정: 다양한 설정 옵션을 제공하여 사용자 정의 가능
- 커맨드라인 인터페이스 (CLI): 스크립트를 통한 자동화된 재생 구현
- 활발한 커뮤니티: 문제 해결 및 정보 공유 용이
- 무료 오픈소스: 자유로운 사용 및 수정 가능
MPV를 활용하면…
- 라즈베리 파이를 강력한 미디어 센터로: TV에 연결하여 영화, 드라마, 음악 등을 즐길 수 있습니다.
- 디지털 사이니지 솔루션: 광고, 홍보 영상 등을 자동으로 재생하는 디지털 사이니지 시스템을 구축할 수 있습니다.
- 미디어 아트: 인터랙티브 미디어 아트 작품 제작에 활용하여 예술적 표현의 자유를 넓힐 수 있습니다.
- 자동화된 미디어 재생 시스템: 특정 시간에 자동으로 음악을 재생하거나, 특정 조건에 따라 다른 비디오를 재생하는 시스템을 구축하여 생활을 편리하게 만들 수 있습니다.
1. MPV 설치
라즈베리 파이 터미널에서 다음 명령어를 실행하여 MPV를 설치합니다.
sudo apt update
sudo apt install mpv
2. 파이썬 라이브러리 설치: python-mpv
MPV를 파이썬으로 제어하기 위해 python-mpv 라이브러리를 설치합니다.
pip install python-mpv
(만약 pip 명령어가 없다면 sudo apt install python3-pip 명령어로 pip를 먼저 설치합니다.)
3. 기본 사용 예제
다음은 MPV를 파이썬으로 제어하는 간단한 예제 코드입니다.
import mpv
import time
# MPV 플레이어 객체 생성
player = mpv.MPV()
# 재생할 파일 지정
player.play('my_video.mp4') # 재생할 비디오 파일 경로로 변경
# 재생 상태 확인
print(f"재생 중: {player.filename}")
# 5초 동안 재생
time.sleep(5)
# 일시 정지
player.pause = True
print("일시 정지됨")
time.sleep(2)
# 다시 재생
player.pause = False
print("다시 재생")
time.sleep(5)
# 볼륨 조절
player.volume = 50
print("볼륨 50으로 설정")
time.sleep(2)
# 정지
player.stop()
print("정지됨")
코드 설명:
import mpv:python-mpv라이브러리를 가져옵니다.player = mpv.MPV(): MPV 플레이어 객체를 생성합니다.player.play('my_video.mp4'): 지정된 비디오 파일을 재생합니다.'my_video.mp4'부분을 실제 비디오 파일 경로로 변경해야 합니다.player.filename: 현재 재생 중인 파일 이름을 가져옵니다.player.pause = True: 재생을 일시 정지합니다.player.pause = False로 다시 재생할 수 있습니다.player.volume = 50: 볼륨을 50%로 설정합니다 (0 ~ 100).player.stop(): 재생을 완전히 정지합니다.
4. 고급 활용 예제
다음은 MPV의 고급 기능을 사용하는 예제 코드입니다.
import mpv
import time
# MPV 플레이어 객체 생성 및 옵션 설정
player = mpv.MPV(
ytdl=True, # YouTube 재생 지원 활성화
input_default_bindings=True,
input_vo_keyboard=True,
loop=True, # 반복 재생
)
# 이벤트 콜백 함수 정의
@player.on_key_press('q')
def quit_callback():
print("종료 키 입력됨")
player.quit()
@player.on_property_change('pause')
def pause_callback(pause):
if pause:
print("일시 정지 이벤트 발생")
else:
print("재생 이벤트 발생")
# YouTube URL 재생
player.play('https://www.youtube.com/watch?v=dQw4w9WgXcQ') # YouTube URL로 변경
# 재생 상태 확인
print(f"재생 중: {player.filename}")
# 무한 루프 (종료 키 'q'를 누르면 종료)
while True:
time.sleep(1)
코드 설명:
ytdl=True: YouTube 재생 지원을 활성화합니다.youtube-dl또는yt-dlp가 설치되어 있어야 합니다. (설치:pip install youtube-dl)loop=True: 재생 목록을 반복 재생합니다.@player.on_key_press('q'): 'q' 키를 누르면quit_callback함수가 실행됩니다. MPV의 키 바인딩을 사용자 정의할 수 있습니다.@player.on_property_change('pause'):pause속성이 변경되면pause_callback함수가 실행됩니다. MPV의 속성 변화를 감지하여 특정 동작을 수행할 수 있습니다.
5. MPV 속성 및 명령어 활용
python-mpv 라이브러리를 사용하면 MPV의 다양한 속성(property)과 명령어(command)를 제어할 수 있습니다.
- 속성 (Properties): 현재 재생 위치, 볼륨, 일시 정지 상태, 전체 길이 등 MPV의 상태를 나타내는 값입니다.
player.property = value와 같이 설정하거나value = player.property와 같이 읽어올 수 있습니다. (예:player.time_pos,player.volume,player.pause) - 명령어 (Commands): MPV에게 특정 동작을 수행하도록 지시하는 함수입니다.
player.command('command_name', arguments...)와 같이 호출합니다. (예:player.command('seek', 10),player.command('osd-overlay', 'message', 'Hello'))
MPV의 속성과 명령어 목록은 MPV 매뉴얼 (man mpv) 또는 온라인 문서를 참조하십시오.
6. 활용 예시
- 미디어 재생 자동화: 특정 시간에 자동으로 음악을 재생하거나, 특정 조건에 따라 다른 비디오를 재생하는 스크립트를 만들 수 있습니다.
- 사용자 인터페이스 구축: Tkinter, PyQT 등의 GUI 라이브러리와 함께 사용하여 MPV를 제어하는 사용자 인터페이스를 만들 수 있습니다.
- 스마트 미러: 라즈베리 파이 기반 스마트 미러에 MPV를 통합하여 거울에 날씨, 뉴스, 알림과 함께 비디오를 표시할 수 있습니다.
- 로컬 미디어 서버: MPV를 사용하여 라즈베리 파이에 저장된 미디어 파일을 스트리밍하는 서버를 구축할 수 있습니다.
마무리
이번 포스팅에서는 라즈베리 파이에서 MPV를 사용하는 기본적인 방법을 알아보았습니다. python-mpv 라이브러리를 사용하면 MPV의 강력한 기능을 파이썬 스크립트를 통해 제어할 수 있으며, 다양한 프로젝트에 응용할 수 있습니다. MPV 매뉴얼과 온라인 문서를 참고하여 MPV의 더 많은 기능들을 탐색하고, 자신만의 유용한 스크립트를 만들어보세요!
'파이썬 python' 카테고리의 다른 글
| 라즈베리파이를 이용해 파이썬으로 자동 이메일 추출하기 (0) | 2025.03.11 |
|---|---|
| 라즈베리파이에서 mariaDB(mysql)설정후 파이썬으로 데이터베이스로 사용하기 (0) | 2025.03.09 |
| 라즈베리파이 Samba 설치 및 설정: 파일 공유 가이드 (0) | 2025.03.08 |
| 라즈베리 파이 4로 MQTT 브로커 구축하기 (0) | 2025.03.07 |
| Flask와 MariaDB 연동: 웹 애플리케이션에 데이터 저장 공간 만들기 (0) | 2025.03.07 |