Videos à distância

Fui assistir a um filme que baixei em um HD externo conectado ao meu notebook mais velho.
Normalmente eu ligo esse HD diretamente na Televisão, mas dessa vez eu não podia ejetar o HD, pois ele estava sendo usado por outros programas.
Então me vi numa situação com duas alternativas: assistir o filme na telinha de 14" ou arranjar um jeito de fazer streaming do vídeo para meu notebook novo, que possui saída HDMI, e aproveitar toda a qualidade de som e imagem que a LG™ proporciona.

Como bom computeiro cinéfilo (não sou), escolhi a segunda opção e vou escrever aqui como resolvi o problema naquela hora bem como outros métodos que eu descobri depois.

1. Coloque os computadores em rede

Eu estava sem um roteador para poder fazer uma rede. Como ambos notebooks possuem placas wireless, criei uma rede rede Ad-Hoc, como explicado neste post (sem a parte da internet).

2. Arranje algum jeito de trocar arquivos

Existem várias maneiras de enviar pacotes de um computador para outro na rede:

  1. SSH

    SSH foi a primeira coisa que veio em mente por estar acostumado. Admito que não é uma solução muito boa, pois consome muita CPU e aumenta o tráfego da rede desnecessariamente (não existe motivo de usar criptografia a não ser que você seja paranoico ou o vídeo seja extremamente secreto). De qualquer forma, funcionou bem da seguinte maneira:

    1. Instale e ative o SSH em ambos os computadores:

      sudo pacman -S openssh
      sudo /etc/rc.d/sshd start
      
    2. Conecte o Computador2 ao Computador1 por ssh:

      ssh julio@192.168.1.1
      
    3. Reproduza o vídeo

      mplayer video.avi -display :0
      

      ou

      export DISPLAY=:0
      

      caso precisemos utilizar algum outro programa que não possui um comando para mudar o display.

  2. SSH com pipe

    Como no modo anterior, mas redirecionando o vídeo direto para o mplayer

    ssh julio@192.168.1.2 "cat /media/externo/Videos/video.avi" | mplayer -cache 65536 -
    
  3. SSHFS

    1. Instale o sshfs

      sudo pacman -S sshfs
      
    2. Monte o sistema de arquivos

      sshfs julio@192.168.1.2:/media/externo /media/externo
      
    3. Vá até a pasta e reproduza o vídeo com o mplayer como se fosse um arquivo local.

      mplayer /media/externo/Videos/video.avi
      
  4. SSH com X11

    1. Altere, no servidor, o arquivo /etc/ssh/sshd_conf de

      #X11forwarding no
      

      para

      X11Forwarding yes
      

      ou, no cliente, edite o /etc/ssh/ssh_config de #ForwardX11 no para ForwardX11 yes.

    2. Reproduza o vídeo com o mplayer

    ssh -XY julio@192.168.1.2 mplayer /media/externo/Videos/video.avi
    
  5. Samba

    1. Baixe o Samba

    2. Ative o compartilhamento da sua pasta de vídeos

      #  vim /etc/samba/smb.conf
      [videos]
         comment = Videos do Julio
         path = /media/externo/Videos
         writable = no
         valid users = julio
         follow symlinks = yes
         wide links = yes
      
    3. Monte o sistema de arquivos

      sudo mount -t cifs //192.168.0.1/Videos /media/externo/Videos -o user=julio,password=PASSWORD,workgroup=WORKGROUP
      
    4. Reproduza o vídeo com o mplayer como se fosse um arquivo local

      mplayer /media/externo/Videos/video.avi
      
  6. Netcat

    • No computador com o vídeo:

      cat /media/externo/Videos/video.avi | nc -l -p 9998
      
    • No computador ligado à TV:

      nc 192.168.0.1 9998 | mplayer -vo x11 -cache 3000 -
      
  7. VLC com sftp

    file » Open Network…

    sftp://julio@10.211.55.3/media/externo/Videos/video.avi

    Digite login e senha

3. Converter

Na rede de casa eu consegui fazer streaming de vídeo 720p sem problemas, mesmo com o meu computador antigo usando wi-fi antigo (802.11g). Porém se você quiser fazer o mesmo com vídeo 1080p ou até mesmo fazer streaming pela internet, pode ser interessante converter o vídeo em tempo real. Para isso você pode usar o ffmpeg.

Evitar standby

Para evitar que o monitor do computador ligado à Televisão seja desligado automaticamente por inatividade, podemos desativar o standby pelo Xorg:

sudo vim /etc/X11/xorg.conf

E deixar a sessão ServerLayout como no exemplo abaixo:

Section "ServerLayout"
        Identifier                  "Layout"
        Screen      0               "Screen0"
        Option      "Xinerama"      "true"
        Option      "BlankTime"     "0"
        Option      "StandbyTime"   "0"
        Option      "SuspendTime"   "0"
        Option      "OffTime"       "0"
EndSection

Julio Batista Silva
Julio Batista Silva
Engenheiro de Dados

Eu sou um engenheiro de computação apaixonado por ciência, tecnologia, fotografia e idiomas. Atualmente trabalhando como Engenheiro de Dados na Alemanha.

comments powered by Disqus