Flash Webcam Stream (Red5)

Microhome

Erfahrenes Mitglied
Hallo zusammen,

ich bin gerade dabei ein wenig mit dem Red5 Streaming-Server herumzuspielen.
Ich möchte einen Videostream zwischen zwei Webcams austauschen und benutze hierfür folgenden Code:

Code:
mycam = Camera.get();
mycam_audio = Microphone.get();

mycam.setMode(320,240,30);
mycam.setQuality(0,100);

cam_feed.attachVideo(mycam);
cam_feed.attachAudio(mycam_audio);

client_nc = new NetConnection();
client_nc.connect("rtmp://localhost/oflaDemo");
cam_ns = new NetStream(client_nc);

cam_ns.attachVideo(mycam);
cam_ns.attachAudio(mycam_audio);

cam_ns.publish("user_1", "live");

in_ns = new NetStream(client_nc);
in_ns.play("user_2");

live_feed.attachVideo(in_ns);
live_feed.attachAudio(in_ns);

Den selben Code gibt es nochmal für den 2. User, wobei sich lediglich folgende Zeilen ändern:

Code:
cam_ns.publish("user_2", "live");

und

Code:
in_ns.play("user_1");


Mein eigenes Webcam Bild bekomme ich angezeigt, allerdings nicht den Stream des Videochat-Partners.
Habt ihr eine Idee, woran das liegen könnte?



Vielen Dank und beste Grüße aus Berlin.
 

Anhänge

  • record.fla
    47,5 KB · Aufrufe: 174
Hey Jens,
danke für deine Antwort.

Es bekommt jeder nur sein eigenes Bild (auf der linken Seite über die Video Komponente) angezeigt. Kann ich irgendwie den Stream-Status ermitteln?
Ich habe die Broadcast- und Subscribe Demo von Red5 getestet und die laufen problemlos. Am Server selbst scheint es also nicht zu liegen.
 
Funktioniert es denn, wenn du als user_1 den von user_1 gestreamten Stream anzeigen möchtest?

Ansonsten probier es mal mit folgender Version. Vielleicht ist durch den ersten Stream dein client_nc einfach busy?

Code:
// bis hierhin wie bisher
//bring in user_2's video/audio
client_nc_get = new NetConnection();
client_nc_get.connect("rtmp://localhost/oflaDemo");
in_ns = new NetStream(client_nc_get);
in_ns.play("user_2");

//attach user_1's published audio and video
//so we can see them in the larger chat window
live_feed.attachVideo(in_ns);
live_feed.attachAudio(in_ns);

Mit Red5-Servern bin ich ehrlich gesagt auch nicht allzu vertraut und mir fehlt auch die Möglichkeit, es selbst zu testen.
 
Hey Jens,

ja es scheint auf jeden Fall damit zusammenzuhängen, da entweder die Verbindung, oder der Server, überlastet ist.
Ich habe jetzt meinen eigenen Stream wiedergegeben und nach ca. 3 Sekunden wird der Stream nicht mehr aktualisiert.

Ich kann mir leider nur nicht erklären woran das liegt, denn das mitgelieferte Broadcast / Subscriber Script funktioniert auch problemlos.


Na ich werde noch ein wenig rumprobieren und dann eine mögliche Lösung, sofern ich sie finde, hier posten.



Danke für deine Hilfe!
 
Die Beispiele gibts direkt im Netz: http://red5.googlecode.com/svn/flash/trunk/


Habe das Problem, dass der Stream einfach sehr langsam ist und weiß nicht, woran das liegt. Vorallem local müsste er doch eigentlich sehr zügig verarbeitet werden!


// Edit: Problem gelöst. Wenn man für die Wiedergabe die Framerate auf 25 setzt dann läuft es natürlich auch flüssig :-D
 
Zuletzt bearbeitet:
Darf ich fragen mit welcher Methode du die Framerate hochgesetzt hast?
Und bei welchem Objekt? Gehe mal vom Video-Objekt aus, aber ich konnte leider keine passende Methode finden :(
 
Guten Morgen,

das ist keine Methode sondern lediglich eine Einstellung deiner Bühne. Dort wo du die Größe und die Hintergrundfarbe einstellen kannst, gibt es auch den Punkt "Bildrate", welcher standardmäßig auf 12 bps gesetzt ist. Diesen einfach auf 25 erhöhen.


Viel Erfolg!
 
Hallo,

dank dir erstmal für deine schnelle Antwort :)

Allerdings bin ich nicht ganz dahinter gestiegen, was du mit "Bühne" meinst, ich gehe mal von einer HTML-Datei ist, also der "Ort", an dem die SWF-Datei eingebunden und später ausgegeben wird.

Der Codeblock für die SWF-Datei sieht bei mir vie flogt aus:

Code:
<object width="100%" height="100%" 
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> 


<embed src="user1.swf" quality="high" bgcolor="#ffffff" width="100%" height="100%" align="middle" play="true" loop="false"  type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"> 
</embed> </object>
Nur passt dort ja ein Attribut mit der deutschen Bezeichnung "Bildrate" schlecht rein...

Vielleicht ist diese Info relevant: Habe mein SWF-File mit FlashDevelop (in der Sprache ActionScript 3) erstellt und anschließend mit dem "Flex SDK 3.5" kompiliert.

Gruß Red5User
 
Zurück