python:python-vlc

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
python:python-vlc [2021/05/27 18:08] ともやんpython:python-vlc [2021/06/20 06:16] (現在) – [Python 製コマンドライン VLC プレイヤー] ともやん
行 22: 行 22:
 </WRAP> </WRAP>
  
-===== メディアリストループ再生サンプル =====+===== Python 製コマンドライン VLC プレイヤー ===== 
 +メディアリストループ再生するサンプルコードである。\\ 
 +VLC インスタンスは Raspberry Pi をヘッドレスで運用すること前提に <html><code>'--no-video'</code></html> オプションを指定しているので、必要に応じてインスタンスの起動オプションを修正してください。\\
 <WRAP prewrap 100% #mincode> <WRAP prewrap 100% #mincode>
 <code python pyvlcplayer.py> <code python pyvlcplayer.py>
行 34: 行 36:
  
 # 拡張子は小文字で定義 !! # 拡張子は小文字で定義 !!
-#exts = ('.mp3', '.m4a', '.wav', '.wma', '.mpg', '.mov', '.mkv', '.mp4', '.webm'+exts = ('.mp3', '.m4a', '.wav', '.wma', '.mpg', '.mov', '.mkv', '.mp4', '.webm'
-exts = ('.mp3', '.m4a', '.flac', '.wav')+#exts = ('.mp3', '.m4a', '.flac', '.wav')
  
 HOME = os.path.expanduser('~') HOME = os.path.expanduser('~')
 READLINE_HISTORY_FILE = '.pyvlcplayer_history' READLINE_HISTORY_FILE = '.pyvlcplayer_history'
 READLINE_HISTORY_PATH = os.path.join(HOME, READLINE_HISTORY_FILE) READLINE_HISTORY_PATH = os.path.join(HOME, READLINE_HISTORY_FILE)
-EQ_PRESET_BASS_BOOST = [18.5, 19.5, 10.5, 9.3, 10.8, 16.3, 0.0, 2.2, 7.8, 15.6]+EQ_PRESET_BASS_BOOST = [14.5, 15.5, 10.5, 9.3, 10.8, 15.3, 0.0, 2.2, 7.8, 14.6]
  
 PATH = '/var/samba/MusicData/TRF' PATH = '/var/samba/MusicData/TRF'
行 85: 行 87:
     print(f'Media Count: {len(medias)}')     print(f'Media Count: {len(medias)}')
  
