Monday, June 03, 2013

:: Linux, DLNA e Smart TV ::

Bom, a quem interessar possa, abaixo vou lançar minha experiência com uma Smart TV utilizando DLNA para "puxar a mídia" de uma máquina Linux.

O que é DLNA? Nâo é meu objetivo explicar o que é. Então dá uma lida aqui: http://www.dlna.org

A grosso modo, a ideia é fazer a Smart TV (ou outros dispositivos) acessarem um servidor de mídia (filmes, fotos, músicas) via rede, seja ela cabeada ou WiFi, sem precisar conectar a TV via HDMI (por exemplo) nesse servidor.

O que utilizei:
  • Slackware64-14.0 Linux (no meu desktop e notebook) Debian 6.0.7 (para ARMEL, no meu servidorzinho de downloads, que é um Sheeva Plug)
  • minidlna (software)
  • um wifi router da tp-link
  • uma Smart TV da LG
Compile e instale o minidlna (que precisa do ffmpeg já instalado) na sua distribuição. No slackware eu usei este slackbuild. No debian, como não tinha pacote pra ARMEL, tive que baixar, compilar e instalar no braço. Mas é barbadinha.

Depois disso basta editar/criar o arquivo de configuração do minidlna em /etc/minidlna.conf. Coloquei as seguintes configs no meu download server:
port=8200
network_interface=eth0
media_dir=/mnt/hd/downloads
friendly_name=Sheeva Media Center
db_dir=/var/cache/minidlna
log_dir=/var/log/minidlna
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
inotify=yes
enable_tivo=no
strict_dlna=no
notify_interval=900
serial=1234 #claro que não usei este serial   :P
model_number=1
Com isso feito, montei o HD externo em /mnt/hd e disparei o minidlna com 'minidlna -d'. Na primeira execução ele vai "varrer" a pasta (e subpastas) para catar as mídias. Pronto, com isso o server já deve estar ativo. Agora é só fazer a TV procurar o DLNA server, escolher o que quer assistir e correr pra galera.

Ah, se remover/adicionar alguma mídia da biblioteca, convém rodar um 'minidlna -R', pra ele rescanear as mídias.

Problema encontrado:

Como minha rede wifi em casa é 802.1g, meu limite de link é de 54Mbps. Por conta disso, tentei rodar um filme em Full HD (1080p) e me dei mal. O video iniciou legal, mas uns 30s depois parou pra "buffering", rodou mais um tempo, buffering, etc. Creio que se minha wifi fosse 802.1n (que vai a mais de 300Mbps) não teria esse problema.

Foi por causa disso que instalei o minidlna no meu notebook. Assim pra ver filme porrada (full hd), conecto ele na TV através de um cabo de rede e vai tranquilex.

Abraço!

P.S. - Pô, falha minha! Esqueci de agradecer ao Cesar Radtke pela dica do minidlna. Valeu, bruxo!

12 comments:

Iuri said...

Vou tentar usar esse minidlna. Anteriormente usei dois programas, um em Java e outro um antigo, criado para stream para o PS3, e não rodaram legal não.

Kenjiro said...

Sério, achei que seria coisa do outro mundo. Mas só alterei umas 3 linhas da config default do minidlna e deu, saiu funcionando de cara.

Unknown said...

Se estiver aberto a sugestões recomendo utilizar o Plex [1].

Além de ser um servidor dlna capaz de fazer transcode para adequar se necessário a qualidade da mídia para qualquer dispositivo (ele tem profiles), você pode organizar toda a tua coleção de vídeos. Além disso, tu poder assistir em qualquer dispositivo móvel (as apps móveis são pagas), podendo iniciar uma série no desktop e terminar no table ou
smartphone, de forma transparente.

E suporta legendas.

[1] http://plexapp.com/

Kenjiro said...

Darei uma olhada nesse Plex, valeu pela dica, Tarcísio.

O chato é que só vi, no site deles, pacote para Ubuntu, Fedora e CentOS. Mas nada que um desempacotar e reempacotar pra minha distro não deva resolver ;)

Unknown said...

Como o Plex é baseado no XBMC, talvez tenha alguma solução nativa no XBMC também. :)

Kenjiro said...

Opa! Dei mais uma fuçada (vai google) e achei onde baixar pacotes pra Slackware \o/

Testarei hoje, se der ;)

Kenjiro said...

Cara, um amigo meu disse que o Plex é uma saída caso o device (no meu caso TV) não consiga rodar alguns videos (devido a formato, etc). Que ele (Plex) faz reencode o tempo todo, blablabla.

Se isso é verdade, então não precisaria disso agora, pois minha TV deu conta do Transformers 3 (em 3D, full HD) via DLNA ;)

O que me dizes, Tarcísio?

Iuri said...

Quase todos os programas que testei (samsung dnla, ps3media e outros que não lembro o nome) fazem essa conversão.

Unknown said...

O que o seu amigo falou não deixa de ser verdade, o plex consegue reproduzir praticamente qualquer codec de vídeo/audio (por causa da engina oriunda do XBMC), MAS entrega via transcode só quando necessário. Um dos cenários onde se faz necessário fazer o transcode é exatamente quando o dispositivo (tc/celular) não suporta o formato original do arquivo. Outro cenário muito comum do transcode acontecer é quando você precisa de legendas, são poucos dispositivos que conseguem exibir as mesmas corretamente (Para variar, deixaram um pouco de lado quem precisa de legendas quando pensaram no formato DLNA).

Fora isso, o fluxo vai ser directplay (no transcode), o que seria o normal.

Mas Plex é para quem tem uma videoteca considerável e quer uma solução completa.

Kenjiro said...

Testa o minidlna e veremos no que dá ;)

Anonymous said...

O problema do minidlna é quando você tem filmes em .mkv com legenda embutida e for usar uma externa (.srt). A SmarTV não dá opção de escolher a legenda, ela pega só a embutida. Pra corrigir tem q editar o mkv com o mkvmerge e incluir a legenda srt dentro do arquivo.

Kenjiro said...

Mas quem é o roscão que baixa filme com legenda embutida? ;)