You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-vlc实现双显示器分屏播放视频遇阻求助

解决Windows下python-vlc双显示器分别播放视频的问题

你当前的问题出在重复创建vlc.Instance导致资源冲突,且参数设置方式不对——--qt-fullscreen-screennumber只对VLC官方Qt GUI有效,python-vlc的媒体播放器需要手动控制窗口位置或输出设备。以下是两种可行的解决方案:

方案一:手动指定窗口到对应显示器

通过获取显示器位置信息,将每个播放器窗口直接定位到目标显示器:

import vlc
import win32api

# 获取所有显示器的位置坐标
monitors = win32api.EnumDisplayMonitors()
monitor_positions = []
for _, _, rect in monitors:
    monitor_positions.append((rect[0], rect[1]))

# 单个vlc实例即可,无需重复创建
instance = vlc.Instance()

# 第一台显示器播放t1.mp4
player1 = instance.media_player_new()
player1.set_media(instance.media_new("t1.mp4"))
player1.video_set_scale(0.5)
# 定位窗口到第一台显示器左上角
player1.set_window_position(*monitor_positions[0])
player1.play()

# 第二台显示器播放t2.mp4
player2 = instance.media_player_new()
player2.set_media(instance.media_new("t2.mp4"))
player2.video_set_scale(0.5)
# 定位窗口到第二台显示器左上角
player2.set_window_position(*monitor_positions[1])
player2.play()

# 保持程序运行,防止直接退出
input("按回车键退出...")

注意

  • 需要安装pywin32库:pip install pywin32
  • 如果要全屏播放,可在play()前添加player.set_fullscreen(True)

方案二:指定DirectX输出设备

直接给每个播放器绑定对应显示器的DirectX设备,无需处理窗口位置:

import vlc

# 单个vlc实例即可
instance = vlc.Instance()

# 第一台播放器绑定DISPLAY1
player1 = instance.media_player_new()
player1.set_media(instance.media_new("t1.mp4"))
# 指定DirectX输出设备
player1.video_set_output_device('directx', '\\\\.\\DISPLAY1')
player1.video_set_scale(0.5)
player1.play()

# 第二台播放器绑定DISPLAY2
player2 = instance.media_player_new()
player2.set_media(instance.media_new("t2.mp4"))
player2.video_set_output_device('directx', '\\\\.\\DISPLAY2')
player2.video_set_scale(0.5)
player2.play()

input("按回车键退出...")

注意

  • 如果设备名称无效,可通过命令行执行vlc --list查看系统可用的DirectX设备名称
  • 避免创建多个vlc.Instance,否则会导致渲染资源竞争,引发显示异常

内容的提问来源于stack exchange,提问作者user3106197

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:15:43