Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-03-2004, 15:37   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
CD-Rom: FLV in Player laden / kein Streaming

Hallo zusammen,

ich bin gerade am verzweifeln...
Mein Flash MX Pro Projekt wird später auf
einer CD veröffenlicht werden. Auf der CD
befinden sich zwei Dateien: Player für PC & Mac.
Außerdem gibt es einen Ordner "videos" mit 4 *.flv drin.
Da das Starten des Players mit eingebundenen
Videos zu lange dauern würde, habe ich diese
ausgelagert. Mein großes Problem ist das Streaming,
das scheint auf CD-Rom nicht wirklich zu funktionieren
und auf manchen Rechnern rückeln die Filme dann.

Was ich mir vorstelle, wäre die Filme bei Bedarf
ohne Streamin komplett in den Speicher zu laden,
kurzer Text 'Video wird geladen' und sobald das Video
geladen ist verschwindet der Text und das Video
spielt ab. Außerdem brächte ich einen Pause/Play und
einen ZurückZumAnfang-Button. Wenn es zuerst geladen
wird und dann ohne Streaming abspielt, kann es ja nicht ruckeln...

Die MediaKomponenten waren bislang auch keine
befriedigende Lösung.

Ich bin nicht so der Actionscript-Held und in 10 Tagen ist
Präsentation. Die CD wird ein Teil meiner Grafik-Design
Abschlussarbeit. Würde mich sehr freuen, wenn mir
jemand schnell helfen könnte.

Liebe Grüße,
Ben
Benjamecho ist offline   Mit Zitat antworten
Alt 08-03-2004, 12:31   #2 (permalink)
0x2b | ~0x2b;
 
Benutzerbild von bort
 
Registriert seit: Jan 2003
Ort: Rocky Beach
Beiträge: 370
Hi,

hier ein sehr simpler Videoplayer, der nach dem "erst-laden-dann-starten" Prinzip funktioniert:
ActionScript:
  1. // Frameskript in Frame 1
  2. // ausserdem in Frame 1: ein Video-Symbol mit Namen "vid"
  3. // und ein dynamisches Textfeld mit Namen "status_txt"
  4. // Der Dateiname des FLV wird ganz unten übergeben
  5. stop();
  6.  
  7. var connection = null;
  8. var stream = null;
  9.  
  10. function preloadVideo(videoName) {
  11.     // neue Verbindung
  12.     connection = new NetConnection();   
  13.     // mit dem lokalen System verbinden
  14.     connection.connect(null);
  15.    
  16.     // neuen Stream erzeugen
  17.     stream = new NetStream(connection);
  18.     stream.setBufferTime(2);
  19.     stream.play(videoName);
  20.    
  21.     // Zustand abfragen
  22.     this.onEnterFrame = videoLoadChecker;
  23. }
  24.  
  25. function videoLoadChecker() {
  26.     // regelmässig testen, wieviel vom Video schon geladen ist
  27.     var bl = stream.bytesLoaded;    // schon geladen
  28.     var bt = stream.bytesTotal;  // insgesamt
  29.     if (stream.bytesLoaded == stream.bytesTotal) {
  30.         // Ladevorgang abgeschlossen, also onEnterFrame löschen
  31.         delete this.onEnterFrame;
  32.         // Video anzeigen
  33.         playVideo();
  34.     } else {
  35.         status_txt.text = "Geladen: " + Math.round(bl / 1024) + " KB von " + Math.round(bt / 1024);
  36.     }
  37. }
  38.  
  39.  
  40. function playVideo() {
  41.     // Video anzeigen
  42.     stream.seek(0);
  43.     // dem Videoobjekt den "Stream" zuweisen
  44.     vid.attachVideo("test.flv");
  45. status_txt.text = "Playing...";
  46. }
  47.  
  48. preloadVideo("test.flv");


Gruss,
bort.
__________________
http://www.flexperten.de

