TV do Software Livre

Programação

Projeto Landell

English version

Landell anteriormente chamado de sltv, é um ferramenta que captura conteúdo de áudio e vídeo e envia estas mídias para servidores Icecast. Ele possui uma interface gráfica que apresenta a pré-visualização do vídeo transmitido, permite a aplicação de efeitos dinâmicos e a configuração dos parâmetros da transmissão.

O nome Landell é uma homenagem ao Padre Landell de Moura, brasileiro precursor das transmissões sem fio. Ele, além de realizar experimentos com ondas de rádio, também investigou o uso da luz como meio de propagação de informações. Para saber mais visite a página do Pe. Roberto Landell na Wikipedia.


Introdução

No uso da TV Software Livre, foi identificada a necessidade de um software que reúna as tarefas de captura de áudio e vídeo, transcodifcação de formatos e transmissão de vídeo (stream) para servidores Icecast 2. Há diferentes métodos de transmissão, utilizando e combinando programas que realizam cada uma das tarefas supracitadas. Este programa publisher a ser desenvolvido é uma ferramenta que se soma ao método básico de transmissao multimídia através da internet na plataforma Linux.

Neste cenário, estamos desenvolvemos o Landell como o programa principal para o setup de transmissão da TVSL, permitindo a captura e codificação em tempo real de diferentes entradas de vídeo e áudio, de dispositivos externos de captura como câmeras firewire, webcams USB e placas PCR e DVB. Nosso objetivo é desenvolver uma software internacionalizável, com uma interface gráfica que possa ser traduzida pra diferentes idiomas. O código-fonte do projeto será licenciado em GPLv3.

Funcionalidades

Landell v0.90 [2011/05/12]

Notas da versão (0.90)

  • É possível parar uma saída apenas.
  • Fonte de áudio pode ser alterada durante a transmissão.
  • Tamanho do vídeo da fonte videotest pode ser alterado.
  • Correção de PAR da fonte V4L2?.
  • Utiliza videomixer2. Exige gst-plugins-good 0.10.26 ou superior.
  • Suporte a fonte HTTP.

