quarta-feira, 3 de maio de 2017

Netflix no Raspberry Pi 3 pela primeira vez (com vídeo de demonstração)

Netflix no Raspberry Pi 3

O tão sonhado (para alguns) Netflix... Desde o início do blog em 2013 vejo essa questão em aberto, aquela ponta que faltava nos media centers.

Enquanto alguns dizem ser impossível rodar de qualquer forma, eu sabia que era somente uma questão técnica.

O problema do Netflix é que ele utiliza DRM e para tanto precisa de bibliotecas que possam decodificar seu conteúdo sem (teoricamente) vazar ele.

Uma solução antiga muito utilizada para esses serviços era o Silverlight, mas que vem caindo em desuso devido à chegada do HTML5 e alternativas de bibliotecas que possuem DRM. No Linux a biblioteca utiliza uma solução chamada Widevine, que embora não tenha sido criada pelo Google, hoje pertence a ele após a aquisição da empresa em 2010.

Sendo uma tecnologia proprietária e de código fechado não há como rodar facilmente em qualquer dispositivo.

No Linux para x86/x64 o Firefox e Chrome por exemplo já acompanham a biblioteca. Para ARM vai depender muito do dispositivo.

A forma básica de se rodar é utilizar o navegador chromium em conjunto com as bibliotecas widevine do Chrome OS para Chromebook que também roda ARM.

Apesar disso há/haviam vários problemas de compatibilidade, versões do chromium não funcionando com ela, etc. Eu cheguei a tentar rodar no passado sem sucesso e acabei deixando de lado.

O Netflix de fato não roda oficialmente ainda no Raspberry Pi entretanto isso não quer dizer que não rode.

Como rodar o Netflix no Raspberry Pi


Lembrando que é necessário ter uma conta Netflix. Não nos responsabilizamos por qualquer problema que venha a ter com sua conta ou pelo conteúdo do pacote que será baixado, faça por sua conta e risco.

Pacotes .deb recentes já com a biblioteca e atalhos fazem funcionar de maneira fácil na placa.

Os créditos primários vão para thatguruguy no fórum do Raspberry Pi que entregou um pacote com as libs e atalhos. Essa versão infelizmente parece não funcionar no navegador atual (testei agora, lembram dos problemas?!). De todo modo, uma outra pessoa de nick kusti8 nos fez o favor de entregar um pacote já com uma versão do chromium, libwidevine e atalho.

Abaixo informo a versão de kernel que testei e sei que funcionou. Estou usando o Raspberry Pi 3 e rodando o Raspbian na última atualização: 2017-04-10.

$ uname -a
Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux

Baixe o arquivo chromium-browser_56.0.2924.84-0ubuntu0.14.04.1.1011.deb e simplesmente instale.

$ wget https://github.com/kusti8/chromium-build/releases/download/netflix-1.0.0/chromium-browser_56.0.2924.84-0ubuntu0.14.04.1.1011.deb

$ sudo dpkg -i chromium-browser_56.0.2924.84-0ubuntu0.14.04.1.1011.deb

Após a instalação no menu Internet irá aparecer o atalho "Netflix-Launcher". Ele irá iniciar o Chromium já na página do Netflix e com o User-agent apropriado.

Netflix no Raspberry Pi 3

Iniciar essa página e logar era a parte fácil já que uma mudança no User-agent o fazia anteriormente.

Mas rodar o vídeo que é onde o plugin entra em cena somente agora que consegui:

Netflix no Raspberry Pi 3

