Manual
do
Maker
.
com
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.
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:
sudo apt-get install dvdrip dvdrip-utils
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:
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:
sudo apt-get install ffmpeg
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;
sudo apt-get install libav-tools
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:
find . -name *vob|while read line; do echo "ffmpeg -i $line -acodec libmp3lame -ac 2 $(echo $line|sed -re 's/vob$/mp4/')" >>arquivos.sh;done
Ao final será criado um arquivo.sh que você deve editar e colocar na primeira linha:
#!/bin/bash
O conteúdo abaixo dessa linha deve estar parecido com isso:
ffmpeg -i ./Pantera_cor_de_rosa-dvd4/vob/017/Pantera_cor_de_rosa-dvd4-001.vob -acodec libmp3lame -ac 2 ./Pantera_cor_de_rosa-dvd4/vob/017/Pantera_cor_de_rosa-dvd4-001.mp4
ffmpeg -i ./Pantera_cor_de_rosa-dvd4/vob/023/Pantera_cor_de_rosa-dvd4-001.vob -acodec libmp3lame -ac 2 ./Pantera_cor_de_rosa-dvd4/vob/023/Pantera_cor_de_rosa-dvd4-001.mp4
...
Agora execute esse arquivo e tenha paciência porque demora um bocado:
chmod 750 arquivo.sh && ./arquivo.sh
Quando terminar, confirme a existência dos arquivos mp4:
find . -name *.mp4
E então reproduza um para teste:
ffplay ./Pantera_cor_de_rosa-dvd4/vob/023/Pantera_cor_de_rosa-dvd4-001.mp4
Ou "avplay", caso esteja utilizando a libav. Reproduziu? Ótimo, agora você pode 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ó:
cd dvdrip-data && find . -name *.vob -exec rm -f {} \;
É 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:
numero=0&&find . -name *mp4|while read line; do mv $line $(echo $line|sed -re "s/\.mp4/-$numero\.mp4/");numero=$[$numero+1];done
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:
numero=0&&find . -name *mp4|while read line; do echo mv $line $(echo $line|sed -re "s/(.*)/Pink_Panther-$numero.mp4/");numero=$[$numero+1];done
Aí fica a seu critério.
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:
tail -f /var/log/messages
e ficar de olho na saída enquanto conecta o dispositivo à porta USB. tendo sido identificado, disponibilize-o no sistema:
sudo su
mkdir /media/videos
chmod 0777 /media/videos
chown pi.pi /media/videos
mount /dev/sdXx /media/videos -o user,rw,exec
Para montar automaticamente a cada boot, edite o arquivo /etc/fstab e inclua-o:
/dev/sdXx /media/videos ext4 defaults,user,exec,rw 0 0
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:
mount
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.
Primeiramente, utilize o apt para instalar esse servidor de midia. Simplesmente faça:
sudo apt-get install minidlna
Após instalado, a configuração é bastante simples. Entre em /etc e edite o arquivo de configuração.
sudo vi /etc/minidlna.conf
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:
media_dir=V,/media/videos
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.
friendly_name=DobitAoByte
Para fazer o controle, sugiro que esteja como root (digitando 'sudo su') e faça o scan e o reinicio do serviço:
sudo su
minidlna -R
service minidlna restart
Isso precisa ser feito toda a vez que você modificar algum dado no repositório de midia.
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!
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 canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.