Você está na página 1de 25

Transmisso de Vdeo com Software Livre

Lucas Alberto S. Santos lucasa@gmail.com SERPRO RS TV Software Livre

Roteiro

Por dentro de um vdeo Codecs Proprietrios x Livres Ogg O que Streaming? Servidores de Vdeo Livres Softwares para Streaming Landell

Por dentro de um vdeo?


Imagens em sequncia

Analgico: TV, VHS Digital: DVD, BlueRay Algoritmo: Codec Com perdas x Sem perdas VHS 480x320 DV Standart Definition (SD) 720x480 HD High Definition 1280x720 Full HD - 1920x1080

Codificao ~= Compactao

Resoluo:

Por dentro de um vdeo digital


Qualidade da Imagem x Tamanho do arquivo Taxa de Quadros por Segundo Vdeo Digital = Encapsular Vdeo + udio Arquivo de vdeo contm um ou mais fluxos de vdeo e udio Codecs Proprietrios x Livres

MPEG2, MP3, MPEG4, H.264, DivX, FLV, AVI, MKV Theora, Vorbis, Flac, Dirac, VP8, Ogg, WebM DVD usa MPEG2 Youtube usa FLV com h.264 ou VP6

Ogg
Criado pela Fundao Xiph.Org Iniciou como um codec de udio na decada de 90 Encapsula udio, vdeo e outros dados Audio

Speex - voz (8 32kbps) Vorbis [.oga] - msica (16 256kbps) Flac - udio de alta qualidade, sem perdas OggPCM - codec experimental de udio PCM no comprimido

Ogg

Vdeo
Theora [.ogv] - baseado no VP3, feito para competir com o MPEG4; OGM - vdeo DIVX + udio Vorbis (em desuso); Dirac - codec livre desenvolvido pela BBC; OggUVS - codec para vdeo no comprimido (draft). Writ - para legenda; Annodex - baseado em XML, anotao e indexao de mdia contnua; OggKate - codec para texto sobre vdeo, desenvolvido para karaoque.

Texto

Gstreamer

Histrico

Criado em 1999 no Oregon Graduate Insitute Integrado ao Gnome 2.2 em 2003 fonte de mdia processador1 processador2 sada

Processamento multimdia em pipeline:

O fluxo de dados de segue sempre do elemento de entrada at a sada. O pipeline formado por elementos ligados atravs de Pads. Cada elemento possui propriedades (read/write).

Arquitetura de um Pipeline

Um pipeline deve sempre ter no mnimo um elemento de entrada e um de sada. Um pipeline pode ter mltiplos ramos. Cada elemento possui no mnimo 1 Pad. Pads so de entrada (sink) ou sada (src). Um Bin um elemento composto por uma cadeia de outros elementos. Os elementos so distribudos em plugins:

Good elementos com algoritmos estveis e confiveis Bad podem ocorrer problemas, pouco testados Ugly licenas no GPL

Linha de comando Gstreamer

gst-inspect-0.10 "nome do elemento"

Lista informaes sobre o elemento ou plugin: propriedades, tipos de dados suportados, mtodos, etc. Sintaxe: gst-inspect-0.10 "nome do elemento" Exemplo: gst-inspect-0.10 videotestsrc Exemplo: gst-inspect-0.10 xvimagesink Executa um pipeline Sintaxe: gst-launch-0.10 elemento_src "propriedade = valor" ! ... ! elemento_sink "propriedade = valor" Exemplo: gst-launch-0.10 videotestsrc ! ximagesink

gst-launch-0.10

Exerccios: primeiros pipelines

Usar o videotestsrc e mostrar na tela com outros padres (pattern) de imagem. Usar audiotestsrc e tocar na placa de som com autoaudiosink, testar diferentes tipos de onda gerada. Carregar video da webcam (v4l2src) e mostrar na tela. Capturar voz do microfone (autoaudiosrc) e tocar na placa de som. Usar elemento de echo do plugin audiofx e aplicar na voz capturada.

Alguns elementos bsicos


v4l2src - captura vdeo de webcam fakesink - abssorve qualquer tipo de fluxo autoaudiosrc - detecta e usa o driver de captura de udio autoaudiosink - detecta e usa o driver de sada de udio xvimagesink - acelerao grfica para sada de vdeo efeitos de vdeo - elementos do plugin effectv monoscope visualiza grfico do udio filesrc - abrir arquivo filesink - salvar arquivo timeoverlay coloca um contador de tempo sobre o vdeo textoverlay coloca um texto sobre o vdeo

Alguns elementos bsicos


