VLC는 백그라운드에서 실행되며 HDMI를 통해서만 표시됩니다.

VLC는 백그라운드에서 실행되며 HDMI를 통해서만 표시됩니다.

VLC 플레이어를 실행하고 명령줄에서도 실행됩니다. 백그라운드에서 실행하고 HDMI를 통해서만 출력하려면 어떻게 해야 합니까? 라즈베리 파이 운영 체제(라즈베리 파이)

답변1

Raspbian OS가 다중 출력을 어떻게 처리하는지 잘 모르겠지만 Xinerama를 사용하는 현재의 일반적인 관행, 즉 동일한 "디스플레이"(X11 용어로)에 대해 여러 화면을 사용한다고 가정합니다. 이 경우 기본적으로 "출력 포트를 선택"할 수 없습니다. 모든 출력이 동일한 모니터에 있습니다(모든 화면 등을 포괄하는 가상 화면으로 생각할 수 있음).

특정 "화면"(디스플레이의 일부를 의미하는 X11 용어)을 대상으로 하려면 디스플레이의 어느 부분이 원하는 화면에 매핑되는지 X 서버에 문의한 다음 VLC가 해당 영역을 렌더링하도록 강제해야 합니다. 이를 수행하는 표준 방법은 --geometry응용 프로그램이 다음과 같이 매우 구체적인 형식을 인식하고 허용해야 하는 플래그를 사용하는 것입니다. <width>X<height>+<X>+<Y>- 이것은 X 서버 쿼리 도구가 해당 정보를 표시하는 정확한 형식이 아닙니다. - 실행 xrandr그리고 확인하세요.

불행하게도 VLC는 그러한 주장을 받아들이지 않습니다. 이는 달라야 합니다. 대신 --width, 및 의 --height4 가지 매개변수를 사용합니다 .--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환경 변수도 올바르게 설정해야 합니다. 따라서 DISPLAYVLC를 실행하기 전에 export DISPLAY=:0.

관련 정보