Transmitir conteúdo para TV por wifi - NetWorkMedia NWM - DLNA
Autor: Crash | Publicado: 2015-09-12T03:36:00-07:00


Bom pessoal, 

Resolvi escrever este post por alguns motivos:
Vi que muita gente tem o mesmo problema
que eu e nenhuma das soluções que procurei na internet não foram satisfatórias.
Tive alguns problemas que outras pessoas não tiveram, ou tiveram e não
postaram.
Tentei por 3 dias assitir o primeiro capitulo de Mr Robot e não conseguia.
Queria ter internet e assistir&nbsp; filmes e
videos ao mesmo. 
Não queria ter que ligar cabos (hdmi) no pc/notebook e&nbsp; TV.
Queria começar a assistir Mr Robot.

Informação básica: Estou partindo do principio que você já saiba configurar sua
TV e sua rede. Se não sabe fazer isso, procure no Google como fazer e por favor
não poste no comentários coisas do tipo: Tenho uma LG Modelo &nbsp;XyZ pica das
galaxias como faço para configurar? Sério, eu não vou responder! Isso depende de
cada modelo, então estou mantendo o artigo o mais genérico possível.

Não, não vou colocar Screenshots!

Começando: 

Problema: Miracast e Widi não funcionam: Bom, eu tentei por alguns dias fazer essas
tecnologias funcionarem sem sucesso. Cada uma tem uma particularidade
diferente, requisitos de hardware e blabla que me fizeram desistir. 

