Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-05-2005, 11:26   #1 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
[Stuff] flvs spielen, stoppen, loopen

Wer Videoclips im flv-Format ohne die Media-Komponenten abspielen möchte, kann auf die NetStream-Klasse und deren Methoden zurückgreifen. Hier mal ein Beispiel, wie man über das Abspielen hinaus auch Play-, Stop-, Rewind- und Video-Szenensprungfunktionen sowie einen Loop einsetzen kann:

PHP-Code:
// NetConnection-Objekt erstellen:
var netConn:NetConnection = new NetConnection();

// Lokale Streaming-Verbindung erstellen:
netConn.connect(null);
//oder bspw. etwas on der Art: netConn.connect("rtmp://66.216.97.115/UserName/video");

// NetStream-Objekt erstellen und onStatus()-Funktion definieren:
var netStream:NetStream = new NetStream(netConn);

netStream.onStatus = function(infoObject) {
    
//trace("this="+this);
    
if (infoObject.code == "NetStream.Play.StreamNotFound") {
        
trace("Konnte Videodatei nicht finden.");
      }
    else if(
infoObject.code == "NetStream.Buffer.Full"){
        
trace("Buffer voll und Start");
    }
    else if(
infoObject.code == "NetStream.Play.Stop"){
        
trace("Filmende");
        
//Loop:
        
netStream.seek(0);//an den Anfang zurück
        
netStream.pause(false);//und gleich wieder starten
    
}
    
    
trace("Status (NetStream)\n");
    
trace("Level: "+infoObject.level "\n");
    
trace("Code: "+infoObject.code "\n");
};

// NetStream-Videofeed an das Video-Objekt anhängen:
mein_video.attachVideo(netStream);
// Zwischenspeicherzeit festlegen:
netStream.setBufferTime(5);
// Wiedergabe der FLV-Datei:
netStream.play("meinVideo.flv");





//zurückspulen an den Anfang
btnRewind.onRelease = function(){
    
netStream.seek(0);//an den Anfang zurück
    
netStream.pause(false);//und gleich wieder starten
}

//Video stoppen
btnStop.onRelease = function(){
    
netStream.pause(true);
}

//Video abspielen
btnPlay.onRelease = function(){
    
netStream.pause(false);
}

//springe zu Videoszene 1 (bei 10 Sekunden)
btnS1.onRelease = function(){
    
netStream.seek(10);
    
netStream.pause(false);
}

//springe zu Videoszene 2 (bei 20 Sekunden)
btnS2.onRelease = function(){
    
netStream.seek(20);
    
netStream.pause(false);
}

this.stop(); 
mein_video ist der Instanzname eines Video-Objektes, das vorher über die Bibliothek (Klick auf das kleine Bibliotheksymbol rechts - Menüpunkt Video) auf die Bühne gezogen wurde.

Geändert von agedoubleju (20-05-2005 um 12:08 Uhr)
  Mit Zitat antworten
Alt 24-05-2005, 06:57   #2 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 49
Thumbs up

Vielen Dank, nach sowas hab ich schon länger gesucht!

Eine Frage: Wie kann ich es bewerkstelligen, dass das flv ERST abgespielt wird, wenn der Buffer voll ist, ohne eine manuelle BufferTime setzen zu müssen?

Im Detail möchte ich (wenn ich hier mal einen Wunsch äußern darf), dass es so läuft: Benutzer wählt einen Menüpunkt aus (funktioniert), dem entsprechenden Menüpunkt ist ine einem Array jeweils ein Movieclip als flv zugeordnet (klappt auch). Ist das Video im Hintergrund vollständig geladen (also der Buffer voll), so soll die Zeitleiste, in der auch die flv-Instanz ist, bis zum Ende laufen (es wird eine Tween abgespielt, der den Hintergrund abdunkelt) und im letzten Bild soll das vorgeladenen flv dann abgespielt werden.

Bei mir verhaspelt er sich da, bringt sogar manchmal den Browser zum Abszurz. Er soll halt so lange in Frame 1 warten, is der Buffer des flv voll ist, dann bis Bild 25 laufen und dort erst das flv abspielen, also

netStream.play("meinVideo.flv");

erst dort.



Über eine Anregung würde ich mich sehr freuen.

