目录
4、紧接着随后打开主界面下拉框选择Lua选项并配置密码(这将是http校验的密码以及web登录的密码):
6、或者也可以访问http://localhost:8080/requests/status.json,你将会看到这样的界面:
1、找到你电脑安装VLC的目录,在导航栏中输入cmd打开命令行窗口:
前言:
因为工作需要另外一台Windows电脑可以背控制播放需要的视频来测试算法, 并不顺利。所以决定自己写一个记录。
一、VLC图形界面的配置
1、首先在工具界面选择偏好设置 
2、在简明偏好设置中选择显示设置为全部
3、在高级偏好设置界面选择主界面并勾选扩展界面模块为Web
4、紧接着随后打开主界面下拉框选择Lua选项并配置密码(这将是http校验的密码以及web登录的密码):
5、保存完成后重启VLC,使用浏览器尝试访问http://localhost:8080/,VLC默认是8080端口,在web填写你配置的密码,你会看到这样的界面:
6、或者也可以访问http://localhost:8080/requests/status.json,你将会看到这样的界面:
到此为止说明VLC的本地HTTP的访问没有问题了。
7、当然你也可以更换端口:
8、如果你发现无法远程访问到,可能你需要检查防火墙。
你可以使用命令:
netsh advfirewall set allprofiles state off
二、VLC命令行启动无需配置(不推荐,本次命令行启动有效)
1、找到你电脑安装VLC的目录,在导航栏中输入cmd打开命令行窗口:
2、输入命令
vlc --extraintf=http --http-host=0.0.0.0 --http-port=8080 --http-password=password
其中password替换为你需要使用的密码
三、Python基于HTTP调用
1、python代码实现:
import time
import requests
from requests.auth import HTTPBasicAuth
from urllib.parse import quote
class VLCRemote:
def __init__(self, host='被控端IP', port=8080, password='admin123'):
self.base_url = f"http://{host}:{port}/requests"
self.auth = HTTPBasicAuth('', password)
self.session = requests.Session()
def _send_command(self, command, params=None):
"""发送命令到VLC的辅助方法"""
try:
url = f"{self.base_url}/status.json?command={command}"
if params:
url += f"&{params}"
response = self.session.get(url, auth=self.auth, timeout=5)
response.raise_for_status()
return response.json() if 'json' in response.headers.get('Content-Type', '') else True
except requests.exceptions.RequestException as e:
print(f"命令执行失败: {e}")
return False
def play_video(self, video_path, loop=True, fullscreen=True, on_top=True):
"""
播放指定视频(支持循环、全屏和置顶)
:param video_path: 视频文件路径
:param loop: 是否循环播放
:param fullscreen: 是否全屏播放
:param on_top: 是否置顶播放
:return: None
"""
"""播放指定视频(支持循环、全屏和置顶)"""
# 先清空播放列表
self._send_command("pl_empty")
# 对文件路径进行URL编码
encoded_path = quote(video_path.replace('\\', '/'))
# 添加视频并播放
self._send_command("in_play", f"input=file:///{encoded_path}")
time.sleep(0.5) # 确保VLC加载完成
if loop:
self._send_command("pl_repeat") # 启用循环
self._send_command("pl_single", "val=1") # 单文件循环
if on_top:
self._send_command("on_top")
if fullscreen:
self._send_command("fullscreen")
def pause(self):
"""暂停/继续播放"""
return self._send_command("pl_pause")
def stop(self):
"""停止播放"""
return self._send_command("pl_stop")
def get_status(self):
"""获取当前播放状态"""
return self._send_command("")
if __name__ == "__main__":
vlc = VLCRemote(host="10.10.50.88") # 替换为被控端IP
# 播放视频(自动循环、全屏和置顶)
vlc.play_video("C:/Users/Administrator.DESKTOP-786JAHM/Videos/Captures/123.mp4")
time.sleep(5)
# vlc.play_video("D:/1/Record/321.mp4",loop=False, fullscreen=False, on_top=False) # 这次也会保持单循环
# 获取状态
# status = vlc.get_status()
# print(status)
# 暂停/继续
# vlc.pause()
# 停止
# vlc.stop()
2、其他常见问题排查
VLC 版本差异:某些命令(如 pl_single
)在旧版本可能无效,建议使用 VLC 3.0+。
权限问题:确保被控端的视频文件路径可被 VLC 访问(如 D:/1/Record/ 是否有读取权限)
延迟问题:在关键操作后增加 time.sleep(如清空播放列表后等待 0.5 秒)。