VLC em segundo plano e exibi-lo somente via HDMI

4

Eu corro VLC player e ele começa na minha linha de comando também, como executá-lo no fundo e saída somente via HDMI? SO Raspbiano (Framboesa)

    
por XXX 10.11.2016 / 21:33

1 resposta

1

Não tenho certeza de como o Raspbian OS manipula múltiplas saídas, mas estou assumindo que ele usa a prática comum atual, que é usar o Xinerama - ou seja, várias telas são usadas pelo mesmo "display" (em termos X11). Nesse caso, você basicamente não pode "selecionar uma porta de saída" - todas as saídas estão na mesma tela (você pode imaginá-la como uma tela virtual que cobre todas as suas telas e possivelmente mais).

Para segmentar uma "tela" específica (o termo X11, que significa uma parte de uma exibição), é necessário perguntar ao servidor X qual parte da exibição está mapeada para a tela desejada e, em seguida, forçar o VLC a processar para essa área. A maneira padrão de fazer isso é usar um sinalizador --geometry que o aplicativo deve reconhecer e aceitar um formato muito específico semelhante a este: <width>X<height>+<X>+<Y> - que é (não) incidentalmente o formato exato que a ferramenta de consulta do servidor X exibe essa informação - execute xrandr e veja.

Infelizmente, o VLC não aceita esse parâmetro - tem que ser diferente. Em vez disso, ele usa quatro parâmetros diferentes: --width , --height , --video-x e --video-y .

Então aqui está um pequeno script que usa xrandr para obter a geometria da primeira porta HDMI conectada (eu tenho vários, então é útil assim) e depois quebra a especificação de geometria de xrandr para iniciar o VLC com os parâmetros corretos:

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

(formatado para várias linhas com barras invertidas para facilitar a leitura, isso deve estar em uma linha, mas será executado como está - com as barras invertidas).

[Atualizar]: Agora que li sua pergunta, parece-me que você pode querer executar seu script de fora da sessão do servidor X; nesse caso, você também precisa para configurar a variável de ambiente DISPLAY corretamente. Portanto, tente definir o DISPLAY antes de executar o VLC executando export DISPLAY=:0 .

    
por 22.05.2017 / 11:48