o Red5 é um servidor de RTMP de código aberto e desenvolvido em Java e possui suporte as seguintes funcionalidades:
- Streaming de Audio/Video (FLV e MP3)
- Gravação de Streaming (somente FLV)
- Shared Objects
- Publicação em Tempo Real
- Remoting (Action Message Format)
Instalação
Atualmente na versão 0.9.1 Final pode ser baixado nos seguintes links: OSX | Windows | ZIP | Tarball | Replacement Jar
Estou utilizando a versão 0.8 por estar estável. Os intaladores possuem o tomcat imbutido na instalação.
Configuração e teste
Após a instalação acesse http://localhost:5080/. Há a página dos demos(http://localhost:5080/demos/), mais que só funcionam após instalar os serviços em http://localhost:5080/installer/.
Então agora acesse http://localhost:5080/installer/ e terás a tela abaixo:

Selecione o aplicativo fitcDemo e clique em Install. Aguarde o Alert de concluído e vamos ao App.
Um exemplo
Vamos agora criar um aplicativo que se conectará ao Red5 e transmite a câmera.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
horizontalAlign="left"
backgroundColor="#f6f6f6"
backgroundGradientColors="[#f6f6f6, #bbbbbb]"
viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private var nc:NetConnection;
private var nsCli:NetStream;
private var nsPub:NetStream;
[Bindable]
private var statusConnection:Boolean=false
/**
* Inicia a aplicação e faz a conexão
*/
private function init():void
{
if ( nc != null )
nc=null;
nc=new NetConnection();
nc.addEventListener( NetStatusEvent.NET_STATUS, netStatus );
nc.connect( hostRTMP.text );
nc.client=this;
}
/**
* Método necessário para que não haja erro na chamada.
* Ele será invocado e retornará o ID da conexão
*/
public function setId( id:Object ):void
{
}
/**
* Método que recebe o Status da conexão
*/
private function netStatus( e:NetStatusEvent ):void
{
RED5Status.text=e.info.code;
switch ( e.info.code )
{
case "NetConnection.Connect.Success":
statusConnection=true;
break;
case "NetConnection.Connect.Closed":
statusConnection=false
break;
case "NetConnection.Connect.Rejected":
statusConnection=false
break;
}
}
private function publicar():void
{
if ( nsPub != null )
{
btPublicar.label="Publicar no servidor Red5!"
nsPub.close()
nsPub=null
}
else
{
btPublicar.label="Parar publicação!"
nsPub=new NetStream( nc );
nsPub.attachCamera( Camera.getCamera());
// nome que será publicado
nsPub.publish( "videoPublish" );
vdMinhaWebCam.attachCamera( Camera.getCamera());
}
}
private function visualizar():void
{
if ( !statusConnection )
{
Alert.show( "Não conectado ao servidor!" )
return;
}
if ( nsCli != null )
{
btVisualizar.label="Visualizar do servidor de Red5!";
nsCli.close();
nsCli=null
}
else
{
btVisualizar.label="Parar Visualização!";
nsCli=new NetStream( nc )
var vid:Video=new Video();
vid.height=uiCaixaDoVideo.height;
vid.width=uiCaixaDoVideo.width;
vid.attachNetStream( nsCli );
uiCaixaDoVideo.addChild( vid );
// nome que foi publicado
nsCli.play( "videoPublish" );
}
}
]]>
</mx:Script>
<mx:HBox>
<mx:TextInput id="hostRTMP" text="rtmp://localhost/fitcDemo"/>
<mx:Button label="Conectar ao servidor" click="init()"/>
<mx:Label id="RED5Status" left="178" top="12"/>
</mx:HBox>
<mx:VBox enabled="{statusConnection}">
<mx:HBox>
<mx:Button id="btPublicar"
label="Publicar no servidor Red5!"
click="publicar()"
left="7"
top="40"
width="320"/>
<mx:Button id="btVisualizar"
label="Visualizar do servidor Red5!"
click="visualizar()"
left="7"
top="40"
width="320"/>
</mx:HBox>
<mx:HBox>
<mx:VBox>
<mx:VideoDisplay width="320"
height="240"
id="vdMinhaWebCam"
left="10"
top="85"/>
</mx:VBox>
<mx:VBox>
<mx:VBox width="320"
height="240"
backgroundColor="#000000"
left="10"
top="334">
<mx:UIComponent toolTip="Captura de vídeo"
id="uiCaixaDoVideo"
width="100%"
height="100%"
x="10"
y="353"/>
</mx:VBox>
</mx:VBox>
</mx:HBox>
</mx:VBox>
</mx:Application>
O funcionamento é bem simples. Quando clicado em conectar, uma nova instância do NetConnection é criada e o status é apresentado ao lado do botão. Os botões de visualizar e publicar só são habilitados quando a conexão for aceita no RED5.
Quando clicar em Publicar, uma instância do NetStream é criada e utilizamos o método publish para enviar a a câmera e microfone ao Red5. quando clicamos em visualizar, uma instancia do NetStream é criada e utilizamos o método play para visualizar o que esta sendo publicado neste canal.
Veja abaixo como ficou o exemplo.
Código fonte aqui.