decodebin - Bin que detecta o tipo de arquivo e decodifica playbin - Bin que toca um arquivo. videorate - modifica a taxa de quadros por segundo videoscale - modifica a resoluo do vdeo audiorate - modifica a taxa de frequncia do udio audioconvert - modifica a resoluo de bits do udio ffmpegcolorspace converte espaos de cor diferentes queue - cria uma thread theoraenc, theoradec codifica/decodifica vdeo em Theora vorbisenc, vorbisdec - codifica/decodifica vdeo em Vorbis oggmux, oggdemux extrai udio e vdeo de contedo Ogg

Possveis problemas

Pipeline no conecta:

Elementos conflitantes: udio x vdeo Espaos de cor diferentes: RGB x YUV (usar ffmpegcolorspace)

Na dvida consulte a pgina de plugins do Gstreamer:


www.gstreamer.net Lista de discusso

Exerccios

Criar um arquivo de vdeo Ogg com o Gstreamer. Escolher um codec de vdeo e um continer e criar um arquivo de vdeo capturado da webcam, por exemplo: vorbis + ogg, h.264 + FLV, divx + avi, mpeg2. Gravar um outro vdeo da webcam, desta vez aplicando um dos efeitos do plugin effectv. Modificar a qualidade do vdeo, propriedade do encoder: bitrate

Negociao de tipo do fluxo

Cada elemento tem um determinado tipo de fluxo que podem processar, so as capabilities. Alguns elementos fazem a converso do tipo de fluxo processado. Para forar um tipo de fluxo inclua esta informao no pipeline:

Ex.: Para modificar a resoluo e framerate.


gst-launch v4l2src ! timeoverlay ! videorate ! videoscale ! video/x-raw-yuv,width=320,height=240,framerate=5/1 ! xvimagesink

Pipeline com mltiplas ramificaes


gst-launch v4l2src ! queue ! ffmpegcolorspace ! videoscale ! video/x-raw-yuv, width=320, height=240 ! theoraenc quality=16 ! queue ! oggmux name=mux alsasrc ! queue ! audioconvert ! vorbisenc ! queue ! mux. mux. ! queue ! filesink location=saida.ogg

Captura vdeo da webcam e udio da placa de som atravs de driver Alsa, salva um arquivo saida.ogg no disco.

O que streaming?

Entrega em tempo real de udio ou vdeo via rede. Existem trs tipos de streaming: download and play necessrio baixar todo o arquivo; progressive download partes do arquivo so requisitados ao servidor; streaming real pacotes perdidos no podem ser re-enviados. Contedo transmitido:

streaming de arquivos streaming ao vivo

Protocolos Populares

RTP (RTCP, RTSP) Realtime Transport Protocol, otimizado para trfego multimdia. Pode ser usado com UDP. HTTP envio de udio e vdeo em conexes da web (TCP). RTMP protocolo da Adobe utilizado em servidores de vdeo Flash FLV. Tipo de transporte de pacotes: Unicast x Multicast (mostrar imagens)

Streaming Player

HTML5 <video> Theora antes do HTML5: Dependncia de plugins no navegador ou soluo com decoder Java Cortado Depois do HTML5:

Independncia de plugins nos navegadores Firefox (depois do 3.5), Opera e Chrome. HTML5 suporta legenda, modificao do vdeo com javascript, tocar partes de um vdeo, dentre outras novidades.

Servidores Livres Populares

VLC de fcil uso, mas tem administrao um pouco complexa quando usado em escala maior. Suporta diferentes protolocos, incluindo RTP. Icecast2 robusto, mas s suporta Ogg Vorbis/Theora. Protocolo HTTP. Red5 Flash vdeo, pode no suportar grande escala. Protocolo RTMP. Flumotion serve MP3 e Ogg. Protocolo HTTP. Desenvolvido com Gstreamer.

Exerccios: Servidor

Configurar um servidor VLC.

Utilizar o wizard para servir um arquivo de vdeo.

Configurar um servidor Icecast2:


Editar arquivo /etc/icecast2/icecast.xml Criar ponto de montagem Colocar senha

Softwares para Streaming

Theora Streaming Studio - com interface mas bastante simples. Problema no Ubuntu 10.04. VLC simples de usar. Bsico. Linha de comando Gstreamer confivel mas complexo. Flumotion soluo completa para streaming Ogg. Landell soluo completa com funes no existentes no flumotion. Desenvolvido para transmisso do FISL.

Exerccio: Streaming

Transmistir webcam para o Icecast local. Usar:


VLC ffmpeg + ffmpeg2theora + oggfw Linha de comando Gstreamer (elemento shout2send) Flumotion Landell

Landell

Histrico Instalao - http://wiki.softwarelivre.org/TV Informaes do projeto: wiki e lista. Grafo do pipeline do Landell Streaming p/ Icecast2 Switch com webcam e outras fontes de vdeo Sada para arquivo Efeitos, texto sobre o vdeo, ajustes de Imagem, marca d'agua.

FIM
Mais informaes: www.estudiolivre.org wiki.softwarelivre.org/TV