Então, optei pela tecnologia&nbsp; DLNA (http://www.techtudo.com.br/dicas-e-tutoriais/noticia/2014/07/como-transmitir-conteudo-do-computador-pela-tv-wi-fi.html)
que como vocês podem ver no link é bem simples e fácil se configurar. Porém,
esbarrei em alguns algumas coisas: 

Meu roteador wifi está localizado no quarto e a TV na sala, os prédios aqui na
Polônia, os mais antigos, as paredes são bem grossas, mesmo a distancia sendo
pequena o sinal&nbsp; não é muito muito bom para transmissão de vídeo em Full HD por exemplo.&nbsp; Mas antes de descobrir isso, segui os passos
do link acima, e constantemente&nbsp; em partes
aleatórias do filme a conexão era interrompida, além disso, usando o Streaming
microsoft as legendas não são carregadas, mesmo que possuam o mesmo nome do
arquivo, como de costume. 

Procurei então outros softwares que desempenhassem a mesma
função e acabei encontrando o PS Media Server http://www.ps3mediaserver.org/, ele
tem muita opções de codecs e as legendas são carregadas! \o/. 

Porém, durante a exibição, por varias vezes o filme ficando
coma mensagem de loading, logo fui investigar&nbsp;
a causa e descobri que o software faz encoding on-the-fly do conteúdo que
é&nbsp; enviado para TV e isso requer bastante
processamento e memoria.

Procurei uma forma&nbsp; de utilizar encodes
mais leves inicialmente, sem sucesso nas opções fornecidas pelo software, então
resolvi desabilitar completamente o encoding, BINGO! 
A tela de loading parou de aparecer durante o filme(demora um pouco pra
carregar em alguns casos), porém, a rede voltou a cair durante a exibição.

<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

Conclusão: Minha rede Wifi não está&nbsp; suportando a transmissão de vídeo e meu
acesso a internet simultaneamente. Lembre-se, no meu caso eu tenho paredes
grossas entre o quarto e a sala, pode ser que pra você isso não seja um problema.


Solução:&nbsp; Criei uma
rede separada somente para videos/musicas e afins em casa na qual chamei de NetWorkMedia
(NWM). Qual a vantagem? 

Você tem sua internet independente. 
Sua TV e equipamentos não tem acesso a internet diretamente, &nbsp;assim fica menos provável alguém explorar alguma
vulnerabilidade nos equipamentos. 
Você pode conectar seu amigos na sua NWM sem ter passar a senha da sua rede
Wifi pessoal. Eles podem usar notebook e celulares para enviar videos e musicas
aos seus equipamentos.
Você tem uma rede dedicada para transmissão de videos e musica sem interferir
na sua Wifi Pessoal. 
Você pode usar seu computador&nbsp; como
ponte&nbsp; de acesso a internet, ou seja,
seus&nbsp; equipamentos não ficam ligados diretamente
na internet quando você não está em casa por exemplo e o melhor de tudo, SEM
FIOS, sem cabos HDMI espalhados pela casa. 
O notebook/pc não precisa ficar perto da televisão pois o cabo é pequeno e por
ai vai.


Problema: Sua tv não tem acesso &nbsp;direto a
internet: 
Solução: Como disse anteriormente você pode usar um computador qualquer&nbsp; para fazer esta “ponte” entre seus equipamentos
e a internet. 

Para as minhas necessidades eu fiz a configuração para acesso a radio www.di.fm e&nbsp;
para transmissão de videos do youtube.&nbsp;
No caso do youtube você pode pode fazer de duas maneiras: 

1- Baixar o vídeo e fazer a transmissão off-line.
2- Usar um plugin para o PMS que faz a transmissão on-the-fly do conteúdo. 

Então até este momento temos: 
Uma rede&nbsp; de 300 megas&nbsp; wifi para&nbsp;
videos/musicas e afins. Pelos meus cálculos uma taxa de transferência de
cerca de 60 megas&nbsp; é suficiente para
assistir filmes em Full HD e 4K sem problemas.
Isolada da internet&nbsp; ou não. ( Depende de
como você vai querer usar)
Acesso rápido é fácil para visitantes.
Baixo custo ( no meu caso)&nbsp; aushuashuasha
0 Cabos!!!!!! Eu realmente odeio cabos! 



Vamos as configurações: (Receita de bolo)&nbsp;

Rede: 
Rede Pessoal: 
1 roteador/AP &nbsp;802.11n
Acesso a internet 
1 placa wifi 802.11n do notebook ou PC – Pode ser uma Ethernet. 100/1000

Configuração: 
Roteador IP: 192.168.0.1
Notebook IP(wifi pessoal): 192.168.0.100 =&gt; Recomendo que o IP seja fixo
para facilitar as coisas.
Mascara de rede: 255.255.255.0
Default Gateway: 192.168.0.1
DNS: 8.8.8.8 &nbsp;e 8.8.4.4 =&gt; DNS do
google, use o que achar melhor.

NetWorkMedia(NWM)
1 Roteador 802.11n - Sem internet 
1 Dongle USB Wifi 802.11n
1 Smart TV com Wifi ou Ethernet (Lógico!)

Configuração
Roteador: 192.168.1.1 -&gt; ATENÇÃO! O IP/REDE precisa obrigatoriamente&nbsp; ser diferente da rede pessoal!!!!

NoteBook IP(NWM – dongle usb): 192.168.1.100 -&gt; Mesma
recomendação
Mascara de Rede: 255.255.255.0
Default Gateway: 192.168.1.1
DNS -&gt; Não é necessário, não temos internet aqui.

Smar TV -&gt; Você deixar sua Smart TV fazer as
configurações sozinhas&nbsp; ou configura-la
na mesma faixa de ip da NWM, por exemplo 192.168.1.101. 

Bata tudo no liquidificador e leve ao forno por 2 horas. Uahsuahsuahushas 


Softwares e versões: 

Para TV: Verifique se a TV tem suporte DLNA, se não tiver compre uma! Aushausuahs

Para o notebook: &nbsp;PS Media Server 1.90.1
- http://www.ps3mediaserver.org/
Plugin: PMSEncoder 2.0.0 - &nbsp;https://github.com/chocolateboy/pmsencoder
youtube-dl&nbsp; - https://yt-dl.org/downloads/2015.09.09/youtube-dl.exe
RTMP Dump 2.4&nbsp; -&gt; Não vamos utilizar
neste artigo, mas é bom você baixar.

Faça a instalação PMS
Faça a o download do psmenconder (JAR) e o coloque dentro do diretório plugins
criado na instalação do PMS. 

Após este processo, crie o arquivo WEB.conf em&nbsp;
C:\ProgramData\PMS\ 

Este arquivo contem a configuração para as minhas rádio favorita e um link para um vídeo do youtube. Você deve seguir exatamente o mesmo modelo
para adicionar novos videos. Neste link você tem mais detalhes: https://code.google.com/p/ps3mediaserver/issues/attachmentText?id=294&amp;aid=5613783387044830644&amp;name=web.conf&amp;token=51e35537a9ee8f2b0e265857c2c91ccf

Segue o meu WEB.conf

# audio streams

audiostream.Web,Radio=DiFM-Goa-Psy
Trance,http://pub6.di.fm:80/di_goapsy_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Vocal
Trance,http://pub7.di.fm:80/di_vocaltrance_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Progressive
Psy,http://pub4.di.fm:80/di_progressivepsy_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Lounge,http://pub5.di.fm:80/di_lounge_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Hard
Dance,http://pub8.di.fm:80/di_harddance_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Hard
Techno,http://pub8.di.fm:80/di_hardtechno_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-House,http://pub7.di.fm:80/di_house_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Epic
Trance,http://pub6.di.fm:80/di_epictrance_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Electro
House,http://pub7.di.fm:80/di_electrohouse_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Drumstep,http://pub8.di.fm:80/di_drumstep_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Dark
PsyTrance,http://pub6.di.fm:80/di_darkpsytrance_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Classic
Trance,http://pub4.di.fm:80/di_classictrance_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Classic
Vocal
Trance,http://pub7.di.fm:80/di_classicvocaltrance_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Chillout
Dreams,http://pub5.di.fm:80/di_chilloutdreams_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Chillout,http://pub8.di.fm:80/di_chillout_aac?b9ee7b9f36ecd5124c92c723

audiostream.Web,Radio=DiFM-Chill
&amp; Tropical House,http://pub6.di.fm:80/di_chillntropicalhouse_aac?b9ee7b9f36ecd5124c92c723



# youtube

videostream.Web,Youtube,https://www.youtube.com/watch?v=YqeW9_5kURI,https://www.youtube.com/watch?v=YqeW9_5kURI



Depois deste passo, você precisa&nbsp; adicionar
essas linhas no arquivo PMS.conf &nbsp;que
fica no mesmo diretório do WEB.conf: 

youtube-dl.path = C:\\ProgramData\\PMS\\youtube-dl.exe
pmsencoder.script.directory = C:\\ProgramData\\PMS\\scripts

Obs: Sim, são duas barras, eu não digitei errado! 

Agora, faça o download do youtube-dl e o coloque em C:\ProgramData\PMS\

Crie o diretório scripts &nbsp;dentro de C:\ProgramData\PMS\
e dentro dele crie o arquivo youtube.groovy com o seguinte conteúdo: 
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

script {

&nbsp;&nbsp;&nbsp; profile ('YouTube-DL') {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pattern {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; match { YOUTUBE_DL_PATH }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protocol([ 'http', 'https' ])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; match { isYouTubeDLCompatible(YOUTUBE_DL_PATH,
uri) }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; action {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if (YOUTUBE_DL_MAX_QUALITY) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; downloader = YOUTUBE_DL_PATH + [
'--max-quality', YOUTUBE_DL_MAX_QUALITY, '--quiet', '-o', 'DOWNLOADER_OUT',
'URI' ]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //} else {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; downloader = YOUTUBE_DL_PATH +
[ '--quiet', '-o', 'DOWNLOADER_OUT', 'URI' ]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; }



&nbsp;&nbsp;&nbsp; // fall back to the native handler if
youtube-dl is not installed/enabled

&nbsp;&nbsp;&nbsp; profile ('YouTube') {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pattern {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// extract the resource's video_id from the
URI of the standard YouTube page

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; match uri:
'^https?://(?:\\w+\\.)?youtube(-nocookie)?\\.com/watch\\?v=(?&lt;youtube_video_id&gt;[^&amp;]+)'

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Now, with $video_id defined, call
the builtin YouTube handler.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Note: the parentheses are required
for a no-arg method call

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; action {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; youtube()

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; }

}

Note que algumas linhas da função action foram comentada.
Fiz isso pois o youtube-dl não tem mais suporte&nbsp;
ao parâmetro --max-quality. Segue o link para o arquivo original: https://github.com/chocolateboy/pmsencoder/blob/master/src/main/resources/scripts/youtube.groovy



Agora vamos configurar&nbsp;
o PS3 Media Service: 

Inicie o PMS
Vá até a aba Configuração Geral: 
Na opção: Forçar IP do servidor, coloque o IP que foi escolhido para o dongle
wifi da NWM, no meu caso 192.168.1.100. 

Na opção Largura de Banda Máxima&nbsp; em
Mb/s,&nbsp; eu&nbsp;
deixei como 0, sem limite, como esta é uma rede dedicada para isso, não
faz sentido por limitações. 

Marque a opção prevenir modo de suspensão enquanto faz stream.

Verifique se em Sistema de plugins o&nbsp;
PMSEncoder apareceu. Caso não tenha aparecido, você fez algo errado,
reveja a instalação do começo. &nbsp;&nbsp;

Na aba Navegação / Definições de Partilha 

Demarque a opção Esconder Pasta&nbsp;
#Transcode# 
Este diretório é criado automaticamente pelo PSM, como o PSM tem vários plugin
para exibição de videos, ele&nbsp; tenta criar
uma transmissão para cada tipo de encoding (jogada genial do devel) então caso o
seu vídeo não seja suportado pelo encoder default, você pode entrar nesta pasta
e tentar reproduzir seu&nbsp; vídeo/musica
usando outros encoders.

Em Pastas partilhadas, coloque o diretório onde estão seus filmes
e blabla.

Na aba Definições de transcoding: 
Clique em Definições comuns de transcoding

Na opção: Saltar transcode para as seguintes extensões -&gt; Coloque as
extensões que na qual você não queira que o PSM&nbsp;
use encoder para envio, como disse no inicio ele faz isso on-the-fly, e
como agora nos temos uma rede bem rápida não há necessidade disso, no meu caso
as extesões que coloquei foram: mkv,avi

Trick: Em alguns casos algumas TV dizem não ter suporte a
mkv ou Avi, neste caso tente apenas alterar a extensão entre estes dois tipos. 

Na opção: Motores de ficheiro de vídeo -&gt;&nbsp;
No meu caso coloquei como Padrão o VLC Vídeo ( caso você não tenha o VLC
atualizado, atualize!). O VLC é capaz de reproduzir uma grande variedade de
tipos de encodes, portanto, desabilitei os demais. Porém, caso o vlc não
execute algum conteúdo, basta habilitar os outros e testar. Para&nbsp; coloca-lo como padrão, use as setas no canto
inferior esquerdo, a tomada habilita ou desabilita o player.



Motores de Streaming&nbsp;
de vídeo WEB. 
Selecione PMSEncoder&nbsp; como Default, e
desabilite os outros, mesmo eles como padrão o PSM tentar executa-lo com o VLC
e não funciona. Ou você pode deixar habilitado e ir no diretório #Transcode# &nbsp;ja mencionado e encontrar o arquivo referente
a reprodução(ID do youtube + [nome do encoder]) usando o PSMEncode, não acho
uma boa ideia caso você tenha uma lista de videos grande, pois neste
diretório&nbsp; ficam todas as
reproduções&nbsp; para todos os encoders,
então quando acabar um vídeo ele automaticamente passa para o próximo e toda
vez que ele não consegue reproduzir, aparece uma pergunta se deseja ir para o
próximo. Logo, se você quer reproduzir muito videos do youtube, desabilite os
outros encoders, assim você não terá essa interrupção pois apenas a reprodução
para o PMSEncoder será criada. 


Motores de streaming&nbsp; de áudio WEB.
Para que a Difm funcione, deixe como padrão FFmpeg Web Áudio e desabilite o VLC.


UPDATE:
Acabei de testar com arquivos mp4 e mesmo configurando para que não haja enconding para estar extensão, &nbsp;o infeliz do PSM insiste em fazer isso, ou seja, problemas com travamento. 
Solução: Apenas renomeie de .mp4 para ,avi, assim o encoding não será executado.


Pronto! Clique em Guardar no topo do tela e clique em
Reiniciar Servidor.
Agora na na sua TV e seja feliz! 
Obs: Quando o programa é fechado, algumas dessas configurações podem se perder
ou eu fiz alguma merda, então confira tudo quando for usar o PSM novamente.


Segurança:
Utilize uma senha forte tanto na Rede particular&nbsp; quanto na NWM. Por mais que a NWM esteja fora
da internet, alguém pode entrar caso você utilize uma senha fraca. 
Recomendações: 
Use WP2+AES em ambas as redes.
Desabilite o WPS em ambas as redes.
Deixe o &nbsp;pc/notebook com firewall
habilitado, libere apenas a porta usada pelo PSM (5001)
Na sua rede particular crie um filtro de MAC no roteador e cadastre somente os
dispositivos que você conhece.




Conclusão: 
Já assisti todas os episódios disponíveis de Mr. Robot.
Não tenho mais problemas com loading e encoding.
Quando desligo ou desconecto meu notebook, a NWM fica isolada da internet. 
Não tenho milhões de cabos&nbsp; ligados na
TV.
Foi chato e demorado pra caralho fazer isso, devidor a falta ou a má
documentação, mas ao mesmo tempo bem gratificante ver tudo funcionando no final.

Próximos desafios para melhorar a NWM: 
Integração com Popcorntime.
Streaming da área de trabalho.
Ligação da TV com a HomeTheather sem cabos. Não fiz porque não comprei o HomeTheater ainda! Uahsaushauhsa
Tem alguma sugestão? Call me! @crashbrz ou #dclabs @ freenode