Steely
Steely ist offline   Mit Zitat antworten
Alt 24-05-2005, 10:04   #3 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Hmm, was ich da nicht ganz verstehe ist, warum du auf eine kurze Pufferzeit verzichten willst. Den ganzen Film erst mal zu laden ist ja gerade unschön, weil du endlos warten musst, bis etwas passiert.

Ich würde den Tween ein paar Sekunden spielen lassen und dann sofort das Video mit Vorpufferzeit ablaufen lassen.
  Mit Zitat antworten
Alt 24-05-2005, 10:22   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 49
Danke für deine Antwort!

Problem: Die unterschiedlichen Videos sind auch alle unterschiedlich lang. Ich will sie ja nicht vollständig laden, sondern sie nur vollständig puffern (klingt blöd, ich weiß).

Ich verstehe

"NetStream.Buffer.Full" von NetStream.onStatus

so, dass Flash meldet, wenn für das JEWEILIGE Video genug Daten gepuffert sind, um es mit der JEWEILIGEN Verbindungsgeschwindigkeit des Besuchers wiederzugeben.

Also im 1. Frame das jeweilige Video der Instanz zuweisen und buffern. Wenn der Buffer voll ist, ab Frame 2 der Zeitleiste abspielen (Hintergrundtween) und dann in Bild 25 das Video starten. Bei mir funktioniert es SEHR unzuverlässig, manchmal bleibt der Container leer etc.


Schaust du dir z.B. diese Seite an

www.sehsucht.de

dann wird bei der Auswahl eines Videos zuerst das erste Frame des FLV eingeblendet. Ist der Buffer genügend gefüllt, erscheint die Einblendung "Click to play". Also muss ja hier auch eine Rückmeldung kommen, wann der Buffer gefüllt ist.

Oder verstehe ich etwas grundsätzlich falsch? Würde mich über eine Antwort freuen, denn ich hänge hier schon eine ganze Weile dran. Der Prototyp ist online, solltest du eine Minute übrig haben, kann ich dir auch gerne den Link per PM zukommen lassen.

Steely
Steely ist offline   Mit Zitat antworten
Alt 24-05-2005, 17:34   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Ich will sie ja nicht vollständig laden, sondern sie nur vollständig puffern (klingt blöd, ich weiß).
Das wäre hier dasselbe. Wenn das Video komplett vorgepuffert ist, ist es komplett geladen. Wozu das ganze also?

Puffer heisst ja sonst, dass einige Sekunden vorgeladen werden, bevor das Video losläuft. Wenn alles klappt wird aber auch weiter gepuffert, d.h. wärend des Abspielens wird auch gleichzeitig vorgeladen.
  Mit Zitat antworten
Alt 23-08-2005, 13:39   #6 (permalink)
LDA $#03 STA$4FD0
 
Benutzerbild von Analogic
 
Registriert seit: Sep 2002
Ort: Stuttgart
Beiträge: 213
Hi agedoubleju,

ich habe Deinen Code genutzt, functioniert auch alles, doch wenn das Video zu ende ist, loop er nicht?

Es wird kein Trace ("filmende") angezeigt?
Woran kann das liegen?

Habe nur diesen Code 'onPress' gelegt.
ActionScript:
  1. aw1.onPress = function () {
  2.     _root.info = "Lade Video1 in den Puffer";
  3.     mv.attachVideo(netStream);
  4.     netStream.setBufferTime(10);
  5.     netStream.play("vid0.flv");
  6. };
und nach dem
ActionScript:
  1. trace ("Filmende");
  2. _root.info = "Filmende";
nach dies eingefügt.

Worauf bezieht sich das this.stop(); ?

Danke Dir im voraus
__________________
MfG Analogic - Leben ist Kunst

... Flash ist genial .. Flash macht spass .. Flashen will ich immermehr ;-)
Analogic ist offline   Mit Zitat antworten
Alt 23-08-2005, 16:40   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Worauf bezieht sich das this.stop();
Frame 1 der Hauptzeitleiste... Hauptzeitleiste soll nicht weiter abspielen...

Zitat:
wenn das Video zu ende ist, loop er nicht?
Den Loop erreichst du durch den netStream.seek(0) und netStream.pause(false)
  Mit Zitat antworten
Alt 23-08-2005, 18:49   #8 (permalink)
LDA $#03 STA$4FD0
 
Benutzerbild von Analogic
 
Registriert seit: Sep 2002
Ort: Stuttgart
Beiträge: 213
komisch dabei ist, ...

