VLC 플레이어를 실행하고 명령줄에서도 실행됩니다. 백그라운드에서 실행하고 HDMI를 통해서만 출력하려면 어떻게 해야 합니까? 라즈베리 파이 운영 체제(라즈베리 파이)
답변1
Raspbian OS가 다중 출력을 어떻게 처리하는지 잘 모르겠지만 Xinerama를 사용하는 현재의 일반적인 관행, 즉 동일한 "디스플레이"(X11 용어로)에 대해 여러 화면을 사용한다고 가정합니다. 이 경우 기본적으로 "출력 포트를 선택"할 수 없습니다. 모든 출력이 동일한 모니터에 있습니다(모든 화면 등을 포괄하는 가상 화면으로 생각할 수 있음).
특정 "화면"(디스플레이의 일부를 의미하는 X11 용어)을 대상으로 하려면 디스플레이의 어느 부분이 원하는 화면에 매핑되는지 X 서버에 문의한 다음 VLC가 해당 영역을 렌더링하도록 강제해야 합니다. 이를 수행하는 표준 방법은 --geometry
응용 프로그램이 다음과 같이 매우 구체적인 형식을 인식하고 허용해야 하는 플래그를 사용하는 것입니다. <width>X<height>+<X>+<Y>
- 이것은 X 서버 쿼리 도구가 해당 정보를 표시하는 정확한 형식이 아닙니다. - 실행 xrandr
그리고 확인하세요.
불행하게도 VLC는 그러한 주장을 받아들이지 않습니다. 이는 달라야 합니다. 대신 --width
, 및 의 --height
4 가지 매개변수를 사용합니다 .--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
.