我运行 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
.