Habe ein dyn. Textfeld in der eine Info dargestellt wird.

'Video wählen'
'Puffere' (habe die Zuweisung vor Deinen trace-Befehlen abgelegt)
'Video läuft' (hier soweit auch)
'Filmende' (hier auch)

die ersten drei Infos werden dargestellt, die letzte wird nur beim ersten FIlm angezeigt?! Habe keine Ahnung was ich falsch gemacht habe.

Der Aufruf für die Videos erfolgt über drei Buttons.. wie oben beschrieben sieht der Code aus.

Vielleicht kannst Du da helfen, oder ist das ein bekannte Bug?

Grüsse aus Stuttgart
__________________
MfG Analogic - Leben ist Kunst

... Flash ist genial .. Flash macht spass .. Flashen will ich immermehr ;-)
Analogic ist offline   Mit Zitat antworten
Alt 23-08-2005, 18:52   #9 (permalink)
LDA $#03 STA$4FD0
 
Benutzerbild von Analogic
 
Registriert seit: Sep 2002
Ort: Stuttgart
Beiträge: 213
hier mein Code nochmals:
ActionScript:
  1. _root.info = "Bitte Video auswählen";
  2. _root.bisher = 0;
  3. var videoSound
  4. videoSound = new Sound(mv);
  5. videoSound.setVolume(25);
  6.  
  7. var netConn:NetConnection = new NetConnection();
  8. netConn.connect(null);
  9. var netStream:NetStream = new NetStream(netConn);
  10.  
  11. netStream.onStatus = function(infoObject) {
  12.     if (infoObject.code == "NetStream.Play.StreamNotFound") {
  13.     }
  14.     else if(infoObject.code == "NetStream.Buffer.Full"){
  15.         info = "Video läuft";
  16.     }
  17.     else if(infoObject.code == "NetStream.Play.Stop"){
  18.         info = "Filmende";
  19.         bisher = 0;
  20.         netStream.pause(true);
  21.     };   
  22. };
  23. aw1.onPress = function () {
  24.     bisher = 1;
  25.     info = "Lade Video1 in den Puffer";
  26.     vid.mv.attachVideo(netStream);
  27.     netStream.setBufferTime(5);
  28.     netStream.play("vid0.flv");
  29.  
  30. };
  31. aw2.onPress = function () {
  32.     bisher = 1;
  33.     info = "Lade Video2 in den Puffer";
  34.     vid.mv.attachVideo(netStream);
  35.     netStream.setBufferTime(5);
  36.     netStream.play("vid2.flv");
  37. };
  38. aw3.onPress = function () {
  39.     bisher = 1;
  40.     info = "Lade Video3 in den Puffer";
  41.     vid.mv.attachVideo(netStream);
  42.     netStream.setBufferTime(5);
  43.     netStream.play("vid4.flv");
  44. };
  45. btnStop.onRelease = function(){
  46.     info = "Stop";
  47.         netStream.pause(true);
  48. };
  49. btnPlay.onRelease = function(){
  50.     if (bisher==1){info = "Video läuft";};
  51.         netStream.pause(false);
  52. };
  53. vol.v1.onPress = function () {
  54.     videoSound.setVolume(0);
  55. };
  56. vol.v2.onPress = function () {
  57.     videoSound.setVolume(25);
  58. };
  59. vol.v3.onPress = function () {
  60.     videoSound.setVolume(60);
  61. };
  62. vol.v4.onPress = function () {
  63.     videoSound.setVolume(90);
  64. };
  65.    
  66. this.stop();
__________________
MfG Analogic - Leben ist Kunst

... Flash ist genial .. Flash macht spass .. Flashen will ich immermehr ;-)

Geändert von Analogic (23-08-2005 um 19:07 Uhr)
Analogic ist offline   Mit Zitat antworten
Alt 23-08-2005, 19:06   #10 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Bevor du ein neues Video abspielst, musst du erst den NetStream mit close schließen.
  Mit Zitat antworten
Alt 23-08-2005, 19:13   #11 (permalink)
LDA $#03 STA$4FD0
 
Benutzerbild von Analogic
 
Registriert seit: Sep 2002
Ort: Stuttgart
Beiträge: 213
schade, dachte schon jetzt funktioniert.

