Placa de captura USB – RCA/Super Video

Quando comecei a fazer streaming usava muito conexão FireWire, mas infelizmente essa tecnologia morreu, morreu assim, os notebooks não vem com ele instalado e algumas filmadores mudaram para HDMI.

Então tive que mudar a solução e passei a usar uma placa de captura pegando os dados via RCA e entrando no computador via USB 2.0. Comprei várias placas, perdi uma grana, mas enfim achei uma boa solução: Pixelview Xcapture. Em alguns distribuições Linux ela funcionou tranquila, mas é necessário configurar os programas para funcionar em NTSC, pois o padrão é PAL.

Achei um review bacana da placa

Padrão

Webcam para streaming em Linux

Nas experiências que tive com streaming investir na qualidade do áudio sempre é um bom caminho, pois normalmente olhamos a imagem para ter a referência visual de quem está falando e na maior parte do tempo é ouvindo mesmo. Isso para transmissões de palestras ou algo do gênero. De qualquer forma é sempre bom ter uma imagem boa.

Já usei em várias ocasiões uma webcam para transmissão de eventos e das marcas/modelos que mais gostei foi a Webcam HD Logitech C270. Ela suporta a resolução de 1280 x 720 pixels, 3,0 mexapixels e um excelente microfone embutido (com redução de ruídos). Comprei ela há uns dois anos atrás e com certeza tem melhores hoje no mercado, mas essa resolve meus problemas para captura imagens que não precisam de zoom, como do público de uma palestra ou do palco/mesa em plano aberto, por exemplo. Seu valor gira em torno de R$ 100,00.

Ela funciona automaticamente em sistema Linux usando driver do projeto UVC.

Webcam HD Logitech C270

Webcam HD Logitech C270

Padrão

O desempenho da GPU

GPU são núcleos de processamentos acoplados as placas de vídeos. Ele surge pela demanda cada vez maior de processamento e desempenho para jogos, renderização de vídeos e imagens 3D. Grande parte dos aplicativos para smartphones fazem uso de GPU também, assim como mineração em bitcoin ou hackeamento de senhas.

Abaixo um vídeo da Nvidia mostrando a diferença no tempo e qualidade de renderização de CPU e GPU

Padrão

Instalando Open Broadcast Software no Debian Jessie

Fiz alguns testes e instalei o OBS em minha máquina. Abaixo as instruções para instalação. Vale lembrar que é necessário ter uma placa de vídeo com GPU.

É necessário ter o repositório non-free habilitado no sources.list

Instalando as dependências

sudo apt-get install libx11-dev libgl1-mesa-dev libpulse-dev libxcomposite-dev \
libxinerama-dev libv4l-dev libudev-dev libfreetype6-dev \
libfontconfig1-dev qtbase5-dev libqt5x11extras5-dev libx264-dev \
libxcb-xinerama0-dev libxcb-shm0-dev libjack-jackd2-dev libcurl4-openssl-dev \
build-essential pkg-config cmake git checkinstall libfdk-aac-dev yasm

 

Compilando FFmpeg

git clone --depth 1 git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg
./configure --enable-shared --prefix=/usr
make -j4
sudo checkinstall --pkgname=FFmpeg --fstrans=no --backup=no --pkgversion="$(date +%Y%m%d)-git" --deldoc=yes
sudo dpkg -i ffmpeg*.deb

 

Compilando OBS

git clone https://github.com/jp9000/obs-studio.git
cd obs-studio
mkdir build && cd build
cmake -DUNIX_STRUCTURE=1 -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo checkinstall --pkgname=obs-studio --fstrans=no --backup=no --pkgversion="$(date +%Y%m%d)-git" --deldoc=yes
sudo dpkg -i obs-studio_*.deb

Referências

Padrão

Usando software livre para transmissão ao vivo em vídeo

Normalmente as soluções free e open source tem como base o GStreamer e FFmpeg. Há muita documentação de utilização de ambos diretamente, via linha de comando, para transmissão. Eu já usei em várias ocasiões o Gstreamer em suas várias pipelines 🙂

