Servidor de midia com Raspberry, MiniDLNA, ChromeCast e BubbleUPnP

Há algum tempo eu escrevi um artigo sobre servidor de mídia com Raspberry usando Rygel (veja esse artigo). Agora vou discorrer sobre algo um pouquinho diferente, que é pra quem tem o Google Chromecast.

Eu tinha aqui uma coleção de DVDs da Pantera cor-de-rosa que minha filha ama, mas eu não queria ligar o arcaico blue-ray para assistí-lo, afinal, estamos na era digital, não é mesmo? Bem, saindo do Google Play e do Netflix, como eu poderia reproduzir meu próprio conteúdo no Chromecast? Daí pesquisei um bocadinho e cheguei a essa solução.

Preparando as midias a serem tocadas





Eu primeiramente extrai em um notebook mais antigo (que ainda possui leitor de DVD) o conteúdo dos DVD em forma de capítulo. Para isso, instale em seu Windows algum programa para fazer a extração ou, caso seja um feliz usuário de Linux como eu, utilize o programa dvd-rip. Instale-o via apt, caso já não o tenha instalado:

Crie um projeto e extraia o conteúdo. Suponhamos que você tenha 4 DVDs da Pantera cor-de-rosa também. Eu chamei o projeto de “Pantera_cor-de-rosa-DVD1” para o DVD1. Só que todos os capítulos extraídos ficaram com o mesmo nome, em diretórios diferentes, no formato vob. Depois de extrair, fiz uma série de manipulações:

Converter os arquivos vob para mp4

Eu utilizo o ffmpeg que costumo compilar os fontes para habilitar as coisas do jeito que eu gosto, mas acredito que você deve conseguir utilizar a contento instalando dos repositórios mesmo:

Algumas distribuições não tem o ffmpeg nos repositórios. Por causa da treta no projeto, tem um fork que é o libav onde você terá avconv invés de ffmpeg e avplay invés de ffplay. Para instalar;

As flags são as mesmas até onde pude testar. Depois, os arquivos estarão esparramados em uma estrutura de diretórios da extração e você precisará encontrá-los e convertê-los. Para isso, da forma mais simples (tem um quatrilhão de maneiras de fazer em shell, não critique, adote sua solução), entre no diretório raiz (dvdrip-data) e execute:

Ao final será criado um arquivo.sh que você deve editar e colocar na primeira linha:

O conteúdo abaixo dessa linha deve estar parecido com isso:

Agora execute esse arquivo e tenha paciência porque demora um bocado:

Testar o arquivo convertido

Quando terminar, confirme a existência dos arquivos mp4:

E então reproduza um para teste:

Ou “avplay”, caso esteja utilizando a libav. Reproduziu? Ótimo, agora você pode apagar os arquivos .vob

Apagar os arquivos vob

Esses arquivos não são mais necessários, então você pode removê-los facilmente (de maneira irreversível) com um comando só:

Renomear os arquivos





É uma droga ter todos os arquivos com o mesmo nome, seria interessante ao menos tê-los numerados já que não dá pra nomear por capítulo. Nesse caso, tem um comando simples:

Agora já tem pelo menos um identificador, mas se o nome estiver muito cumprido, é capaz que não seja possível lê-lo na hora da exibição. Nesse caso, renomear uma parte maior ou o arquivo inteiro é uma opção. Por exemplo:

Aí fica a seu critério.

Copiando para uma midia externa

Você vai precisar colocar em um pendrive ou um HD externo para conectá-lo ao Raspberry para que possa ser reproduzido. Faça a cópia como desejar e acesse a mídia no Raspberry. Supondo que você sempre terá esse dispositivo conectado via USB ao Raspberry, o primeiro passo é descobrir como esse dispositivo foi (ou será) identificado. O primeiro comando é o “dmesg”, que ao término deverá exibir o dispositivo conectado a ele. Eu normalmente deixo habilitado o messages no sistema. nesse caso é só executar o comando:

e ficar de olho na saída enquanto conecta o dispositivo à porta USB. tendo sido identificado, disponibilize-o no sistema:

Para montar automaticamente a cada boot, edite o arquivo /etc/fstab e inclua-o:

Nessa linha usei ext4 como exemplo, mas substitua pelo sistema de arquivos da sua midia. Se você montou manualmente mas não sabe qual é o sistema de arquivos, digite:

E procure pelo mount point para saber qual o sistema de arquivos. Também utilize sdXx, que deve ser substituido pelo dispositivo real, algo como sda1. Terminada a preparação da midia, agora vamos ao serviço do sistema.

MiniDLNA

Primeiramente, utilize o apt para instalar esse servidor de midia. Simplesmente faça:

Após instalado, a configuração é bastante simples. Entre em /etc e edite o arquivo de configuração.

Se você não sabe utilizar o vi ou o vim, use seu editor preferido. Comente a linha padrão “media_dir=/var/lib/minidlna”. Agora você só precisa adicionar 2 parâmetros a esse arquivo; um nome amigável na rede e um diretório de midia. Como criamos no Raspberry o diretório de videos em /media/videos, devemos adicionar nesse arquivo uma linha assim:

A letra “V” na frente indica que é video. Poderia ser um container padrão (.) , um diretório navegável (B), música (M) ou fotos (P). O nome amigável fica nesse formato abaixo.

Para fazer o controle, sugiro que esteja como root (digitando ‘sudo su’) e faça o scan e o reinicio do serviço:

Isso precisa ser feito toda a vez que você modificar algum dado no repositório de midia.

 BubbleUPnP

BubbleUPnP no Android
BubbleUPnP no Android

Baixe o programa no PlayStore através desse link. Quando você clicar em instalar, você deverá indicar para qual de seus dispositivos o programa será enviado e instalado, não precisa abrir esse link diretamente no Android, fique tranquilo. Após instalá-lo, abra-o e repare que no canto superior esquerdo tem um menu de acesso onde você encontrará seu Chromecast (no meu caso se chama KGB) e logo mais abaixo está o nome do dispositivo que está servindo midia (no caso, fiz em um notebook para esse artigo e se chama SonyVaioServer, que é o nome amigável colocado em /etc/minidlna.conf). Agora basta que você abra o menu de videos, monte sua lista e se divirta tocando-o em sua TV!

BubbleUPnP abrindo no Chromecast
BubbleUPnP abrindo no Chromecast

O aplicativo tem uma limitação de 16 arquivos na playlist e mais algumas limitações que podem ser removidas com uma licença que na data desse post custa R$11,00. Garanto que vale a pena.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do bit Ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Um comentário em “Servidor de midia com Raspberry, MiniDLNA, ChromeCast e BubbleUPnP

Comentários estão encerrados.