VLC的远程控制:VLC media player 3.0.21版本基于http协议的远程控制视频播放。

目录

前言:

一、VLC图形界面的配置

        1、首先在工具界面选择偏好设置  ​编辑

        2、在简明偏好设置中选择显示设置为全部

         3、在高级偏好设置界面选择主界面并勾选扩展界面模块为Web

        4、紧接着随后打开主界面下拉框选择Lua选项并配置密码(这将是http校验的密码以及web登录的密码):

        5、保存完成后重启VLC,使用浏览器尝试访问http://localhost:8080/,VLC默认是8080端口,在web填写你配置的密码,你会看到这样的界面:

           6、或者也可以访问http://localhost:8080/requests/status.json,你将会看到这样的界面:

        7、当然你也可以更换端口:

        8、如果你发现无法远程访问到,可能你需要检查防火墙。

二、VLC命令行启动无需配置(不推荐,本次命令行启动有效)

        1、找到你电脑安装VLC的目录,在导航栏中输入cmd打开命令行窗口:

​编辑

        2、输入命令

三、Python基于HTTP调用

        1、python代码实现:

        2、其他常见问题排查 


前言:

因为工作需要另外一台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 秒)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科学修仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值