Notas da versão (0.9):

  • Suporte a marca d'água;
  • Suporte a configuração de videobalance;
  • Filtros da classe "Filter/Video" disponíveis como efeitos;
  • Resolução de travamentos com DV usando multiqueue depois do DV;
  • Resolução de mais problemas de travamento usando multiqueue no tee de pré-visualização;
  • Correção do erro que ocorria depois que uma fonte era removida;
  • Pré-visualizações são configuradas com sync=False;
  • Novamente funcionando sem saídas quando não há uma fonte de áudio (conserta o bug #29);
  • Correção do mês nos metadados;
  • Mudança de sensibilidade no botão de parada de saída para refletir que a funcionalidade não está implementada.

Notas da versão (0.8):

  • Pré-visualização das entradas de vídeo;
  • Camada de vídeo em picture-in-picture;
  • Melhoria de interface de configurações do Pipeline;
  • Suporte a metadados;
  • Melhoria de desempenho em vídeo DV;
  • Suporte a codificação utilizando VP8;
  • Correção da seleção de arquivo (conserta o bug #20);
  • Correção de problemas de sincronização de áudio (conserta o bug # 23).

Notas da versão (0.7):

  • Escolha de volume;
  • Configuração de audiorate;
  • Configuração de codificação de áudio (bitrate e qualidade);
  • Melhorias na interface principal;
  • Gravação opcional de arquivo bruto DV;
  • Separação entre codificação e saída, permitindo que uma configuração de codificação seja usada por mais de uma saída;
  • Configuração de fonte e posicionamento da camada de texto;
  • Suporte a framerates decimais que são convertidos para frações (conserta o bug #21).

Notas da última versão (0.6.1):

  • adicionada entrada de menu;
  • corrigido o bug #6 (Trocando entre efeitos que possuem um colorspace diferente não funciona).

Notas da versão (0.6):

  • suporte a múliplas saídas simultâneas;
  • cada saída possui sua própria configuração, incluindo configurações de encoding;
  • suporte a versões do Debian Lenny do gstreamer e python;
  • várias mudanças cosméticas na interface;
  • remoção de UI para escolha de encoding;
  • mudanças de vários defaults nas configurações.

Notas da versão (0.5):

  • construção com Autotools;
  • seleção das fontes de áudio;
  • edição de fontes registradas;
  • persistência das fontes de áudio de vídeo
  • novas fontes de áudio (ALSA, Pulseaudio);
  • separação de fontes de teste;
  • correções de bugs diversos;

Arquitetura

O Landell é desenvolvido em python, usando as tecnologias Glade, GTK e Gstreamer. A ArquiteturaSLTV segue uma estrutura modular que facilita o desenvolvimento de extensões, pois os diferentes módulos de entrada, codificação e saída poderão ser desenvolvidos de forma independente. Essa arquitetura facilita a colaboração e a utilização de apenas módulos específicos de acordo com a necessidade.

Bibliotecas Nativas

Nesta etapa inicial do projeto fizemos uma pesquisa para decidir qual seria a infraestrutura nativa de suporte aos módulos multimídia do Landell. Dentre os FrameworksPesquisados, escolhemos o Gstreamer, que possui as seguintes funcionalidades fundamentais para este projeto:

  • Multiplataforma: Linux, Windows e Mac OS.
  • Captura de dados brutos DV de câmeras firewire.
  • Captura de vídeo de webcams USB.
  • Captura de áudio da placa de som.
  • Encoding de diferentes formatos de vídeo e áudio.
  • Decoding de diferentes formatos, com saída de vídeo e áudio em interface gráfica.
  • Envio de stream de vídeo e áudio para servidores Icecast2.

GStreamer é um framework multimídia muito usado no desenvolvimento de aplicações que vão desde simples tocadores de áudio até processadores de vídeo. O GStreamer é licenciado sob a LGPL, desenvolvido em C e possui bindings para várias linguagens, sendo que o binding Python é o mais utilizado.

O GStreamer é multiplataforma, com suporte a uma gama de sistemas operacionais, processadores e compiladores incluindo os sistemas operacionais GNU/Linux, Microsoft Windows e MacOS? X

Além de ser um framework muito popular, com grande comunidade de colaboradores e com muitos plugins disponíveis. O GStreamer é utilizado pela TV SL em scripts linha de comando, fazendo dele o melhor candidato para ser utilizado no Landell.

Linguagem de programação

O Landell é implementado na linguagem de programação python, a qual possui um bom binding de GStreamer e. Além disso, sua escolha é estratégica, pois ela é muito utilizada no desenvolvimento de ferramentas livres multimídia e possui uma comunidade internacional bastante ativa.

Interface Gráfica

A interface gráfica do Landell é independente dos módulos de processamento de mídia, permitindo a implementação de diferentes modelos de interface. Inicialmente criaremos uma interface simplificada, que permita a configuração dos parâmetros da captura e codificação do fluxo de áudio/vídeo, além de visualização (preview) do fluxo de vídeo processado. Atualmente utilizamos um modelo de GUI que unifica as melhores idéias dos softwares flumotion e dvswitch.

Interfaces gráfica mais complexas e dinâmicas como a do software firtree serão avaliadas futuramente.


Topic attachments
I Attachment Action Size Date Who Comment
pngpng Arquitetura_SLTV.png manage 69.5 K 04 Aug 2009 - 00:29 LucasSantos Arquitetura do SLTV
elsegz gstreamer-0.10-10_04_mix_9_10.tar.gz manage 4472.1 K 17 Aug 2010 - 19:46 LucasSantos Pacote com plugins gstreamer para uso no ubuntu 10.04, contém arquivos da versão 9.10. Resolve problema com streaming do 10.04.
pngpng screenshot-v0.4.png manage 207.9 K 26 Feb 2010 - 04:05 LucasSantos screenshot version 0.4
pngpng screenshot2-v0.4.png manage 57.3 K 27 Feb 2010 - 23:42 LucasSantos  
elsejnlp sltv-prototype.jnlp manage 0.7 K 05 Nov 2009 - 13:52 LucasSantos  
elsejar sltv.jar manage 5408.6 K 24 Jan 2010 - 01:32 LucasSantos  
rev 92 em 01 Nov 2016 por EduardoLucas?
Todo material do sítio TV Software Livre é propriedade da ASL e PSL-BR e pode ser reproduzido livremente, desde que permaneça livre e a fonte seja citada, seguindo os termos da licença Creative Commons (by-sa).