[...] de o que é e como funciona o protocolo de tempo real usado em aplicações Adobe Flex. O Red5 [link] Post que fala sobre a implementação java (OpenSource e gratuita) do protocolo RTMP. O FMS [link] [...]
Olá Eduardo, poderia me dizer se existe uma diferença de desempenho entre as versões
-tarball
-instalador
-war
estou usando a versão tarball, você já iniciou o servidor usando o
'red5-highperf.bat'?
obrigado
Olha, teoricamente não há diferença entre as distribuições do Red5. Não usei o bat não.
Oi Eduardo, Obrigado pelo post, está sendo esclarecedor.
Mas não consegui rodar o Red5 ainda. Eu instalei a versão Windows (Java5) mas parece que o java não foi instalado junto.
Então baixei o java indicado na página do readme do Red5: 'Java JDK 1.5 or newer' que dava um link para http://java.sun.com/javase/downloads/index.jsp
Só que após a instalação o diretório criado pelo java foi
C:\Arquivos de programas\Java\jdk1.6.0_18
Parece-me que não é o mesmo que você cita no post, e o Red5 dá um erro e fecha o prompt tão rápido que não consigo ver a mensagem de erro.
Poderia me ajudar?
Abraço
Você instalou o Java SDK 1.6, e deve instalar o JRE 1.6. vá até a página de download, http://java.sun.com/javase/downloads/index.jsp, e baixe o JRE. Após isso instale o Red5.
olá eduardo...bom....é o seguinte...sei que já faz um tempo que vc postou isso...mas...bom, sou professor de ciencias da rede municipal de ensino em teresina no piauí, estou com um quebra cabeça em minhas mãos, eu e alguns professores resolvemos criar um site para escola (sem fins lucrativos, claro!) só que idéias foram surgindo e surgindo até que um dos professores teve a grandiosa e complicada ideía de (se possivel) transmitir os eventos esportivos pelo site da escola....a equipe abraçou a ideia...procuramos, procuramos e nada foi encontrado efetivamente...fomos no site de extensões do joomla e lá encontramos algumas extensões que trabalham com video conferencia...mas, porém...todas usam este "bendito red5". só que nem na escola e pelo que a gente viu, nem na cidade tem alguem que saiba instalar ou trabalhar com ele. por isso, eu e a equipe, gostariamos que vc nos ajudasse pois, apesar de parecer simples, não é. e o nosso estimado google e youtube não está nos oferencendo ferramentas para nos finalizarmos este projeto. agradecemos sua atenção e... feliz carnaval.
Use o formulário de contato que eu acho alguma solução.