Blog do Julio

Hacks, tutoriais e dicas

Videos à Distância

| Comments

Fui assistir a um filme que baixei em um HD externo conectado ao meu notebook mais velho. Normalmente eu ligo esse HD direto 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 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

      1. 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

      1. 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 # 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 -

  3. Converter

    Na rede de casa eu consegui fazer streaming de vídeo 720p sem problemas, mesmo com o meu computador antigo usando wifi 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.

  4. 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

Links

Comments