Transmiss\xE3o de V\xEDdeo pela Internet e Web TVs
As tvs livres possuem um alcance reduzido inerente ao seu equipamento - transmissores VFH ou UFH de baixa pot\xEAncia - o que pode ser um empecilho na forma\xE7\xE3o de uma rede de TVs, prejudicando o interc\xE2mbio cultural entre as TVs locais. Existe hoje uma solu\xE7\xE3o relativamente barata para este drama, que \xE9 colocar o v\xEDdeo das tvs dispon\xEDvel na internet.
Este pequeno texto tem como finalidade guiar o leitor e a leitora \xE0 pr\xE1tica da transmiss\xE3o de TV pela internet. Ele \xE9 destinado a todas as TVs livres que desejam sua programa\xE7\xE3o veiculada na rede ou que necessitam fazer uma cobertura de algum evento em "tempo real".
\xCDndice
Parte Te\xF3rica
Para se fazer streaming de TV (audio+video) 'ao vivo' para a Internet \xE9 necess\xE1rio ter um computador com uma placa de captura, uma placa de
som e uma conex\xE3o com a Internet. Al\xE9m disso \xE9 necess\xE1rio configurar ou ter acesso a um servidor que possa distribuir o seu streaming, t\xF3pico que ser\xE1 coberto por esse manual.
O caminho do v\xEDdeo no streaming
O caminho do streaming desde seu nascimento at\xE9 sua execu\xE7\xE3o \xE9 o seguinte:
computador fonte 1 servidor
_________________ ___________ computador
| | | | cliente 1
|programa fonte: | | _______ | ____________
|_________________| | | || | ________ |
videocassete ->| | internet | | || | |programa| |
dvd ->| placa de captura ->-->-->--> || internet | |cliente | |
filmadora ->| v\xEDdeos digitais | | | -->--->-->-->--> -->--> sa\xEDda de v\xEDdeo/monitor
canal de TV ->|_________________| | | || | |________| |
|_________________| | | || |____________|
| | p ||
| | r ||
computador fonte 2 | | o ||
_________________ | | g || computador
| | | | r || cliente 2
|programa fonte: | | | a || ____________
|_________________| | | m || | ________ |
videocassete ->| | internet | | a || | |programa| |
dvd ->| placa de captura ->-->-->--> || internet | |cliente | |
filmadora ->| v\xEDdeos digitais | | | s -->--->-->-->--> -->--> sa\xEDda de v\xEDdeo/monitor
canal de TV ->|_________________| | | e || | |________| |
|_________________| | | r || |____________|
| | v ||
| | i ||
| | d ||
computador fonte 3 | | o ||
_________________ | | r || computador
| | | | || cliente 3
|programa fonte: | | | || ____________
|_________________| | | || | ________ |
videocassete ->| | internet | | || | |programa| |
dvd ->| placa de captura ->-->-->--> || internet | |cliente | |
filmadora ->| v\xEDdeos digitais | | | -->--->-->-->--> -->--> sa\xEDda de v\xEDdeo/monitor
canal de TV ->|_________________| | | || | |________| |
|_________________| | | || |____________|
| |_______||
|__|_______||
Como se pode ver, iremos precisar de tr\xEAs tipos de software para realizar o streaming:
- Encoder: Esse \xE9 o software que roda no 'computador fonte', e serve para converter o v\xEDdeo da tua placa de captura para o formato na qual
a m\xEDdia ser\xE1 transmitida pela rede (Ex: Ogg/Theora ou MPEG4). Caso se queira transmitir para a Internet, \xE9 fortemente recomendado ter uma conex\xE3o de banda larga com a Internet (com banda de pelo menos 128kbps de upload).
- Servidor: Esse \xE9 o software que roda no 'servidor', e serve para distribuir o streaming de v\xEDdeo para v\xE1rios telespectadores ao mesmo tempo. O ideal \xE9 que esse software rode numa m\xE1quina que tenha uma conex\xE3o com a Internet muito boa. O software que atuar como servidor pode rodar no mesmo computador que est\xE1 rodando o encoder.
- Player: Esse \xE9 o software que roda no 'cliente', ou seja, no computador de quem ir\xE1 assistir ao streaming.
Parte Pr\xE1tica
\xC9 poss\xEDvel fazer streaming de v\xEDdeo utilizando os softwares citados rodando nos sistemas *BSD,
MacOS X e Linux.
Encorajamos o uso do GNU/Linux devido a sua estabilidade, por ser Software Livre e por rodar em praticamente todas as plataformas atuais, incluindo PC e Macintosh.
Neste tutorial iremos abordar como fazer streaming de v\xEDdeo usando Ogg/Theora com servidor icecast, tecnologia livre impulsionada pela Xiph.Org Foundation (www.xiph.org) e usando MPEG4 com servidor
DarwinStreamingServer, tecnologia que possui alguns problemas de patentes, impulsionada pela Apple (www.apple.com).
FIXME: At\xE9 agora o tutorial se concentra especificamente na plataforma GNU/Linux, fazer tamb\xE9m para *BSD e
MacOS X.
Hardware necess\xE1rio
Para Encoding
\xC9 necess\xE1rio ter um computador r\xE1pido para se fazer a codifica\xE7\xE3o de v\xEDdeo em tempo real, por isso deve ser necess\xE1rio pelo menos um computador com um
processador de 800Mhz (testes precisos ainda n\xE3o foram realizados) para se fazer uma transmiss\xE3o de v\xEDdeo de qualidade mediana, e algo em torno de 128Mb de mem\xF3ria RAM. Lembrando que para gerar um streaming em Ogg/Theora consome menos cpu que um streaming em Mpeg-4.
\xC9 poss\xEDvel fazer a captura do video/audio a partir de dispositivos digitais como uma c\xE2mera mini-DV ligada numa porta firewire (ieee1394) ou a partir de dispositivos anal\xF3gicos como uma placa de captura de v\xEDdeo para o v\xEDdeo (e/ou som, caso sua placa de captura capture som), a placa de som comum para o som, uma webcam e/ou outros dispositivos anal\xF3gicos quaisquer compat\xEDveis com os drivers video4linux, no caso do Linux:
http://linux.bytesex.org/v4l2/
Para placa de captura de v\xEDdeo anal\xF3gica, uma boa escolha \xE9 alguma placa compat\xEDvel com o Chipset Brooktree - Bt848, que funciona muito bem no GNU/Linux, com o m\xF3dulo bttv, e em sistemas BSD. Por exemplo a placa
PixelView PlayTV, que tem o chipset Bt848, funciona bem e tem um baixo custo. Para saber se a sua placa de captura de video \xE9 uma Bt848, no GNU/Linux, digite no terminal: "lspci | grep Bt878" e veja se aparece algo. Se sim, \xE9 bem prov\xE1vel que seja uma placa compat\xEDvel com o Bt878.
\xC9 poss\xEDvel tamb\xE9m capturar video a partir de um dispositivo ieee1394 (firewire), como uma c\xE2mera Mini-DV conectada na porta firewire do computador. Em geral n\xE3o h\xE1 problemas para se usar qualquer tipo de dispositivo de v\xEDdeo conectado na porta firewire.
\xC9 necess\xE1rio ter uma conex\xE3o com a Internet de pelo menos 128kbps de upload, como por exemplo uma conex\xE3o ADSL simples.
Para Servidor
Para rodar o servidor de streaming (como o icecast, que consome menos recursos do computador, ou o
DarwinStreamingServer, mais pesado) voc\xEA deve ter pelo menos um Pentium 500Mhz ou superior com 128Mb de RAM, mas essa configura\xE7\xE3o pode variar bastante de acordo com a carga do teu servidor e de quantos usu\xE1rios ir\xE3o se conectar no servidor.
Com rela\xE7\xE3o \xE0 conex\xE3o com a internet, escolha uma conex\xE3o baseada no n\xFAmero de espectadores simult\xE2neos esperados para ver os streamings disponibilizados pelo servidor. Quanto maior o n\xFAmero de receptores e emissores conectados ao servidor, maior a banda necess\xE1ria.
Para Assistir
\xC9 poss\xEDvel assistir num Pentium 200Mhz ou superior com 32Mb de RAM utilizando o mplayer e uma conex\xE3o com a Internet de 128kbps de download, como um ADSL simples (apesar de ser poss\xEDvel gerar um streaming que possa ser visto com uma conex\xE3o discada de 56k).
Um streaming em Ogg/Theora consome menos cpu para ser assistido do que um streaming em Mpeg-4
Softwares necess\xE1rios
Usando Ogg/Theora
Essa \xE9 a escolha preferida, j\xE1 que usa somente tecnologias livres e com essa tecnologia \xE9 poss\xEDvel transmitir e receber o streaming estando numa rede interna que usa NAT de forma transparente.
Encoders
Theorur
> Longa vida \xE0s TVs Livres!!!! Fa\xE7a seu pr\xF3prio canal de televis\xE3o <
O Theorur \xE9 uma programa com interface gr\xE1fica para streaming ao vivo que usa "por tr\xE1s" o dvgrab, ffmpeg2theora e o oggfwd.
Este \xE9 o software para streaming de v\xEDdeo que \xE9 suportado e recomendado pelo tvlivre.org!
Para baix\xE1-lo, acesse:
http://theorur.tvlivre.org
Na primeira aba do programa (Op\xE7\xF5es do Servidor), preencha os campos indicando o servidor de destino, porta, ponto de montagem, senha e se voc\xEA quer gravar sua transmiss\xE3o ("Arquivo de Dump Local") com a data ou n\xE3o ("adicionar data...").
Na segunda aba, coloque as op\xE7\xF5es do streaming em si: Tipo de Entrada do V\xEDdeo - digital (ex: c\xE2mera mini-dv ligada na porta firewire) ou anal\xF3gica (ex: webcam, placa de captura anal\xF3gica), as op\xE7\xF5es do audio, as o\xE7\xF5es do v\xEDdeo e, no caso de transmiss\xE3o anal\xF3gica, o dispositivo de entrada
V4L (
Video4Linux), lembrando que no caso de uma transmiss\xE3o digital, essa op\xE7\xE3o \xE9 ignorada.
Na terceira aba, acrescente as informa\xE7\xF5es a respeito do streaming: nome, descri\xE7\xE3o, URL, G\xEAnero e se ela deve ser listada publicamente ou n\xE3o nos servidores de p\xE1ginas amarelas.
O
FreeJ \xE9 um software livre para VJ, que tamb\xE9m faz streaming de v\xEDdeo muito bem. Ele \xE9 desenvolvido pelo Jaromil, que \xE9 um programador rastafari (rastasoft.org). O
FreeJ roda em GNU/Linux, *BSD e
MacOS X.
Para instalar o
FreeJ, baixe o pacote para sua distribui\xE7\xE3o ou compile-o na m\xE3o. Baixe o
FreeJ de:
http://freej.org/?info=download
E para iniciar o streaming, chame o
FreeJ pela linha de comando da seguinte maneira:
$ freej -s <resolu\xE7\xE3o> -T <qualidade_do_video> -V <qualidade_do_audio> -i http://server:port/mountpoint.ogg -p password <file_to_load>
Por exemplo:
freej -s 240x192 -T 7 -V 3 -i http://orelha2.radiolivre.org:8080/tvlivre.ogg -p senha /dev/video0
O valor de qualidade padr\xE3o \xE9 16, mas para um contexto sem abund\xE2ncia de banda, \xE9 recomendado usar um valor entre 6 e 9.
Nos campos servidor, porta e senha voc\xEA deve colocar o endere\xE7o do servidor icecast2, a porta que ele est\xE1 escutando e a senha.
/dev/video0 representa o dispositivo
Video4Linux para captura de v\xEDdeo.
O som \xE9 capturado de /dev/dsp.
Caso se queira fazer um streaming utilizando pouca banda, use uma resolu\xE7\xE3o baixa e valores de qualidade baixos.
Ap\xF3s ter executado freej, pressione Ctrl-W para iniciar o stream.
Guia do Jaromil:
http://lab.dyne.org/FreejStreaming
O
FreeJ ainda n\xE3o suporta fazer streaming de um dispositivo DV.
dvgrab, ffmpeg2theora e oggfwd
Esse trio de softwares livres pode ser usado para transmitir de um dispositivo digital (conectado \xE0 porta firewire - ieee1394).
para baix\xE1-los, visite:
dvgrab: http://www.kinodv.org/article/static/1
ffmpeg2theora: http://www.v2v.cc/~j/ffmpeg2theora/download.html
oggfwd: http://www.v2v.cc/~j/ffmpeg2theora/oggfwd/
Fa\xE7a o streaming da seguinte maneira:
em 29.97 fps (NTSC):
dvgrab --format raw - | ffmpeg2theora -f dv -x 160 -y 128 -v 0 -a 0 -H 11025 -o /dev/stdout - | oggfwd orelha2.radiolivre.org 8080 senha /tvlivre.ogg
em 5 fps:
dvgrab --format raw - | ffmpeg2theora -a 0 -v 0 -f dv -x 192 -y 160 -c 1 -H 11025 -F 5 -o /dev/stdout - | oggfwd orelha2.radiolivre.org 8080 senha /tvlivre2.ogg
Utilizando o ffmpeg2theora e o oggfwd \xE9 poss\xEDvel transmitir a partir de um dispositivo anal\xF3gico video4linux:
ffmpeg2theora -x 640 -y 480 --inputfps 15 -v 10 --v4l /dev/video0 -o /dev/stdout | oggfwd orelha2.radiolivre.org 8080 senha /tvlivre.ogg
Nos meus testes usando bitrates bem baixos (bem baixa qualidade), consegui um bitrate de v\xEDdeo bem baixo, de no m\xE1ximo 17kbps, usando:
ffmpeg2theora --v4l /dev/video0 --inputfps 7 -v 0 --nosound -x 160 -y 120 -o /dev/stdout | oggfwd servidor.video.org 8000 senha /video.ogg
N\xE3o deixe de ler o guia de uso
TheoraUsage.
A sintaxe do oggfwd \xE9 a seguinte:
oggfwd [-hp] [-d descri\xE7\xE3o] [-g g\xEAnero] [-n nome] [-u URL]
servidor porta senha ponto_de_montagem
-h: ajuda
-p: p\xFAblica
ffmpeg2theora --v4l /dev/video0 --inputfps 7 -v 0 --nosound -x 160 -y 120 -o /dev/stdout | oggfwd -p -n nome_da_radio -u url -g genero -d descri\xE7\xE3o olho.tvlivre.org 8000 senha /video.ogg
Tamb\xE9m \xE9 poss\xEDvel, por exemplo, transmitir somente o audio vindo de uma c\xE2mera mini-dv conectada \xE0 porta firewire usando o seguinte comando:
dvgrab --format raw - | ffmpeg -f dv -i - -f ogg - | oggfwd orelha.radiolivre.org 8000 senha /tvlivre.ogg
VLC
O VLC permite o streaming para um servidor icecast2, seu site \xE9:
http://www.videolan.org/
A vers\xE3o testada que funciona \xE9 a 0.9.0 do subversion do dia 06/09/2007.
Para fazer streaming com o vlc, use a seguinte sintaxe:
vlc -vvv ENTRADA --sout '#transcode{vcodec=theora,acodec=vorbis,vb=90,ab=32}:standard{access=shout,mux=ogg,dst=source:SENHA@SERVIDOR:8000/mount_point.ogg}'
em que:
ENTRADA: Pode ser um arquivo, a entrada firewire ou Video4Linux (Ex: "filme.avi")
vb: Bitrate do Video (Ex: "90" - valores em kbps)
ab: Bitrate do Audio (Ex: "32" - valores em kbps)
source: Caso exista, substitua pelo nome do usu\xE1rio, no icecast, sen\xE3o, mantenha-o.
SENHA: Senha do servidor icecast
SERVIDOR: Endere\xE7o do servidor icecast (Ex: orelha.radiolivre.org)
8000: Porta que o icecast est\xE1 rodando (Ex: 8000)
mount_point.ogg: O Ponto de montagem da transmiss\xE3o (Ex: piolho.ogg)
Servidores
Icecast2
Para streaming de v\xEDdeo com theora o servidor por excel\xEAncia \xE9 o icecast, vers\xE3o 2.2.0 ou superior.
O icecast roda em GNU/Linux, *BSD,
MacOS X e M$-Window$.
Para instalar o icecast, visite o site:
http://www.icecast.org/
Para configurar e administrar o icecast, leia o guia que o rhatto fez:
http://docs.indymedia.org/view/Sysadmin/IceCastPtBr
Players
MPlayer
O mplayer \xE9 um mplayer livre excelente que reproduz ogg/theora e roda nos sistemas operacionais GNU/Linux, *BSD, M$-Windows,
BeOS (Zeta e Haiku tamb\xE9m), Irix e outros.
Baixe o mplayer de:
http://www.mplayerhq.hu/homepage/design7/dload.html
Para reproduzir um streaming em Ogg/Theora, use:
mplayer http://orelha2.radiolivre.org:8080/tvlivre.ogg
VLC
O VLC \xE9 um player que tem uma interface gr\xE1fica bem desenvolvido, suporta v\xE1rios tipos de formatos de audio e v\xEDdeo e roda em GNU/Linux, Windows,
MacOS X,
MacOS X,
BeOS, QNX, Windows CE e Solaris.
Esse \xE9 o player recomendado para quem usa Windows, devido a sua facilidade de instala\xE7\xE3o e uso.
Baixe-o de
http://www.videolan.org/vlc/
Xine
\xC9 poss\xEDvel usar o xine para assitir um streaming em Ogg/Theora:
http://xinehq.de/
Players para Window$
Para assistir Ogg/Theora em players para Windows, baixe o codec de:
http://www.illiminable.com/ogg
Usando Mpeg-4
Encoders
Para a codifica\xE7\xE3o em "tempo real" do audio/video a ser enviado para um servidor
DarwinStreamingServer, os seguintes programas podem ser usados:
mp4live
O mp4live faz parte do projeto
MPEG4IP:
http://mpeg4ip.sourceforge.net/
O mp4live \xE9 um codificador que prov\xEA suporte a codifica\xE7\xE3o em 'tempo real' para MPEG-4 ou H.261 e MP3 ou AAC.
Ele \xE9 um programa gr\xE1fico e tem uma interface gr\xE1fica intuitiva.
screenshot do mp4live:
Caso voc\xEA ainda n\xE3o tenha o mpeg4ip instalado na sua m\xE1quina, d\xEA uma lida primeiro em como instalar o mpeg4ip.
Ao iniciar o mp4live, digitando 'mp4live' na linha de comando aparecer\xE1, caso voc\xEA j\xE1 tenha configurado sua placa de captura,
a tela acima. Escolha a qualidade do video, depois a do audio, depois decida se voc\xEA quer ou n\xE3o gravar o streaming localmente.
Certifique-se de que os 'checkbox' de Video, Audio e Transmission est\xE3o habilitados.
Finalmente clique em 'Settings' da caixa Transmission, e voc\xEA deve ver algo como:
Certifique-se de a op\xE7\xE3o 'Multicast' estar habilitada.
No campo Address coloque o endere\xE7o do computador que estiver fazendo o streaming.
De tudo estiver correto, clique em 'Generate' do ao lado do 'SDP File'. Com isso
ser\xE1 criado um arquivo 'capture.sdp' (caso voc\xEA n\xE3o tenha trocado o nome do arquivo) no diret\xF3rio
onde foi iniciado o 'mp4live'.
Agora, ap\xF3s ser criado o arquivo 'capture.sdp' voc\xEA tem de realizar um dos passos mais importantes no processo para o streaming ir para o
ar. Voc\xEA deve copiar esse arquivo 'capture.sdp' para a pasta (por padr\xE3o) '/usr/local/movies' no servidor que est\xE1 rodando o
DarwinStreamingServer, como usu\xE1rio qtss.
Ap\xF3s feito isso, teste seu streaming usando:
mp4player rtsp://darwin_server/capture.sdp
Se aparecer tudo bonitinho, parab\xE9ns, o streaming est\xE1 rolando!
E aproveite para desligar o 'Preview' do 'mp4live', que pode gerar consumo desnecess\xE1rio de CPU e instabilidades.
Op\xE7\xF5es de audio e video
Como os recursos de banda no Brasil s\xE3o limitados, os valores aqui representam um m\xEDnimo que pode ser assistido com certa fidelidade.
Para v\xEDdeo, os valores de baixa resolu\xE7\xE3o para transmiss\xE3o usando Mpeg4 s\xE3o:
Codec: Mpeg4(xvid)
Resolu\xE7\xE3o: 320x240 SIF
Formato da tela: 4:3 Padr\xE3o
Quadros por segundo: 9 fps
Taxa de Bits: 25 kbps
Para audio, os valores de baixa fidelidade para transmiss\xE3o usando mp3 s\xE3o:
Codec: mp3 - Lame
Canais: 1 - mono
Taxa de amostragem: 11025Hz
Taxa de Bits: 24 kbps
Compilando e instalando o mpeg4ip
Baixe o c\xF3digo fonte do mpeg4ip em:
http://mpeg4ip.sourceforge.net/downloads/
Depois de baixado o c\xF3digo fonte, no meu caso o arquivo 'mpeg4ip-1.1.tar.gz', fa\xE7a o seguinte:
tar -zxvf mpeg4ip-1.1.tar.gz
cd mpeg4ip-1.1
./bootstrap
make
-> agora como root
make install
O
QuickTime Broadcaster \xE9 o programa da Apple feito para interagir com o
QuickTime Streaming Server ou Darwin Streaming Server (que na verdade tem a mesma base, mas diferem na interface gr\xE1fica, algumas personaliza\xE7\xF5es para o
MacOS X e na licensa de uso, visto que o
QuickTime Streaming Server tem uma licensa n\xE3o livre). O
QuickTime Broadcaster n\xE3o \xE9 livre e funciona somente no
MacOS X.
http://www.apple.com/quicktime/products/broadcaster/
JMStudio
O JMStudio \xE9 um codificador da Sun feito em Java. Deve funcionar pelo menos em ambiente Linux, Solaris e Windows.
http://java.sun.com/products/java-media/jmf/2.1.1/jmstudio/jmstudio.html
Servidores
A fun\xE7\xE3o do servidor \xE9 distribuir um stream, ou mais de um, para v\xE1rios clientes (telespectadores) simultaneamente. Ele deve estar
fisicamente em um local que tenha uma conex\xE3o com uma banda bem larga com a Internet.
DarwinStreamingServer
O DarwinStreamingServer \xE9 desenvolvido pela Apple sob uma licen\xE7a livre (APSL) :
http://developer.apple.com/darwin/projects/streaming/
Compilando, instalando e configurando o DarwinStreamingServer
Primeiro deve-se baixar o c\xF3digo fonte do programa dispon\xEDvel em:
http://developer.apple.com/darwin/projects/streaming/
obs: \xE9 necess\xE1rio criar um login no site da Apple para baixar o c\xF3digo fonte. N\xE3o tive problemas no cadastro, nem tive que aceitar dar meu sangue para nenhuma empresa para baixar o software
Depois de baixado o programa, no meu caso, DarwinStreamingSrc5.0.1.1.zip, dentro do diret\xF3rio onde voc\xEA o baixou, digite:
unzip DarwinStreamingSrc5.0.1.1.zip
cd DarwinStreamingSrc5.0.1.1
./Buildit
./DSS_MakeRoot -f DarwinStreamingSvr
cd DarwinStreamingSvr
-> agora como root
./Install
O DarwinStreamingServer usa um usu\xE1rio sem privil\xE9gios para rodar, que \xE9 normalmente chamado de 'qtss'. O script Install cria automaticamente esse usu\xE1rio e \xE9 poss\xEDvel que voc\xEA queira trocar a shell de login desse usu\xE1rio para algo como /sbin/nologin por seguran\xE7a. Aparentemente o script de instala\xE7\xE3o n\xE3o cria o grupo 'qtss', ent\xE3o, caso sua distribui\xE7\xE3o n\xE3o fa\xE7a isso sozinha (cria um grupo com o nome do usu\xE1rio) crie voc\xEA mesmo com o comando, como root:
groupadd qtss
e depois edite o arquivo /etc/passwd alterando o grupo do usu\xE1rio 'qtss' para o grupo 'qtss'.
Isso \xE9 necess\xE1rio no Slackware Linux.
Depois de compilado e instalado, agora deve-se acertar o arquivo de configura\xE7\xE3o para o DarwinStreamingServer. Primeiro, de dentro do diret\xF3rio
DarwinStreamingSrc5.0.1.1 fa\xE7a:
cp streamingserver.xml-POSIX /etc/streaming/streamingserver.xml
E depois edite a vontade o arquivo
/etc/streaming/streamingserver.xml.
Os arquivos instalados pelo DarwinStreamingServer s\xE3o os seguintes:
/usr/local/sbin/DarwinStreamingServer - O programa servidor de streaming em si
/usr/local/sbin/streamingadminserver.pl - O Servidor do Administrador Web
/usr/local/sbin/StreamingServerModules/ - Diret\xF3rio dos diferentes plugins
/usr/local/bin/PlaylistBroadcaster - O PlaylistBroadcaster
/usr/local/bin/MP3Broadcaster - O MP3Broadcaster
/usr/local/bin/qtpasswd - Gera senhas para o controle de acesso da administra\xE7\xE3o
/usr/local/bin/StreamingLoadTool - Ferramenta de stress do que simula clientes RTSP
/etc/streaming/ - Local onde ficam os arquivos de configura\xE7\xE3o
/usr/local/movies/ - Diret\xF3rio de m\xEDdias
/var/streaming/ - arquivos readme.html e user manual.pdf de documenta\xE7\xE3o
/var/streaming/logs - Logs
/var/streaming/playlists - Lista de Playlists do Administrador Web
Ap\xF3s configurado, para iniciar o DarwinStreamingServer, digite:
/usr/local/sbin/DarwinStreamingServer
Eu ainda n\xE3o consegui faz\xEA-lo rodar sem ser como root devido a uma chamada de fun\xE7\xE3o
setrlimit que altera o valor da stack m\xE1xima permitida pelo sistema e requer permiss\xE3o de root.
Depois disso rode o
/usr/local/sbin/streamingadminserver.pl
e abra em seu navegador o endere\xE7o:
http://127.0.0.1:1220/
Termine as configura\xE7\xF5es usando a interface web.
Supondo que voc\xEA j\xE1 instalou o
MPEG4IP, teste a funcionalidade do servidor usando o sample que j\xE1 vem com ele:
mp4player rtsp://127.0.0.1/sample_100kbit.mp4
Se aparecer um videozinho que mostra o logo do quicktime sendo desenhado, parab\xE9ns, voc\xEA instalou o
DarwinStreamingServer com
sucesso!
\xC9 a personaliza\xE7\xE3o e "macintoshiza\xE7\xE3o" do
DarwinStreamingServer para
MacOS X, com bonita interface gr\xE1fica e licensa n\xE3o livre.
http://www.apple.com/quicktime/products/qtss/
Players
O Player \xE9 o respons\xE1vel pela reprodu\xE7\xE3o do stream no computador de quem quer assist\xED-lo.
(g)mp4player
O mp4player (ou gmp4player, que \xE9 a interface gr\xE1fica) \xE9 o player que j\xE1 vem com o pacote do
MPEG4IP e portanto deve ser o player que deveria funcionar de primeira.
A imagem n\xE3o saiu corretamente no screenshot, mas na tela do monitor estava OK.
O player chegou a travar algumas vezes enquanto estava assistindo o streaming. Recomend\xE1vel o uso de
outro player.
N\xE3o existem execut\xE1veis do player dispon\xEDveis para nenhuma plataforma, caso voc\xEA seja um usu\xE1rio inexperiente, tente outro player.
LEIA-ME do mp4player:
http://mpeg4ip.sourceforge.net/documentation/index.php?readme=player
Vendo o streaming de dentro de uma rede interna que usa NAT
Para assistir um streaming de dentro da tua rede interna que usa NAT, marque a op\xE7\xE3o que aparece na figura abaixo:
(g)mplayer
O Mplayer (
http://www.mplayerhq.hu/) \xE9 um player livre de alta qualidade. GMplayer \xE9 a interface gr\xE1fica do programa.
O Mplayer 1.0pre5 est\xE1 com problemas para ver streamings usando a op\xE7\xE3o -rtsp-stream-over-tcp, que \xE9 utilizado por pessoas
que est\xE3o em redes internas e usam NAT. Caso esse n\xE3o seja o seu caso, pode utiliz\xE1-lo sem medo.
Para se usar o mplayer para ver os streamings, o mplayer deve ser compilado com a op\xE7\xE3o '--enable-live'. Esta op\xE7\xE3o depende
das depend\xEAncias (bibliotecas) que se encontram em
http://www.live.com/liveMedia/.
Vendo o streaming de dentro de uma rede interna que usa NAT
Se o mplayer n\xE3o estivesse com problemas em sua vers\xE3o corrente (1.0pre5), o comando que deveria funcionar seria, por exemplo:
mplayer -rtsp-stream-over-tcp rtsp://servidor.de_stream.org/sample_100kbit.mp4
VLC
O VLC (player do
VideoLanProject) \xE9 um player livre, muito bom, multi-plataforma, extremamente port\xE1vel e existem execut\xE1veis
para download para as seguintes plataformas: Linux, Windows,
MacOS X,
BeOS, QNX, Solaris,
FreeBSD,
NetBSD e
OpenBSD.
Se voc\xEA \xE9 um usu\xE1rio inexperiente, prefira esse player.
Para abrir um stream:
Janela de abertura do stream:
Altamente recomend\xE1vel como player padr\xE3o caso se queira utilizar o mesmo player em plataformas diferentes.
Para baixar o VLC, v\xE1 em:
http://www.videolan.org/vlc/
Vendo o streaming de dentro de uma rede interna que usa NAT
Voc\xEA precisa clicar em "Settings" e depois em "Preferences". Na nova janela, v\xE1 em
"modules" => "demux2" => "livedotcom" selecione a op\xE7\xE3o "advanced_options" e marque "Use_RTP_over_RTSP(TCP)"
QuickTime
O Apple
QuickTime \xE9 um player de v\xEDdeo que reproduz bem streaming em mpeg4, por\xE9m seu uso somente \xE9 recomendado para casos em que o usu\xE1rio n\xE3o conseguiu compilar ou baixar bin\xE1rios nem do mplayer nem do mp4player, visto que o
QuickTime n\xE3o \xE9 software livre, e funciona somente nos sistemas operacionais M$-Windows e
MacOS.
O endere\xE7o para download \xE9:
http://www.apple.com/quicktime/download/
Vendo o streaming de dentro de uma rede interna que usa NAT
\xC9 poss\xEDvel, mas por enquanto ainda n\xE3o testei.
Para utilizar algum desses players \xE9 necess\xE1rio baixar o plug-in da Envivio, no caso do Window$ Media Player, e o plug-in correto(?) para o
RealPlayer
Vendo o streaming de dentro de uma rede interna que usa NAT
Provavelmente nunca saberei, a n\xE3o ser que algu\xE9m teste.
Refer\xEAncias
Para Ogg/Theora:
- Tutorial bom que ensina a pegar o v\xEDdeo de uma firewire e o som do 'line' da placa de som:
http://r23.cc/community/?q=node/484
- Tutorial bem detalhado sobre streaming usando firewire: "Streaming Video with Linux and Firewire"
http://24.72.34.35/cgi-bin/twiki/view/Main/LinuxVideoFirewire
- Pequeno guia de como fazer streaming usando o dvgrab, ffmpeg2theora e oggfwd:
http://mcs.hackitectura.net/tiki-index.php?page=live+stream+ogg+theora+ffmpeg2theora+oggfwd
- Guia de como fazer streaming usando o ffmpeg2theora e o ezstream:
http://www.oddsock.org/guides/video.php
- Patch necess\xE1rio para o
FreeJ trabalhar com algumas placas de captura. O sintoma da necessidade desse patch \xE9 quando o
FreeJ aborta com um erro numa ioctl() antes de iniciar:
http://www.ic.unicamp.br/~ra017126/freej-0.8.1-VIDIOCGTUNER_non_fatal.diff
- Howto excelente de como fazer streaming de v\xEDdeo usando o PD:
http://tsotso.org/tavi/?page=Pure+Data+Streaming+HowTo
- Howto de como fazer streaming usando o Lives:
http://www.xs4all.nl/~salsaman/lives/docs/streamwithlives.html
- O Theora Cookbook:
http://en.flossmanuals.net/TheoraCookbook/Introduction
- O Projeto boxtream - streaming usando o gstreamer com scripts em python:
http://boxtream.unice.fr/
--
Para
DarwinStreamingServer:
- Artigo no
LinuxJournal:
http://www.linuxjournal.com/article.php?sid=6720
- Manual do
DarwinStreamingServer:
http://developer.apple.com/darwin/projects/streaming/qtss_admin_guide.pdf
- Apresenta\xE7\xE3o que detalha o funcionamento interno do streaming:
http://www.mpeg4ip.net/documentation/mpeg4ip_svlug.pdf
- Guia contribuido por everwicked:
http://www.everwicked.com/content/MPEG4IP_Guide/
- Como converter um v\xEDdeo para mpeg4:
http://docs.indymedia.org/view/Sysadmin/Local.CmiBrasilMultiMidia#Comprimindo_v_deos
- Tutorial "Darwin Streaming Server on Linux":
http://www.streamingmedia.com/tutorials/view.asp?tutorial_id=143
- Tutorial "Authenticating Media Access"
http://soundscreen.com/streaming/authentication.html
- Descri\xE7\xE3o das portas utilizadas pelo
DarwinStreamingServer
http://soundscreen.com/streaming/firewall.html
Sobre este manual
Este manual foi escrito por Rafael Diniz (
rafael[-@!]riseup.net) derivado e com base no manual de
WebRadiosPt do Rhatto (
rhatto[-@!]riseup.net ) com a colabora\xE7\xE3o de v\xE1rios(as) outros(as) que direta ou indiretamente contribuiram ou motivaram a cria\xE7\xE3o desses manuais.

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Brazil License.
--
SilvioRhatto - 03 Nov 2005
--
RafaelK - 28 Nov 2005