如何用Python在Windows 7上监控VLC媒体播放器?
1 个回答
根据我对你问题的理解:
我已经运行了这个脚本。我在我的电脑上手动用 VLC 播放音频文件,我希望这个脚本能够检测并显示正在播放的曲目的详细信息。
要获取 VLC 播放器中当前播放项目的信息,有两种方法。
第一种方法:在 Windows 7 操作系统和 VLC v2.1.3 上测试过
你需要先在 VLC 播放器中设置网络接口,然后激活它。之后,你可以通过访问这个链接 http://localhost:8080/requests/status.xml
来获取当前播放曲目的所有信息。你可以用 Python 创建一个简单的脚本,访问上面的链接并获取信息。
示例代码:这段代码会简单地显示当前在 VLC 播放器中播放的文件的完整信息,你可以尝试提取你需要的部分:
import requests
def getInfo():
s = requests.Session()
s.auth = ('', 'password')# Username is blank, just provide the password
r = s.get('http://localhost:8080/requests/status.xml', verify=False)
print r.text
getInfo()
你可以在这里获取 Requests 库 这里.
激活网络接口:打开 VLC,进入 工具--->首选项----->主界面
,如下面所示,勾选 web
选项。
然后在左侧面板点击 Lua
选项。在 password
字段输入密码,并在 source directory
字段输入 C:\Program Files\VideoLAN\VLC\lua\http
,如下面所示。确保你在 source directory
提供的位置有 status.xml 文件。
测试:启动 VLC 播放器并播放某个文件。访问 http://localhost:8080/requests/status.xml
,你会看到一个登录页面,用户名字段留空,输入你在 VLC 中设置的密码。如果成功登录,你就会看到 XML 文件!
如果什么都看不到,那么请按照下面图片所示操作:进入 视图--->添加接口----->选择 web
如果一切正常,现在运行我上面提供的脚本。你会在控制台看到文件的信息,现在你可以修改脚本,只获取你想要的信息。注意:用户名字段留空,只需在脚本中输入你的密码。
第二种方法: (我觉得这可能不是你想要的!) 这种情况是你使用 Python 绑定直接播放文件。 这里你可以找到许多不同的方法,用于获取当前播放项目的信息。
例如: get_length(self) 可以获取当前播放项目的时长,get_title() 用于获取标题,get_state(self) 用于判断播放器是否在播放,还是暂停/停止。get_mrl()
会给出曲目的位置,最后还包含曲目名称,所以你可以通过 Python 从位置字符串中提取曲目名称。
示例代码:
import vlc
def setup_player(filename):
vlc_instance = vlc.Instance()
media = vlc_instance.media_new(filename)
player = vlc_instance.media_player_new()
player.set_media(media)
print media.get_mrl()# File location to get title ;)
print player.get_length()#Time duration of file
print player.get_state()#Player's state
setup_player(filename)#Put file name/location here