상세 컨텐츠

본문 제목

파이썬으로 VLC미디어플레이어를 컨트롤 하기 기초편

본문

반응형

이전글: scv-life.tistory.com/105

 

파이썬과 VLC 미디어 플레이어

VLC 미디어 플레이어 VLC 미디어 플레이어를 아시나요? VLC는 VideoLAN 프로젝트에서 개발한 무료 오픈소스 크로스플랫폼의 미디어 플레이어 입니다. www.videolan.org/vlc/index.ko.html VLC 미디어 재생기 공

scv-life.tistory.com

 

이전 글에서 파이썬을 이용하여 VLC를 어떻게 실행시키는지 잠깐 살펴봤습니다.

 

이번 단원에서는 python-vlc 모듈을 이용하여 미디어 플레이어를 컨트롤 할 수 있는 방법에 대해 알아보겠습니다.

 

미디어플레이어의 일반적인 컨트롤은 다음과 같은데, 여기에서도 해당 컨트롤과 상태값을 확인할 수 있는 방법에 대해 정리해보도록 하겠습니다.

  • 영상 및 음량 조정
  • 재생, 멈춤, 일시멈춤
  • 영상 재생 위치 설정
  • 재생속도 조절

VLC 미디어플레이어를 파이썬으로 컨트롤하는 방식은 아래 소스와 같습니다.

예제 소스 (study_vlc.py)

import vlc
import time

# vlc media player 객체 생성
media_player = vlc.MediaPlayer()

# 뮤직비디오 파일
media_file = "BTS Dynamite MV.mp4"

# 미디어 파일을 vlc 객체로 읽어들이기
media = vlc.Media(media_file)

# 읽어드린 미디어파일을 media_player 객체에 세팅하기(재생목록)
media_player.set_media(media)

# 영상 스케일 조정하기
media_player.video_set_scale(0.6)
time.sleep(1)
print(f"(0) 영상스케일을 {media_player.video_get_scale()}으로 초기 조정")

# 볼륨 조정하기
media_player.audio_set_volume(80)
time.sleep(1)
print(f"(0) 오디오 볼륨을 {media_player.audio_get_volume()}으로 초기 조정")

# play() 호출이후 time.sleep을 호출하는 이유는
# python-vlc의 재생은 비동기적으로 처리되기 때문에
# 프로그램이 종료되면 영상도 바로 종료되어 테스트 결과를 볼 수 없습니다.
# 따라서 영상길이와 상관없이 5초 동안 영상을 플레이 시키기 위해
# sleep을 걸어줍니다.
print(f"(0) 초기 재생상태(get_state): {media_player.get_state()}")
print("\n")

print("(1) 영상 재생 시작")
media_player.play()
time.sleep(3)
print(f" - 재생중 상태 체크값(is_playing): {media_player.is_playing()}")
print("\n")

print("(2) 영상을 1초 일시 중지")
media_player.pause()
time.sleep(3)
print(f"- 현재 play 상태(get_state): {media_player.get_state()}")
print("\n")

print("(3) 영상을 1초 동안 재생")
media_player.play()
time.sleep(3)
print(f"  - 현재 play 상태(get_state): {media_player.get_state()}")
print("\n")


print("(4) 영상 재생을 중지")
media_player.stop()
time.sleep(1)
print(f"  - 현재 play 상태(get_state): {media_player.get_state()}")
print("\n")

print("(5) 영상을 다시 재생")
media_player.play()
time.sleep(3)
print(f"  - 현재 play 상태(get_state): {media_player.get_state()}")
print("\n")


print("(6) 영상을 30% 앞으로 이동시킵니다.")
# 0~1 사이의 비율(%)값을 인자로 넣습니다.
media_player.set_position(0.3)
time.sleep(3)
print(f"  - 영상 재생시간: {media_player.get_time()}")
print(f"  - 영상 재생위치: {media_player.get_position()}")
print("\n")