Mas as interfaces gráficas estão aí para facilitar a vida. Por muito tempo usei o Theorur, que é uma versão gráfica em GTK combinado os programas dvgrab, ffmpeg2theora e oggfwd. Sua versão mais recente é de 2006 e rolava transmitir em ogv e webm para o Icecast.

Outra solução que era muito recomendada foi o Flumotion, mas parou com suas atualizações e o último release é de 2012. Mas creio que segue o seu desenvolvimento mais para o lado comercial e de código restrito, pois o site Fluendo mostra que o desenvolvedores ainda utilizam como solução comercial e com várias funcionalidades modernas.

O pessoal do FISL segue usando o Landell, desenvolvimento um pessoal de Minas Gerais sob encomenda da ASL /Pontão de Cultura. Mas desde o seu lançamento oficial teve poucas implementações de melhorias e seu último release é de 2011.

Há outras soluções como o FreeJ e WebcamStudio, que já fiz algumas pessoas experimentando, mas não chegou a serem de grande utilização.

O que tem de mais moderno hoje é o Open Broadcaster Software. Muito utilizados por gamers no mundo inteiro, tem atualizações semanais em seu código. Além de suporte padrão há vários serviços comerciais de broadcast como Twitch, Youtube, hitbox, beam, DailyMotion, Livecoding. Diferente das outras soluções citadas ele é multi-plataforma e com possibilidade de criação de plugins. Irei estudar melhor ele e documentar aqui em novos posts.

Padrão

Globo.com + software livre + streaming Fifa 2014

Para a copa de 2014 a Globo.com refez sua infraestrutura de streaming e dessa fez foi 100% usando software livre 🙂 o time foi: python / rails + nginx(lua) + redis + cassandra

Bacana o vídeo de dois desenvolvedores da Globo.com apresentando a solução durante o encontro da Nginx.

A apresentação dessa palestra

Saiu uma matéria no planeta Cassandra, e tem posts bacana do dois desenvolvedores no blog pessoal do Leandro Moreira e do medium do Juarez Bochi (ambos que aparecem na palestra do vídeo acima).

Essa experiência acabou resultando um artigo acadêmico em trabalho conjunto de pesquisadores de Universidades públicas de Minas Gerais e chama Caracterização da Transmissão de um Grande Evento Esportivo.

O mais bacana ainda é que uma equipe da Globo.com desenvolveu um player e liberou como software livre 🙂 O Clappr.

Mais um motivo para estudar o Streaming with nginx-rtmp-module.

Padrão

Servidor de streaming de vídeo em software livre

Quando comecei a fazer streaming o que usávamos era Icecast, havia pouca vida além dele, pelo menos em nosso universo de radicais free software 🙂

Ele segue a linha de HTTP progressivo e tinha só suporte a OGV, para vídeo. Hoje tem implementado o suporte a WEBM e fiz algumas transmissões e rolou bem bacana.

Na minha pesquisa anterior de solução alternativa ao Icecast achei interessante o stream-m, a partir de uma documentação de implementação na TV Unesp. Mas não avancei muito.

Hoje tenho interessado bastante pelo Nginx + o módulo RTMP, e não é pouca as documentações pela internet de implementação e de uso. Irei estudar ele a fundo nesse momento.

Outro que tenho grande interesse em testar é o flussonic (erlyvideo), nem parece muito promissor e avançado.

Existem várias outras soluções em software livre / open source para montar um servidor, alguns que identifiquei:

Padrão

Formatos abertos e livres para streaming de vídeo

Não sou do tipo que fica lendo a especificação do container ou das vantagens de compreensão do vídeo e áudio, etc tal. Mas curto muito acompanhar o processo de evolução de formatos livres e aplicações software livre para streaming.

Quando comecei usamos indiscutivelmente o formato ogg (ou ogv), pois era o único livre. Usando Theora para a parte de vídeo e Vorbis para áudio era o que tínhamos e aqui e ali ouvi as reclamações da qualidade diante do MP4 ou mesmo a necessidade de bastante hardware para obter um transcodificação legal.