-    mediaList = vlc.MediaList()+    # No Video mode for headless Raspberry Pi 
 +    vlcInstance = vlc.Instance('--no-video'
 + 
 +    #mediaList = vlc.MediaList() 
 +    mediaList = vlcInstance.media_list_new()
  
     for index, media in enumerate(medias):     for index, media in enumerate(medias):
         print(f'Index: {index: >4} Path: {media}')         print(f'Index: {index: >4} Path: {media}')
-        mediaList.add_media(media)+        mediaList.add_media(os.path.join(media[0], media[1])) 
 + 
 +    #mediaListPlayer = vlc.MediaListPlayer() 
 +    mediaListPlayer = vlcInstance.media_list_player_new()
  
-    mediaListPlayer = vlc.MediaListPlayer() 
     mediaListPlayer.set_media_list(mediaList)     mediaListPlayer.set_media_list(mediaList)
     mediaListPlayer.set_playback_mode(vlc.PlaybackMode.loop)     mediaListPlayer.set_playback_mode(vlc.PlaybackMode.loop)
行 97: 行 105:
  
     mediaPlayer = mediaListPlayer.get_media_player()     mediaPlayer = mediaListPlayer.get_media_player()
 +
 +    print('🎊🎂🍩🍩🍩 libvlc information 🍩🍩🍩🎂🎊')
 +    print(f"libvlc version: '{vlc.libvlc_get_version().decode()}' ✨")
 +    print(f"libvlc compiler version: '{vlc.libvlc_get_compiler().decode()}' ✨")
 +    print(f"libvlc changeset: '{vlc.libvlc_get_changeset().decode()}' ✨\n")
  
     while True:     while True:
行 180: 行 193:
  
 ===== 使い方 ===== ===== 使い方 =====
-*** os.walk() に followlinks=True オプションを追加。(シンボルリンクを辿るように指定)**\\+**os.walk() に followlinks=True オプションを追加。(シンボルリンクを辿るように指定)**\\
 **eq** で VLC のイコライザーを設定。\\ **eq** で VLC のイコライザーを設定。\\
-<WRAP prewrap 100% #mincode_long>+<WRAP prewrap 100% #mincode>
 <code> <code>
 eq <- イコライザー Off の場合は EQ_PRESET_BASS_BOOST で On にする。 eq <- イコライザー Off の場合は EQ_PRESET_BASS_BOOST で On にする。
行 204: 行 217:
 </code> </code>
 </WRAP> </WRAP>
 +
 +**Raspberry Pi** をヘッドレスで運用している場合は以下のエラーで動作が不安定になる場合がある。\\
 +<html>
 +<div id="ncolor_result">
 +<pre>
 +>> [<b class=GRN>01f70530</b>] gles2 generic error: <b class=RED>parent window not available</b>
 +[<b class=GRN>01f6fe70</b>] mmal_xsplitter vout display error: <b class=RED>Failed to open Xsplitter:opengles2 module</b>
 +[<b class=GRN>01f70530</b>] xcb generic error: <b class=RED>window not available</b>
 +[<b class=GRN>01f6fe70</b>] mmal_xsplitter vout display error: <b class=RED>Failed to open Xsplitter:xcb_x11 module</b>
 +i
 +Index: 0
 +Album: None
 +Title: Hello Kiss me No say-a2ZaDrdpwMk.webm
 +File Size: 23,840,020 bytes
 +Artist: None
 +Genre: None Track:   0/0
 +Path: /var/samba/DataShare/02_YouTubeDLs/05_ぜんぶ君のせいだ。/20160127_A01st_やみかわIMRAD/Hello Kiss me No say-a2ZaDrdpwMk.webm
 +po: POSITION, i: INDEX/Info, p: PREVIOUS, n: NEXT, q: QUIT
 +eq [frequency band value list]: Equalizer On/Off
 +>> q
 +Quit.
 +</pre>
 +</div>
 +</html>
 +
 +Python コードを以下のように VLC インスタンスのオプションに <html><code>'--no-video'</code></html> を指定して、ビデオ出力を無効にする。\\
 +<WRAP prewrap 100% #mincode>
 +<code python>
 +    medias = walk(PATH, exts)
 +    medias.sort()
 +    print(f'Media Count: {len(medias)}')
 +
 +    # No Video mode for headless Raspberry Pi
 +    vlcInstance = vlc.Instance('--no-video')
 +
 +    #mediaList = vlc.MediaList()
 +    mediaList = vlcInstance.media_list_new()
 +
 +    for index, media in enumerate(medias):
 +        print(f'Index: {index: >4} Path: {media}')
 +        mediaList.add_media(os.path.join(media[0], media[1]))
 +
 +    #mediaListPlayer = vlc.MediaListPlayer()
 +    mediaListPlayer = vlcInstance.media_list_player_new()
 +
 +    mediaListPlayer.set_media_list(mediaList)
 +    mediaListPlayer.set_playback_mode(vlc.PlaybackMode.loop)
 +    mediaListPlayer.play()
 +</code>
 +</WRAP>
 +
 +<html>
 +<div id="ncolor_result">
 +<pre>
 +Index:   95 Path: ('/var/samba/DataShare/02_YouTubeDLs/05_ぜんぶ君のせいだ。/20210603_ARe04_Q.E.D. bi', '13.ぜんぶ君のせいだ。あおはる-hNuG-hrxzMY.mkv')
 +Index:   96 Path: ('/var/samba/DataShare/02_YouTubeDLs/05_ぜんぶ君のせいだ。/20210603_ARe04_Q.E.D. bi', '14.ぜんぶ君のせいだ。独唱無題-rBeoKrJFkb0.mkv')
 +Index:   97 Path: ('/var/samba/DataShare/02_YouTubeDLs/05_ぜんぶ君のせいだ。/20210603_ARe04_Q.E.D. bi', '15.ぜんぶ君のせいだ。無題合唱-N9tuj3sHMXI.mkv')
 +po: POSITION, i: INDEX/Info, p: PREVIOUS, n: NEXT, q: QUIT
 +eq [frequency band value list]: Equalizer On/Off
 +>> i
 +Index: 2
 +Album: None
 +Title: ぜんぶ君のせいだ。「ShitEndプラシーボ」Official MusicVideo-1CsCYcTF9w4.mp4
 +File Size: 64,454,373 bytes
 +Artist: None
 +Genre: None Track:   0/0
 +Path: /var/samba/DataShare/02_YouTubeDLs/05_ぜんぶ君のせいだ。/20160127_A01st_やみかわIMRAD/ぜんぶ君
 +のせいだ。「ShitEndプラシーボ」Official MusicVideo-1CsCYcTF9w4.mp4
 +po: POSITION, i: INDEX/Info, p: PREVIOUS, n: NEXT, q: QUIT
 +eq [frequency band value list]: Equalizer On/Off
 +>>
 +</pre>
 +</div>
 +</html>
  
 ===== 参考文献 ===== ===== 参考文献 =====
行 211: 行 298:
  
 ==== 付録 ==== ==== 付録 ====
-[[tw>tomoyan596/status/1395470176062115842|あんまし直してる暇も無いので、python-vlcでテキトーに作ったコマンドラインプレーヤーにイコライザーのセットコマンドをテキトーに追加してます😅💦」 / Twitter]]\\+[[tw>tomoyan596/status/1395470176062115842|あんまし直してる暇も無いので、python-vlcでテキトーに作ったコマンドラインプレーヤーにイコライザーのセットコマンドをテキトーに追加してます😅💦 / Twitter]]\\ 
 +[[tw>tomoyan596/status/1401229926762614785|Python製のVLCコマンドラインプレイヤーを、Raspberry Pi Zeroでヘッドレス運用すると、動画データを含む場合にエラーを起こして動作が不安定になっていたので、ビデオ出力を無効化してオーディオ再生できるようにしました😊 / Twitter]]\\
  
  • python/python-vlc.1622106480.txt.gz
  • 最終更新: 2021/05/27 18:08
  • by ともやん