Hi et merci pour cette réponse très précise
alors pour la version de res 5 c'est
*RED5 0.7.0 j'ai installé la version standaloone donc autonome
* je compile utilisant le FP9
* oui je travail en local
voici le code complet qui assure l'affichage dans mon système ainsi
l'enregistrment et la connexion avec le RED 5
//////////////////////////////////////:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas backgroundColor="#eeeeee" creationComplete="init()"
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:utils="com.dougmccune.utils.*"
xmlns:controls="com.dougmccune.controls.*">
<mx:RemoteObject id="myservice" fault="faultHandler(event)"
showBusyCursor="true" source="PictureService" destination="amfphp">
<mx:method name="savePNG" result="resultHandler(event)"
fault="faultHandler(event)" />
</mx:RemoteObject>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.events.CloseEvent;
import flash.utils.clearInterval;
import flash.display.*;
import flash.display.MovieClip;
import flash.media.Video;
import flash.media.Microphone;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.events.AsyncErrorEvent;
import flash.display.SimpleButton;
import flash.text.*;
import flash.system.SecurityDomain;
import flash.system.Security;
import flash.net.Responder;
import flash.net.NetStream;
import flash.utils.setInterval;
import mx.graphics.codec.JPEGEncoder;
import mx.controls.Alert;
import mx.core.UIComponent;
import mx.managers.CursorManager;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.messaging.AbstractConsumer;
import mx.core.UIComponent;
import mx.core.IUIComponent;
import mx.controls.Image;
import GestionNotification.SendMail;
private var smail:SendMail;
private var nc:NetConnection;
private var responder:Responder;
private var ns:NetStream;
private var mic:Microphone = Microphone.getMicrophone();
private var nTimer:Number;
public var threshold:Number = .2;
public var recordingyes:Boolean;
private var isrecord:Boolean;
public var notif_type:String="(Aucune)";
public var user_type:String="Aucun";
public function onBWDone():void {
}
private function init():void
{
connect();
}
private function connect():void
{ NetConnection.defaultObjectEncoding = ObjectEncoding.AMF0;
SharedObject.defaultObjectEncoding =
ObjectEncoding.AMF0;
nc = new NetConnection();
nc.client=this;
nc.objectEncoding=0;
nc.connect("rtmp://localhost:1935/oflaDemo",true);
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
}
private function netStatusHandler(e:NetStatusEvent):void {
var code:String = e.info.code;
Alert.show("code = " + code);
if(code == "NetConnection.Connect.Success"){
ns = new NetStream(nc);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,
asyncErrorHandler);
recordingyes=true;
isrecord=false;
}
}
private function asyncErrorHandler(event:AsyncErrorEvent):void {
Alert.show(event.toString(),"error");
}
public function publishCam(str:String):void
{
try
{
ns.attachCamera(videoCamera.camera);
mic.rate = 44;
ns.attachAudio(mic);
ns.publish(str, 'record');
}
catch(err:Error)
{
Alert.show( err.toString() );
}
}
public function stopRecording():void
{
ns.close();
clearInterval(nTimer);
isrecord=false;
}
public function Enregistrer():void
{
var snapshotHolder:UIComponent = new UIComponent();
var snapshot:BitmapData = new
BitmapData(videoCamera.width,videoCamera.height,true);
var snapshotBitmap:Bitmap = new
Bitmap(snapshot);
snapshotHolder.addChild(snapshotBitmap);
snapshot.draw(videoCamera);
savePicture(snapshot);
}
private function savePicture(picture:BitmapData) : void
{
// appél au compresseur JPEG
var jpegEncoder:JPEGEncoder= new JPEGEncoder();
var
jpegBytes:ByteArray=jpegEncoder.encode(picture);
jpegBytes.compress();
// envoyé au serveur
myservice.getOperation("savePNG").send(jpegBytes);
}
private function faultHandler(fault:FaultEvent):void
{
CursorManager.removeBusyCursor();
Alert.show("code:\n" + fault.fault.faultCode + "\n
\nMessage:\n" + fault.fault.faultString + "\n\nDetail:\n" +
fault.fault.faultDetail);
}
private function resultHandler(evt:ResultEvent):void
{
Alert.show(evt.result.toString());
}
private function motionHandler(event:Event):void {
var dat:Date= new Date();
if(detector.percentChange > threshold) {
if(til.numChildren>50)
{
til.removeAllChildren();
}
var image:Image = new Image();
image.source = new
Bitmap(detector.lastSnapshot.clone());
image.width = 50;
image.height = 45;
til.addChild(image);
if(recordingyes==true){
if(isrecord==false){
var ccA:String=dat.getDay().toString()+
dat.getMonth().toString()
+ dat.getHours().toString()+ dat.getMinutes().toString()
+dat.getSeconds().toString()+dat.getMilliseconds().toString();
var chA:String="Demo_"+ccA;
publishCam(chA);
isrecord=true;
nTimer=setInterval(stopRecording,10000);}
}
bar.setStyle("trackColors",
[0xff0000,0xff0000]);
générer_notif();
}
else {
bar.clearStyle("trackColors");
}
}
private function générer_notif():void{
if (user_type=="administrateur"){// le compte
connécté est un
compte chef ou administrateur
smail=new SendMail();
if(smail.mail_admin!=""){//
l'administrateur a déjà fait de
gestion de notification
// envoir mail
}
else{
// l'administrateur n'a ps
encore enregistré ses coordonées
// une boite de dialogue
s'affiche si l'administrateur veut
enregistrer ses coordonnées
Alert.yesLabel="Oui";
Alert.noLabel="Non";
Alert.show("les coordonnées de
l'administrateur ne sont pas
encore enregistrés voulez vous le faire maintenant?","information",
(Alert.YES|Alert.NO|Alert.NONMODAL),this,CloseHandler);
}
}
}
private function CloseHandler(event:CloseEvent):void{
if(event.detail==Alert.YES){
// gerer notif s'affiche
smail.addEventListener(CloseEvent.CLOSE,remouvsmail);
PopUpManager.addPopUp(smail,this,true);
}
}
private function remouvsmail(event:CloseEvent):void{
PopUpManager.removePopUp(smail);
}
]]>
</mx:Script>
<utils:SimpleMotionDetector id="detector" sampleRate="100"
source="{videoCamera}" change="motionHandler(event);
bar.setProgress(detector.percentChange, 1)" />
<mx:Panel title="Streaming Vidéo" id="streaming"
borderColor="#34A89C" fontFamily="Georgia" height="408" width="494"
layout="vertical" horizontalAlign="left" verticalAlign="top">
<controls:WebCamDisplay id="videoCamera" width="474"
height="319"
borderThickness="1"
borderColor="#FFFFFF"
borderStyle="solid"
cornerRadius="0"/>
<mx:ProgressBar mode="manual" minimum="0" maximum="1" id="bar"
trackHeight="30"
labelPlacement="center" label="Sensibilité: %3%%"
width="{videoCamera.width}" />
</mx:Panel>
<mx:Tile id="til" visible="false" x="0" y="0"/>
</mx:Canvas>
//////////////////////////////////////
On 6 mar, 20:42, ekameleon <[email protected]> wrote:
> Hello :)
>
> il nous faut beaucoup plus d'infos (comme toujours ;))
>
> 1 - version de RED5 et quelle est ta configuration (port, etc...).. explique
> comment tu installes celui ci etc.
>
> 2 - tu as cherché sur leur mailing list pour voir si quelqu'un a eu déjà le
> même problème ?http://osflash.org/pipermail/red5_osflash.org/
>
> 3 - tu compiles en FP10 ? FP9 ? tu as mis un code en AMF0 .. côté serveur tu
> es certaine d'être en AMF0 ? Tu fais pas de l'AMF3 sans le savoir ?
>
> 4 - Tu peux préciser si tu es en local, en ligne, etc ? Là impossible de
> savoir ce que tu fais à ce niveau là ;)
>
> Perso je ne maitrise pas du tout Red5 mais plutôt FMS :) Du coup là je te
> mets des questions bateau... mais franchement si personne ne te réponds
> rapidement ici, tu auras plus de chance de trouver ta réponse sur la mailing
> list de Red5 où la communauté sera surement en forme pour te donner la
> réponse ;)
>
> En général quand on arrive à se connecter à un serveur pas de raison de pas
> pouvoir le faire de "temps en temps"... faut que tu sois précise dans ton
> process d'intégration, etc. pour voir ce qui peut clocher. Le code AS3 ne
> doit pas être la cause du soucis car tu ne fais pas grand chose à ce que je
> vois qui peut causer problème dans ton test ;)
>
> PS : faudrait voir aussi ton code Java server side.. mais là c'est encore
> une autre histoire
>
> EKA+ :)
>
> Le 6 mars 2010 20:29, Sézard_damian <[email protected]> a écrit :
>
> > hi there :D contente de rejoindre ce groupe
> > alors j'ai un petit souci avec mon serveur red 5, je suis en train de
> > développer une application vidéosurveillance où j'enregistre les
> > vidéos en cas de mouvement j'ai utilisé pour cela le serveur REd 5
> > j'enregistre les vidéos utilisant le protocole "rtmp" dans le
> > répertoire oflademo
> > le problème est lors de la connexion des fois elle se termine avec
> > succé et des fois non
> > voici mon code:
> > //////////////////////////////////////////////
> > private function connect():void
> > { NetConnection.defaultObjectEncoding = ObjectEncoding.AMF0;
> > SharedObject.defaultObjectEncoding =
> > ObjectEncoding.AMF0;
> > nc = new NetConnection();
> > nc.client=this;
> > nc.objectEncoding=0;
> > nc.connect("rtmp://localhost:1935/oflaDemo",true);
> > nc.addEventListener(NetStatusEvent.NET_STATUS,
> > netStatusHandler);
> > }
> > private function netStatusHandler(e:NetStatusEvent):void {
> > var code:String = e.info.code;
> > Alert.show("code = " + code);
> > if(code == "NetConnection.Connect.Success"){
> > ns = new NetStream(nc);
> > ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,
> > asyncErrorHandler);
> > recordingyes=true;
> > isrecord=false;
> > }
> > }
> > ////////////////////////////
> > la fonction netStatusHandler dans le alert.show des fois elle affiche
> > NetConnection.Connect.Success et parfois non :(
> > je ne sais qu'est ce qui cloche !!!!!!!!!!!!
> > est ce un problème de port ?!!!!!!!!!!!!!
> > Merci d'avance
> > Cordialement
>
> > --
> > Vous recevez ce message, car vous êtes abonné au groupe Google
> > Groupes FCNG.
> > Pour envoyer un message à ce groupe, adressez un e-mail à
> > [email protected].
> > Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
> > [email protected] <fcng%[email protected]>.
> > Pour plus d'options, consultez la page de ce groupe :
> >http://groups.google.com/group/fcng?hl=fr
>
>
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes FCNG.
Pour envoyer un message à ce groupe, adressez un e-mail à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
[email protected].
Pour plus d'options, consultez la page de ce groupe :
http://groups.google.com/group/fcng?hl=fr