Habe den Befehl eingebaut, möchte aber nicht funktionieren.
ActionScript:
  1. else if(infoObject.code == "NetStream.Play.Stop"){
  2.         _root.info = "Filmende";
  3.         bisher = 0;
  4.         netStream.pause(true);
  5.         netStream.close();
  6.     };
die Sache ist einfach das er nicht erkennt dass das Video zu ende ist, es wird ja auch kein Trace ausgespukt!

Mist

Aber trotzdem danke Dir
__________________
MfG Analogic - Leben ist Kunst

... Flash ist genial .. Flash macht spass .. Flashen will ich immermehr ;-)
Analogic ist offline   Mit Zitat antworten
Alt 23-08-2005, 20:18   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
es wird ja auch kein Trace ausgespukt!
Du hast auch keine traces in der onStatus-Funktion gesetzt, sondern nur eine Info-Variable...
  Mit Zitat antworten
Alt 23-08-2005, 20:39   #13 (permalink)
LDA $#03 STA$4FD0
 
Benutzerbild von Analogic
 
Registriert seit: Sep 2002
Ort: Stuttgart
Beiträge: 213
die waren vorher drin, alle trace-Befehle, doch ich habe keine Ahnung warum das bei ersten FIlm geht, Dein Code in Urform hat in dieser Sache ja auch nicht funktioniert.
Mein abgeänderter Code hatte auch trace drin, hat aber auch nicht angezeigt.

Lokal und im Browser geht es nicht.

Meine Tests:
1.
erst Klick auf Video1 .. das Ende wird erkannt
danach Video2 .. Ende wird nicht erkannt
danach Video3 .. Ende wird nicht erkannt

2.
erst Klick auf Video2 .. das Ende wird NICHT erkannt
danach Video1 .. Ende wird erkannt
danach Video3 .. das Ende wird nicht erkannt

3.
Dateinamen von Video1 und VIdeo2 auf dem Server getauscht
das Video das Nr.1 war und nun Nr.2 ist, bei dem wird auch nachm Tausch das Ende erkannt!!!? und bei den anderen nicht?!?

Liegt also Keinsterweise am COde?!?!?!

Blick es nicht...
__________________
MfG Analogic - Leben ist Kunst

... Flash ist genial .. Flash macht spass .. Flashen will ich immermehr ;-)

Geändert von Analogic (23-08-2005 um 20:40 Uhr)
Analogic ist offline   Mit Zitat antworten
Alt 23-08-2005, 22:15   #14 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Versuch mal, dir für jedes Video ein eigenes netStream-Objekt zu erstellen.
  Mit Zitat antworten
Alt 24-08-2005, 09:53   #15 (permalink)
LDA $#03 STA$4FD0
 
Benutzerbild von Analogic
 
Registriert seit: Sep 2002
Ort: Stuttgart
Beiträge: 213
hab es nun anderst gelöst.

Habe durch Gesamtspiellänge und *.time des NetStreams eine if-Abfrage eingebaut, sobald das Video die Länge abgespielt hat wird der NetStream auf Pause gestellt und danach mit Close beendet.

Keine feine Lösung, doch für jetzt muss es reichen.

Ich habe sogar für jedes Video einen eigenen Flashfilm angelegt, mit Deinem Code von oben, direkt ohne Auswahlbuttons, den Dateinamen eingetragen.
Auch dann ändert sich das Verhalten nicht. Das Ende von V1 wird erkannt. Das Ende von V2 und V3 wird nicht erkannt?!

Kann es zu einem Fehler beim erstellen von der Flv gekommen sein?

Habe den Flashplayer8 installiert, kann es daran liegen?

Naja, aufjedenfall einen Dank für Deine HIlfe, sobald ich mehr Zeit habe, werde ich nochmal neu die Flv (Riva) für V2 und V3 erstellen.
__________________
MfG Analogic - Leben ist Kunst

... Flash ist genial .. Flash macht spass .. Flashen will ich immermehr ;-)
Analogic ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
flv, netstream, steuerung, tutorial, video

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


LinkBacks (?)
LinkBack zu diesem Thema: http://www.flashforum.de/forum/stuff/stuff-flvs-spielen-stoppen-loopen-166656.html
Erstellt von Für Art Datum Hits
Wenn Video zu Ende - automatische Weiterleitung - html.de Forum - HTML für Anfänger & Fortgeschrittene Dieses Thema Refback 23-08-2009 19:19 198


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele