파이썬 python

라즈베리 파이에서 파이썬으로 영상플레이어 MPV 활용하기

smy383 2025. 3. 8. 22:34
728x90
반응형

 

라즈베리 파이에서 파이썬으로 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의 더 많은 기능들을 탐색하고, 자신만의 유용한 스크립트를 만들어보세요!

728x90
반응형