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:
- 
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: - 
Instale e ative o SSH em ambos os computadores: sudo pacman -S openssh sudo /etc/rc.d/sshd start
- 
Conecte o Computador2 ao Computador1 por ssh: ssh julio@192.168.1.1
- 
Reproduza o vídeo mplayer video.avi -display :0ou export DISPLAY=:0caso precisemos utilizar algum outro programa que não possui um comando para mudar o display. 
 
- 
- 
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 -
- 
SSHFS - 
Instale o sshfs sudo pacman -S sshfs
- 
Monte o sistema de arquivos sshfs julio@192.168.1.2:/media/externo /media/externo
- 
Vá até a pasta e reproduza o vídeo com o mplayercomo se fosse um arquivo local.mplayer /media/externo/Videos/video.avi
 
- 
- 
SSH com X11 - 
Altere, no servidor, o arquivo /etc/ssh/sshd_confde#X11forwarding nopara X11Forwarding yesou, no cliente, edite o /etc/ssh/ssh_config de #ForwardX11 noparaForwardX11 yes.
- 
Reproduza o vídeo com o mplayer
 ssh -XY julio@192.168.1.2 mplayer /media/externo/Videos/video.avi
- 
- 
Samba - 
Baixe o Samba 
- 
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
- 
Monte o sistema de arquivos sudo mount -t cifs //192.168.0.1/Videos /media/externo/Videos -o user=julio,password=PASSWORD,workgroup=WORKGROUP
- 
Reproduza o vídeo com o mplayer como se fosse um arquivo local mplayer /media/externo/Videos/video.avi
 
- 
- 
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 -
 
- 
- 
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
