VLC 在后台运行并仅通过 HDMI 显示

VLC 在后台运行并仅通过 HDMI 显示

我运行 VLC 播放器,它也在我的命令行中启动,如何在后台运行它并仅通过 HDMI 输出?树莓派操作系统(树莓派)

答案1

我不确定 Raspbian OS 如何处理多个输出,但我假设它使用当前的常见做法,即使用 Xinerama - 即同一“显示器”(在 X11 术语中)使用多个屏幕。在这种情况下,您基本上无法“选择输出端口” - 所有输出都在同一显示器上(您可以将其视为覆盖所有屏幕甚至更多屏幕的虚拟屏幕)。

要定位特定的“屏幕”(X11术语,意思是显示器的一部分),您需要询问X服务器显示器的哪一部分映射到您想要的屏幕,然后强制VLC渲染到该区域。做到这一点的标准方法是使用一个--geometry标志,应用程序应该识别并接受一个非常特定的格式,如下所示:<width>X<height>+<X>+<Y>- 这是(不是)顺便说一下 X 服务器查询工具显示该信息的确切格式 - 运行xrandr并查看。

不幸的是,VLC 不接受这样的参数——它必须是不同的。相反,它使用 4 个不同的参数:--width--height--video-x--video-y

所以这里有一个简短的脚本,用于xrandr获取第一个连接的 HDMI 端口的几何形状(我有多个,因此它很有用),然后分解几何规范以xrandr使用正确的参数启动 VLC:

geom=( $(xrandr | grep ' connected' | grep HDMI | head -n1 | cut -d' ' -f3 | tr 'x+' '  ') ); \
  [ -n "${geom[*]}" ] && vlc \
    --width=${geom[0]} --height=${geom[1]} \
    --video-x=${geom[2]} --video-y=${geom[3]} \
    my-video.mp4

(为了便于阅读,将其格式化为带有反斜杠的多行,这应该在一行上,但可以按原样运行良好 - 带有反斜杠)。

[更新]:现在我重新阅读你的问题,在我看来,你可能意味着你想从 X 服务器会话外部运行你的脚本,在这种情况下,你还需要DISPLAY正确设置环境变量。因此,请尝试DISPLAY在运行 VLC 之前通过运行来设置export DISPLAY=:0.

相关内容