Geändert von bort (08-03-2004 um 12:35 Uhr)
bort ist offline   Mit Zitat antworten
Alt 08-03-2004, 12:36   #3 (permalink)
0x2b | ~0x2b;
 
Benutzerbild von bort
 
Registriert seit: Jan 2003
Ort: Rocky Beach
Beiträge: 370
FLA gibt es auch

Und hier die Datei dazu (ohne FLV).

Gruss,
bort.
Angehängte Dateien
Dateityp: zip vid.zip (5,5 KB, 50x aufgerufen)
__________________
http://www.flexperten.de
bort ist offline   Mit Zitat antworten
Alt 08-03-2004, 12:43   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Hallo bort,

vielen, vielen Dank schonmal!
Ich werde das nacher mal ausführlich testen.
Momentan kämpfe ich noch mit einem dynamischen Textfeld rum,
aber ich scheine zu gewinnen ;-)

Das sieht auf den ersten Blick ja sehr logisch und vielversprechend aus!!

Grüße,
Ben
Benjamecho ist offline   Mit Zitat antworten
Alt 08-03-2004, 15:53   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Hallo nochmal,

irgendwas stimmt da nicht so ganz.
Das Video wird geladen und danach
abgespielt. Ton habe ich auch, aber kein Bild.

Woran kann das liegen?

Grüße,
Ben
Benjamecho ist offline   Mit Zitat antworten
Alt 08-03-2004, 16:20   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Da ist irgendein Fehler drin.

Wenn ich in der Funktion playVideo() das
attachVideo auskommentiere wird dennoch Sound
abgespielt. Der kommt wohl vom stream.play(videoName);
der ersten Funktion.

Wenn die Zeile vid.attachVideo("test.flv"); der Funktion
playVideo() geändert wird zu vid.attachVideo(stream);
dann wird das Video zwar angezeigt (Bild & Ton),
aber es wird nicht preloaded, sondern beim Abspielen
gestreamt.

Grüße,
Ben
Benjamecho ist offline   Mit Zitat antworten
Alt 08-03-2004, 18:42   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
O.k. falls noch jemand mitliest...

Nich im Player eingebettete flv-Dateien auf einer CD scheinen
prinzipiell nicht wirklich zu funktionieren.

Die einfachste Lösung ist wohl swf-Dateien zu erstellen,
in denen die flv eingebettet ist und diese dann per loadMovie
zu laden, so werde ich es jetzt machen.
Habe ziemlich lange mit den flvs rumexperimentiert
und bin leider erst jetzt auf die Idee gekommen.

Grüße,
Ben
Benjamecho ist offline   Mit Zitat antworten
Alt 08-03-2004, 19:12   #8 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
sorry..ich hatte bisher noch nicht die zeit um flv auf cd zu testen...
ist das tatsächlich so?...*staun*...
aber die frage die sich mir stellt ist :'warum sollte ich streamen wollen auf einer offline-produktion[sprich : cd ] ???

das leuchtet mit nicht ein...was denn streamen?...ist doch alles da?!

oder reden wir einander vorbei?


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 08-03-2004, 19:27   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Hi,