Passou o tempo e logo ficamos conhecendo o Webm, usando como conteiner o Matroska, com o vídeo e áudio usando codecs webm, o Google comprou por 133 milhões doláres a empresa que detinha os direitos sobre o formato e continuo por mantê-la livre sob a licença BSD. Fosse pela guerra de qual seria o formato padrão em HTML5 ou do impacto que poderia ter o relicenciamento do formato MP4 pelo Cisco, o Google não esperou e já começo a implementar em seus serviços o formato webm como padrão, deixando o FLV (que até então usada o h261 para vídeo e mp3 para áudio).

Passou o tempo e a Cisco vai lá e libera o MP4 como opensource e na sequencia a Mozilla coloca codec por padrão do Firefox.

Para o streaming a escolha do formato é importante também, tanto para escolher o equipamento como software de transmissão enquanto cliente e/ou servidor, compatibilidade de browsers e dispositivos móveis.

Hoje o webm está na versão VP9, com várias reestruturações. Já a implementação H26x para MP4 está não versão 5, H265. O OGV não teve avanços e vale lembrar que ele surgiu a partir de uma implementação do VP3.

Tem outros formatos como o DIRAC, desenvolvido pela BBC, que tem chamado atenção também, na busca de melhores compressão em vídeo e economizar um pouco mais no tráfego pela internet onde o vídeo lidera no consumo.

Padrão

AMD Radeon Crimson em Debian Jessie

Tenho uma placa AMD Radeon HD 8690M e nunca usei, pois queria usar na edição de vídeo, mas o Kdenlive não tem suporte a GPU na renderização.

Estou recomeçando meus estudos em streaming e hoje a bola da vez é o Open Broadcaster Software e em suas versões recentes está sendo obrigatório o uso da GPU.

Eu já havia havia instalado o drive próprio da placa quando usava Fedora 20, mas não fiz uso valendo. O desafio agora era deixar rodando legal em Debian Jessie.

Nos repositórios do Debian com non-free tem suporte ao driver fglrx, mas não rodou legal, o cursor do mouse simplesmente não aparece. Resolvi então instalar a versão mais recente e conhecer melhor a solução AMD Radeon Crimson

Depois de baixar o driver e rodar o executável aparece num dialogo a mensagem “Your Graphics adapter is not supported by this driver. Installation will not proceed” e pesquisando vi que é necessário acrescentar radeon.runpm=0 no grub, isso logo na inicialização, pressionando e (para editar) e depois acrescendo na linha que inicia com linux. E aí deu certo.

Para instalação usei como referência um post no fórum do Ubuntu:

sudo apt-get remove --purge xorg-driver-fglrx fglrx*
 sudo apt-get remove --purge fglrx*
 sudo apt-get install build-essential cdbs fakeroot dh-make debhelper debconf libstdc++6 dkms libqtgui4 wget execstack libelfg0 dh-modaliases
 sudo apt-get install --reinstall xserver-xorg-core libgl1-mesa-glx libgl1-mesa-dri
 sudo dpkg-reconfigure xserver-xorg
 cd ~/Downloads
 wget --referer='http://support.amd.com/en-us/download/desktop?os=Linux+x86_64' http://www2.ati.com/drivers/linux/radeon-crimson-15.12-15.302-151217a-297685e.zip
 wget --referer=http://support.amd.com radeon-crimson-15.12-15.302-151217a-297685e.zip
 unzip radeon-crimson-15.12-15.302-151217a-297685e.zip
 cd fglrx-15.302
 sudo chmod +x amd-driver-installer-15.302-x86.x86_64.run
 sudo sh amd-driver-installer-15.302-x86.x86_64.run
 sudo amdconfig --initial
 sudo reboot

Num primeiro momento rodou tudo certo, mas depois de abrir o amdcclce e configurar para usar a placa intel as coisas não funcionaram bem e aí num outra pesquisa vi que é necessário reinstalar o pacote libgl1-mesa-glx

sudo apt-get install --reinstall libgl1-mesa-glx:i386

 

Padrão