2021年07月30日 更新
どうも、クラゲです。
VLCをPythonでプログラム制御できるpython-vlcを紹介します。工夫次第で自分だけのミュージックプレーヤーを作ることが可能です!
VLC media playerが入ってない場合はこれをインストール
sudo apt-get install vlc
次にpython-vlcをインストールします
sudo pip3 install python-vlc
vlc
モジュール読み込みと3行だけで書けます。
この場合は、Ctrl + C
などで強制終了させる必要があります。
import vlc
p = vlc.MediaPlayer()
p.set_mrl('test.mp3')
p.play()
複数曲を扱うにはMediaListPlayer
クラスを使います。
次のコードでは、リストに複数の曲を入れてループ再生させています。
import vlc
player = vlc.MediaListPlayer()
mediaList = vlc.MediaList(['test.wav', 'test.mp3', 'test.ogg'])
player.set_media_list(mediaList)
player.set_playback_mode(vlc.PlaybackMode.loop)
player.play()
set_playback_mode
関数で vlc.PlaybackMode.loop
を設定することでループになります。
ちなみに、最初のサンプルコードで使っていたMediaPlayer
クラスの場合、リピート回数指定はできますが、ループ指定ができません。1曲リピートの場合もこちらの形式で書いた方がスマートです。
これまでは play
関数で再生するという機能しかありませんでしたが、python-vlcでは様々な機能があります。先程のコードにwhile
ループを加え、4つの機能を追加しました。
import vlc
player = vlc.MediaListPlayer()
mediaList = vlc.MediaList(['test.wav', 'test.mp3', 'test.ogg'])
player.set_media_list(mediaList)
player.set_playback_mode(vlc.PlaybackMode.loop)
player.play()
while True:
data = input()
#POSITION
if data == 'a':
p = player.get_media_player()
pos = p.get_position()
print(pos)
#INDEX
elif data == 'b':
p = player.get_media_player()
media_instance = p.get_media()
index = mediaList.index_of_item(media_instance)
print(index)
#NEXT
elif data == 'c':
player.next()
#STOP
elif data == 'd':
player.stop()
break
a
, b
, c
, d
を入力するとそれぞれの以下の機能が確認できたと思います。
紹介したのはわずか1部の機能です。
他にもpause
関数で一時停止、previous
関数で前の曲へスキップなど、たくさんありますので、以下の詳細リンク先を参照して下さい。
https://www.olivieraubert.net/vlc/python-ctypes/doc/
以上、「python-vlcで音楽再生をプログラム制御」でした!