nun streamen wollte ich ja gar nicht.
Ich wollte die Videos nur nicht miteinbinden,
da das sonst den Startvorgang der Exe verlangsamt.
Ohne Video hat sie etwa 20MB, das ist schnell geladen,
mit etwa 80-100 MB, das dauert schon etwas länger.
Die Exe fängt nicht an, bevor alles geladen ist.
Also hab' ich die Videos als flv ausgelagert
und musste sie dann wieder an entsprechender Stelle
reinbekommen, mit dem Hinweis 'Video wird geladen'.
Aber eine flv kann man anscheinend nur streamen,
im Gegensatz zu einer swf. Und streamen von CD
ist echt nicht so toll, mein CD-Laufwerk hat anscheinend
Probleme (zum Glück sonst hätt ich's nicht gemerkt)
mit dem Ultra-DMA (heißt doch so, oder?) und beim
nachladen alle paar Sekunden - egal welchen Buffer ich einstelle
- ruckelt das Video kurz. Naja, ne swf kann ich zum Glück
auch ohne Streaming laden, ich kann zwar keinen animierten
Hinweis machen, dann der Film solange stehen bleibt bis es
geladen ist, aber das macht ja nichts.

Grüße,
Ben



P.S. kelor = bort ? Verwirrt zu sein gehört bei mir momentan zum Alltag.
Benjamecho ist offline   Mit Zitat antworten
Alt 09-03-2004, 12:43   #10 (permalink)
0x2b | ~0x2b;
 
Benutzerbild von bort
 
Registriert seit: Jan 2003
Ort: Rocky Beach
Beiträge: 370
Hi,

also erstmal: kelor != bort

Bzgl. vid.attachVideo(): ja, es muss natürlich das Stream-Objekt übergeben werden, und nicht der Dateiname. Sorry. Hatte es nach Copy & Paste wohl geändert und nicht bemerkt.

Mein Beispiel war nur als solches gemeint und stellt keine komplette Lösung Deines Problemes dar. Das Problem wird sein, dass ein Netstream.play() das FLV startet - auch wenn es noch nicht geladen ist. Dadurch kommt dann wohl auch das CD-Laufwerk aus dem Tritt, weil es spielt und lädt.

Auf der anderen Seite wundert mich das etwas - hast Du die Platte, von der Du brennst mal vorher defragmentiert? Ansonsten kann es passieren, dass die Daten nicht Zusammenhängend auf der CD geschrieben werden, sondern kreuz & quer verteilt. Zumindest ist das meine Erfahrung.

Probier mal folgendes: unmittelbar nach dem NetStream.play() ein NetStream.pause() aufrufen. Dadurch wird das Video geladen, aber nicht gespielt. Wenn alles geladen ist, rufts Du wieder NetStream.pause() auf.

In der Funktion preloadVideo:
ActionScript:
  1. // neuen Stream erzeugen
  2.         stream = new NetStream(connection);
  3.         stream.setBufferTime(2);
  4.         stream.play(videoName);
  5.         stream.pause(); // NEU!
  6.  

In der Funktion playVideo:
ActionScript:
  1. // Video anzeigen
  2.         stream.seek(0);
  3.         // dem Videoobjekt den "Stream" zuweisen
  4.         vid.attachVideo(stream);
  5. // und los!
  6. stream.pause();
  7.         status_txt.text = "Playing...";

Bzgl. Sound: schau Dir mal MovieClip.attachAudion(stream) in der Doku an.

Gruss,
bort.
__________________
http://www.flexperten.de
bort ist offline   Mit Zitat antworten
Alt 09-03-2004, 16:04   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Hallo Bort,

das mit dem Defragmentieren ist eine gute Idee,
das werde ich vor dem nächsten Brennen mal machen.

Allerdings funktioniert das Streaming auf dem Rechner meiner
Freundin, der viel langsamer ist als meiner,
problemlos. Ich habe öfter das Problem, wenn ich Videos
von CD abspiele (z.B. DIVX), dass es dann ruckelt.
Naja, ich bin wahrscheinlich nicht der einzige mit einem
schlecht konfiguriertem CD-Laufwerk, und unter schlechten
Bedingungen zu testen ist ja eigentlich ganz vernünftig.

Die Pause Variente hört sich gut an, ich komm aber leider
in den nächsten Tagen nicht mehr zum Testen. Die Videos
sind jetzt soweit alle SWF-Dateien und haben schon
Pause, Play und Rewind Buttons integriert.

Es gibt noch viele andere Probleme die bis nächster
Woche zur Präsentation gelöst sein müssen.

Danke und viele Grüße,

Ben
Benjamecho ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele