Problem mit Streamen (Video von ActionScript gesteuert)

Orphelina

Erfahrenes Mitglied
Hallo,

ich hab schon ganz viel gelesen und gesucht, aber ich werd aus dem Streamen einfach nicht schlau.
Ich hab eine etwas komplexere Anwendung, in die ich auch Filme lade. Damit ich diese nicht immer einbetten muss und per loadMovie lade, wollte ich das streamen versuchen.

Ich hab nun also meine FVL Datei.
Und versuche erstmal lokal das File zu laden anhand dieses Beispiels:
PHP:
// Instanz von Video aus Bibliothek
this.createTextField("status_txt", 999, 0, 0, 100, 100);
status_txt.autoSize = "left";
status_txt.multiline = true;
// NetConnection-Objekt erstellen
var my_nc:NetConnection = new NetConnection();
// Lokale Streaming-Verbindung erstellen
my_nc.connect(null);
// NetStream-Objekt erstellen und onStatus()-Funktion definieren
var my_ns:NetStream = new NetStream(my_nc);
my_ns.onStatus = function(infoObject:Object):Void {
    status_txt.text += "status (" + this.time + " seconds)\n";
    status_txt.text += "\t Level: " + infoObject.level + "\n";
    status_txt.text += "\t Code: " + infoObject.code + "\n\n";
};
// NetStream-Videofeed an das Video-Objekt anhängen
my_video.attachVideo(my_ns);
// Zwischenspeicherzeit festlegen
my_ns.setBufferTime(5);
// Wiedergabe der FLV-Datei starten
my_ns.play("http://www.helpexamples.com/flash/video/clouds.flv");

Das Problem das ich dabei habe ist, dass man dieses Video- Objekt in der Bibliothek anlegen muss und eine Instanz davon auf der Bühne braucht mit dem Namen "my_video".
Da ich das ganze etwas komlexer gestaltet habe, sehe ich das ganze natürlich nicht mehr, wenn es auf _root liegt, da es von anderen Elementen meiner Anwendung überdeckt wird. Kann ich dieses Video- Objekt auch anders einbinden oder in meinen Ebenen ganz nach oben bringen? Ich muss es dynamisch halten, da ich nicht weiss wieviele Videos am Ende tatsächlich zu sehen sind.
Soweit ich weiss geht das nur wie oben beschrieben oder irre ich mich da? Mir ist der Untschied zwischen NetStream- Klasse und FLVPlayback Komponente nicht klar, machen die im Endeffekt das gleiche?

Danke und Gruß
 
Zuletzt bearbeitet:
Hi,

lege Dir doch für jedes Video einen MovieClip in der Bibliothek an, in dem auch der komplette Code für dieses Video steht. Für jeden Film, den Du anzeigen willst, kannst Du nun eine Instanz des Videocontainers per attachMovie instanzieren.

Die FLVPlayback-Komponente ist im Prinzip schon ein kompletter Videoplayer mit allen nötigen Kontrollen. Wenn Du den Player lieber selbst gestalten willst (siehe z.B. den FLV-Player vII auf meiner Seite), verwende die Video-Komponente.

Gruß
.
 
Hallo,

bei meiner Anwendung ist es so, dass ich XMLs auslese, in denen beliebig viele Filme stehen können, die ich dann platziere und abspielen kann. Da ich also nie weiss, wieviele Videos ich habe, kann ich das ganze auch nicht über MovieClips in der Bibliothek lösen, da das ja quasi statisch ist und ich vorher definieren muss, wieviele Videos es gibt.
Und genau das scheint der Knackpunkt zu sein, dass ich das mit den Videos gar nicht dynamisch nur über ActionScript machen kann...?
Wenn ich die Komponente verwende, werden die Daten dann trotzdem gestreamt? Ich versuche mich derzeit am Flash Media Server 2, hab aber noch keinen Durchblick...

Danke und Gruß
 
kann ich das ganze auch nicht über MovieClips in der Bibliothek lösen, da das ja quasi statisch ist und ich vorher definieren muss, wieviele Videos es gibt.
Falsch: Wenn Du in der Biblioehtk einen MC namens "vid_player" hast, kannst Du beliebig viele Instanzen davon per attachMovie auf die Bühne ziehen (und der Clou ist: auf beliebige Tiefenebenen, also frei positionierbar). ;)

Gruß
.
 
Mh okay das stimmt natürlich :rolleyes:

Aber ich versteh noch nicht ganz wie... Das heisst ich leg dieses komische Video Objekt in der Bibliothek an und mache daraus einen MC, indem ich die NetStream Klasse verwende und diesen MC mit Code kann ich dann woanders beliebig oft verwenden?

Gruß

PS Wie muss ich im MC dann das attachVideo adressieren? Über this oder brauche ich eine Instanz auf der Bühne?
PHP:
// NetStream-Videofeed an das Video-Objekt anhängen
this.attachVideo(my_ns);

Wenn ich dann den MC in meiner AS Klasse attache, bekomm ich zwar die traces aus dem MC, aber es passiert nichts und wenn ich ihn mir ausgeben lasse kommt undefined...
 
Zuletzt bearbeitet:
Hi,

  • Du erstellst einen neuen MovieClip und nennst ihn "vid_player"

  • Du erstellst in der Bibliothek ein neues Videoobjekt

  • Du öffnest den "vid_player" zum Bearbeiten und ziehst Dein Videoobjekt auf die Bühne (positionie es am besten auf 0|0) und gib ihm den Instanznamen "my_video"

  • Erstelle nun eine neue Ebene (immer noch im MC "vid_player"), nenne sie "code" und setze dort den gesamten Code zum Abspielen und Kontrollieren des Videos hinein

  • Modifiziere den Code ggf. so, dass er mit einer onEnterFrame-Methode darauf wartet, dass ein Dateiname übergeben wird, bevor er mit dem Abspielen beginnt. Alternativ kannst Du auch eine Funktion "loadVid(vid_path)" schreiben, die Du von aussen aufrufen kannst.

  • Auf der Hauptzeitleiste kannst Du nun Deine xml-Datei oder was auch immer einlesen und für jeden Eintrag eine Instanz des MC "vid_player" erstellen. Lege die Instanzen am besten in einem Array ab, dann kannst Du sie bequem mit einer Schleife durchlaufen (praktisch, wenn die Player neben- oder untereinander angeordnet werden sollen)

Gruß
.
 
Hallo,

danke erstmal für die ausführliche Beschreibung... Den MC hatte ich so angelegt. Wenn ich diesen MC nun in meiner AS- Datei über ein attach hinzufügen will, wird dieser aber nicht angefügt, denn wenn ich mir eine Ausgabe schreib, dann ist das Ergebnis undefined.

Der attach sieht so aus:
PHP:
this._parent.attachMovie("vid_player", "vid_container"+id, this._parent.getNextHighestDepth());
trace("Video Container: " + this._parent["vid_container"+id]);

Mach ich da was falsch oder ist was am MC nicht in Ordnung? Da ich an "this._parent" noch andere Sachen attache, kann man folglich an diese Ebene Elemente anfügen.
Ich kann die Daten leider nicht zu verfügung stellen, da die Anwendung zu groß ist in die ich das einbauen will...
 
Hi,

hast Du den MC denn zum Export für AS unter dem Bezeichner "vid_player" freigegeben?

Probiers mal so:
Code:
var new_vid = _parent.attachMovie("vid_player", "vid_container" + id, _parent.getNextHighestDepth());
trace("Video Container: " + new_vid);

Gruß
.
 
Zurück