对于我写作的节目,我需要从windows media player获取当前播放的歌曲。
我已经搜索了很多内容,但我发现的一切都是关于播放音乐VIA Windows媒体播放器以及从中获取信息。
我特别想要的是,某人有WMP打开,他有一首歌在播放。我需要得到那首歌的名字。
我试过了:
import win32com.client
wmp = win32com.client.gencache.EnsureDispatch('WMPlayer.OCX')
但是,这并不能控制或对当前打开的WMP实例执行任何操作。
我也发现了wmp.dll
与ctypes
的使用情况,但我不知道在哪里查看或如何处理它。 Related-source
有人可以对此有所了解吗?还有一些关于同一问题的其他SO帖子,但他们并没有真正帮助我。
答案 0 :(得分:0)
# start a normal play
from win32com.client import Dispatch
mp = Dispatch("WMPlayer.OCX")
tune = mp.newMedia("path of your mp3 or wav file")
mp.currentPlaylist.appendItem(tune)
mp.controls.play()
mp.controls.playItem(tune)
#play at a different rate eg 5x speed
from win32com.client import Dispatch
mp = Dispatch("WMPlayer.OCX")
tune = mp.newMedia("path of your mp3 or wav file")
mp.currentPlaylist.appendItem(tune)
mp.controls.play()
mp.settings.rate = 5
mp.controls.playItem(tune)
# pause , fastforward
from win32com.client import Dispatch
import time
mp = Dispatch("WMPlayer.OCX")
tune = mp.newMedia("path of your mp3 or wav file")
mp.currentPlaylist.appendItem(tune)
mp.controls.play()
mp.settings.rate = 1
mp.controls.playItem(tune)
time.sleep(5)
mp.controls.fastForward()
mp.controls.play()
time.sleep(5)
mp.controls.pause()
mp.controls.play()
# get some basic information from audio
mp.controls.currentPosition # 19.2683872 a float represent seconds
mp.controls.currentPositionString # '00:22' a string
mp.controls.currentPositionTimecode # eg "[00000]00:05:50.00" meaning 0 hr 5 mins 50 sec
mp.currentMedia.durationString # length of audio in string
mp.currentMedia.duration # length of audio in float
要检查音频名称和其他方法,您可能需要检查您发布的官方网站,用法类似。
供参考: https://docs.microsoft.com/en-us/windows/desktop/wmp/controls-object https://docs.microsoft.com/en-us/windows/desktop/wmp/media-name
您需要的代码可能是这样:
audio_name = mp.currentMedia.name
或这个
audio_name = mp.currentMedia.name()
祝你好运!