print("(7) 재생속도를 1.5배속으로 조정합니다.")
# 배속의 정수 값을 가집니다.
media_player.set_rate(1.5)
time.sleep(3)
print(f"  - 현재 재생 속도: {media_player.get_rate()}")
print("\n")


print("(8) 재생속도를 1배속으로 다시 조정합니다.")
# 배속의 정수 값을 가집니다.
media_player.set_rate(1)
time.sleep(3)
print(f"  - 현재 재생 속도: {media_player.get_rate()}")
print("\n")

print("(9) 오디오 음소거를 합니다.")
media_player.audio_toggle_mute()
time.sleep(3)
value = media_player.audio_get_mute()
print(f"  - 현재 음소거 상태: {value}")
print("\n")


print("(10) 오디오 음소거 다시 원위치 합니다.")
media_player.audio_toggle_mute()
time.sleep(3)
value = media_player.audio_get_mute()
print(f"  - 현재 음소거 상태: {value}")
print("\n")


print("(11) 화면을 Full screen으로 바꿔줍니다")
# 영상비율도 같이 바꿔줘야 합니다.
media_player.video_set_scale(2)
media_player.set_fullscreen(True)
time.sleep(3)
print("  - 현재 Full screen 상태(get_fullscreen): ", media_player.get_fullscreen())
print("\n")

print("(12) Full screen 토글")
# 영상비율도 같이 바꿔줘야 합니다.
media_player.video_set_scale(0.6)
media_player.toggle_fullscreen()
time.sleep(3)
print("  - 현재 Full screen 상태(get_fullscreen): ", media_player.get_fullscreen())
print("\n")

 

위 예제소스를 다음과 같이 실행시켜 봅시다.

python study_vlc.py

 

참고로 위 예제를 실행해 보기 위해서는 먼저 vlc미디어플레이어가 설치되어 있어야 하며, python-vlc 모듈(패키지)가 설치되어 있어야 합니다. (이전 글 참조)

pip install python-vlc

그리고 "BTS Dynamite MV.mp4"(다운로드) 영상파일이 같은 폴더에 저장되어 있어야 합니다.

 

모든 준비가 끝난 이후 실행하면 

결과는 다음과 같습니다.

결과 로그는 다음을 참고해주세요.

(0) 영상스케일을 0.6000000238418579으로 초기 조정
(0) 오디오 볼륨을 80으로 초기 조정
(0) 초기 재생상태(get_state): State.NothingSpecial


(1) 영상 재생 시작
 - 재생중 상태 체크값(is_playing): 1


(2) 영상을 1초 일시 중지
- 현재 play 상태(get_state): State.Paused


(3) 영상을 1초 동안 재생
  - 현재 play 상태(get_state): State.Playing


(4) 영상 재생을 중지
  - 현재 play 상태(get_state): State.Stopped


(5) 영상을 다시 재생
  - 현재 play 상태(get_state): State.Playing


(6) 영상을 30% 앞으로 이동시킵니다.
  - 영상 재생시간: 69636
  - 영상 재생위치: 0.31167739629745483


(7) 재생속도를 1.5배속으로 조정합니다.
  - 현재 재생 속도: 1.5


(8) 재생속도를 1배속으로 다시 조정합니다.
  - 현재 재생 속도: 1.0


(9) 오디오 음소거를 합니다.
  - 현재 음소거 상태: 1


(10) 오디오 음소거 다시 원위치 합니다.
  - 현재 음소거 상태: 0


(11) 화면을 Full screen으로 바꿔줍니다
  - 현재 Full screen 상태(get_fullscreen):  1


(12) Full screen 토글
  - 현재 Full screen 상태(get_fullscreen):  0

 

위 예제 소스를 가지고 여러가지 방식으로 조작해보세요. 

 

여러분만의 방식으로 다양한 조작을 시도해보시면 각 함수의 기능들을 모두 파악하실 수 있으실 껍니다.

 

다음 시간에는 python-vlc에 대한 고급설정 기능과 media의 정보를 추출하는 방법 등에 대해 알아보겠습니다.

728x90
반응형

관련글 더보기

댓글 영역

페이징