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

(読みやすくするためにバックスラッシュを使用して複数行にフォーマットしました。1行にする必要がありますが、バックスラッシュを使用するとそのままうまく機能します。)

[修正する]:今、あなたの質問をもう一度読んでみると、おそらくXサーバーセッションの外でスクリプトを実行したいということです。この場合、DISPLAY環境変数も正しく設定する必要があります。したがって、DISPLAYVLCを実行する前にexport DISPLAY=:0

おすすめ記事