Parece mentira? Pois é, mas mentira aqui só no primeiro de abril. Então veja o vídeo que fiz abaixo com seus próprios olhos (obs: o vídeo parece lento no início, mas é da própria série que inicia em câmera lenta, vejam até o final, péssima escolha pra demonstrar :( ).



Lembrando que estou utilizando o Raspberry Pi 3, na teoria funciona no 2B também, embora talvez não tenha o desempenho tão bom. Em outros modelos do Raspberry Pi não irá funcionar pois a biblioteca é feita para ARM V7 enquanto que os outros modelos utilizam um processador ARM v6.

A qualidade? Melhor do que esperado, praticamente sem lags na execução. Assisti uns 30 minutos ontem de um filme perfeitamente. Instale e tire suas próprias conclusões.

Querem algo mais sólido? Mandem uns tweets para o perfil do netflix. Eu já tentei :(

Atualização: Só para informar, rodei novamente hoje, verifiquei as estatísticas aqui e estava rodando à 720x480 x 23,9fps com alguns frame drops. Mas como disse acima, perfeitamente usável. Caso queira ver as estatísticas do seu basta apertar as teclas CTRL+ALT+SHIFT+D. Como o decoding está sendo realizado pela CPU é possível que tenha uma melhora com algum overclock, embora eu não tenha testado ainda.

Atualização 2: O teste aqui foi feito em uma tv de 1280×720p (resolução do X também), já há alguns relatos de que estão rodando "bem" entretanto houve um que em uma tv rodando o xorg em full hd (1080p) aconteceram alguns problemas/lags. Caso aconteça isso, altere a resolução do Raspberry Pi para 720p e refaça o teste. Obs: lembrando que aqui não estou falando da resolução dentro do Netflix.

Atualização 3: Quando forem testar para verificar a resolução e fps esperem alguns segundos ou um minuto. De início as vezes a resolução fica mais baixa que o normal (ao menos aqui) mas depois estabiliza.

Atualização 4: Para melhora no desempenho tente desativar o uBlock origin do lado direito do navegador, ao realizar alguns testes parece que ele tem afetado o desempenho não chegando com 720x com ele ativo.

Referências:
https://www.raspberrypi.org/forums/viewtopic.php?f=35&t=98559&start=100
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=176402

18 comentários:

  1. Esta com som, normal?
    No vídeo isso não ficou claro.

    Obrigado!

    ResponderExcluir
  2. Cara, estou pesquisando isso desde quando chegou a minha Raspberry Pi 3. Perdi noites tentando fazer o Netflix funcionar! Vou chegar em casa e testar isso. Eu tenho PiPplware 6.0, será que funcionaria com ele?

    ResponderExcluir
  3. Funciona perfeitamente, porém só consigo 512x384 é resolução, mas já está bom demais por rodar no pi.

    ResponderExcluir
    Respostas
    1. Uma obsservação que coloquei agora: as vezes aqui inicia com resolução mais baixa também, mas depois de alguns segundos (ou 1 min) estabiliza, veja aí se não acontece isso também.

      Excluir
  4. Alguma possibilidade de instalar esse pacote no OSMC e rodar ele por lá (launcher nativo)?

    ResponderExcluir
    Respostas
    1. Não testei, na teoria pode ser que funcione.

      Excluir
  5. Será que roda com OpenElec/Kodi?

    ResponderExcluir
    Respostas
    1. Não testei, na teoria pode ser que funcione.

      Excluir
  6. No meu ficou muito lento.
    Fez alguma configuração de alocar memória para vídeo diferente dá padrão?

    ResponderExcluir
    Respostas
    1. Não, o seu é o RPI3? Qual a resolução da sua TV/monitor?

      Excluir
  7. Excelente, funcionou corretamente. 720x480

    PS: TV de tubo usando a saida composto do Raspberry

    ResponderExcluir
  8. Felipe Fernandes7 de maio de 2017 13:05

    Show de bola, pra mim funcionou perfeitamente!
    Usei o Rasp Pi 3 com HDMI e resolucao 720, em 1024 ficou um pouco lento.
    No Rasp Pi Zero nem abriu, imagino que por ser bem mais lento.
    valeuu

    ResponderExcluir
    Respostas
    1. Ótimo! Obrigado pelo feedback!

      Excluir
    2. Em tempo: No RPIzero não vai abrir mesmo já que ele só roda executáveis ArmV6.

      Excluir
  9. uma pena so funcionar no 3, tenho modelo b =/

    ResponderExcluir