使用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
相关产品推荐
相关产品推荐

