Zurück   Flashforum > Software > Video

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-11-2008, 12:35   #1 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
cuepoints dynamisch setzen und auslesen

Habe überall gesucht, wie man bei einem dynamisch geladenen video cuepoints setzen und auslesen kann, bin aber nicht fündig geworden.

Ich versuche folgendes (AS2)
Code:
// Create a NetConnection object
var my_nc:NetConnection = new NetConnection();
// Create a local streaming connection
my_nc.connect(null);
// Create a NetStream object and define an onStatus() function
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";
};
// Attach the NetStream video feed to the Video object
my_video.attachVideo(my_ns);
// Set the buffer time
my_ns.setBufferTime(5);



// adding cuepoints
my_video.addASCuePoint(2, "ASpt2"); 

// cuepoints auslesen
var listenerObject:Object = new Object(); 
listenerObject.cuePoint = function(eventObject:Object):Void { 
	// dieser code wird ausgeführt sobald die 2 sekunden erreicht wurden 
	trace("Elapsed time in seconds: " + my_video.playheadTime); 
    trace("Cue point name is: " + eventObject.info.name); 
    trace("Cue point type is: " + eventObject.info.type); 
} 
my_video.addEventListener("cuePoint", listenerObject);  

// Begin playing the FLV file
my_ns.play("testfilm.mov");
Video spielt, cuepoints werden aber nicht angezeigt.
zeroval ist offline   Mit Zitat antworten
Alt 07-11-2008, 13:19   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Wenn ich das in der Flash-Hilfe richtig verstanden habe, funzt addASCuePoint und der Listener nur mit der FLVPlayback-Komponente. Wenn du mit der NetStream-Klasse arbeiten willst, solltest du die Cuepoints direkt ins Video setzen und dann über den NetStream.onMetaData auslesen.
  Mit Zitat antworten
Alt 08-11-2008, 08:25   #3 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Hi Holger, danke für die Antwort. Das frustriert mich ein wenig, denn die Filme sind allesamt h.264 codiert und somit kann ich keine cuepoints setzen. Gibt es denn keine Möglichkeit, die Cuepoints nachträglich zu generieren?
zeroval ist offline   Mit Zitat antworten
Alt 08-11-2008, 18:39   #4 (permalink)
reXcel
 
Benutzerbild von Sören
 
Registriert seit: Aug 2002
Ort: Herford
Beiträge: 4.774
Hi,
ein komplizierter Weg wäre über eine direkte Dateimanipulation (serverseitig) denkbar. Da die CuePoints in den MetaDaten am Anfang der Datei enthalten sein können, kann man hier die Datei binär öffnen, einen Part einfügen und die Datei dann passend machen... aber letztlich sind CuePoints ja lediglich Variablen in der Datei (MetaDaten) welche sich auf bestimmte Positionen im Video beziehen. Ich bin generell kein Freund hiervon. Ich halte es für die meisten Anwendungsfälle für besser, wenn solche Videobezogenen Daten nicht in der Datei liegen, sondern serverseitig in einer Datenbank. Nur so ist ein dynamisches Arbeiten mit diesen Daten möglich... wie du ja gerade bemerkst.

Eine Alternative wäre die Verwendung von einem Streamingserver. FMIS oder Wowza. Hiermit kann man die Videodateien ohne probleme Manipulieren und sogar in Echtzeit während ein Video gestreamt wird jederzeit neue MetaDaten nach injezieren. Das ist ein ziemlich mächtiges Werkzeug. Allerdings wird ein Streamingserver benötigt, was nunmal neben vielen Vorteilen auch Kosten mit sich bringt.
__________________
iPhone, iPad, Android und Flash Video Streamingserver
Streaming & Live-Streaming für Flash, iPhone, iPad, iPod touch und Android.
Inkl. Player, Videokonvertierung in optimierte Formate, Playercode, Flexplayer, etc...
Sören ist offline   Mit Zitat antworten
Alt 09-11-2008, 11:47   #5 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Viel einfacher. Hab ich nicht kapiert vorhin: Ich kann ja auch mit einer FLVPlayback-Instanz arbeiten und trotzdem per ActionScript die Timeline kontrollieren (FLVPlayback.play() und so). Dies nun der Code:
Code:
my_video.bufferTime = 10;
my_video.autoPlay = false;
my_video.contentPath = "testfilm.mp4";

// adding cuepoints
my_video.addASCuePoint(5, "ASpt2"); 
// cuepoints auslesen
var listenerObject:Object = new Object(); 
listenerObject.cuePoint = function(eventObject:Object):Void { 
	// dieser code wird ausgeführt sobald die 2 sekunden erreicht wurden 
	trace("Elapsed time in seconds: " + my_video.playheadTime); 
    trace("Cue point name is: " + eventObject.info.name); 
    trace("Cue point type is: " + eventObject.info.type); 
} 
my_video.addEventListener("cuePoint", listenerObject); 
my_video.play();
Aber danke für die vertiefte Antwort, Stören.
zeroval ist offline   Mit Zitat antworten
Alt 19-11-2008, 12:30   #6 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Wenn ich nun die Zeit bei einem CuePoint länger als 99 Sekunden setzen will (z.b. auf 2 Minuten), dann liest er überhaupt keinen cuePoint mehr aus. Gibt es eine andere Schreibweise, um über 99 Sekunden hinauszukommen?
Danke.
zeroval ist offline   Mit Zitat antworten
Alt 21-11-2008, 17:14   #7 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
[/CODE]

Aber danke für die vertiefte Antwort, Stören.[/QUOTE]

Au, sorry, Sören.
zeroval ist offline   Mit Zitat antworten
Alt 21-11-2008, 17:38   #8 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Also das funktioniert doch: ein CuePoint per ActionScript zum Flash-Video hinzugefügt:

Code:
plbk.bufferTime = 0.1;
plbk.contentPath = "film.mp4";

plbk.addASCuePoint(1, "Cue 1");
plbk.addASCuePoint(3, "Cue 3");
plbk.addASCuePoint(102, "Cue 102");

var listenerObject:Object = new Object();
listenerObject.cuePoint = function(eventObject:Object):Void { 
	trace("Cue point name is: " + eventObject.info.name); 
}
plbk.addEventListener("cuePoint", listenerObject);
Nur, wenn ich die Daten von einem XML einlese, und ein CuePoint ist über 99 Sekunden angelegt, dann wird kein einziger CuePoint mehr getriggert.
Wasndalos?
zeroval ist offline   Mit Zitat antworten
Alt 21-11-2008, 17:55   #9 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Hier der Code, den ich brauche, um das XML zu verarbeiten:

Code:
plbk.bufferTime = 0.1;
plbk.autoPlay = true;
plbk.contentPath = "film.mp4";

var listenerObject:Object = new Object();
listenerObject.cuePoint = function(eventObject:Object):Void { 
	trace("Cue point name is: " + eventObject.info.name); 
}
plbk.addEventListener("cuePoint", listenerObject); 

cueXML = new XML();
cueXML.ignoreWhite = true;
cueXML.onLoad = function(ok) {
	if (ok) {
		trace("xml geladen");
		for (i = 0; i < cueXML.firstChild.childNodes.length; i++) {
			plbk.addASCuePoint(cueXML.firstChild.childNodes[i].attributes.zeit, cueXML.firstChild.childNodes[i].attributes.id);
		}
	} else {
		trace("lädt noch");
	}
}

cueXML.load("cuepoints.xml");
Wenn ich nun dieses XML füttere, dann funktionieren die Cuepoints:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<cuepoints>
	<einblender id="cue1" zeit="1" />
	<einblender id="cue2" zeit="3" />
	<einblender id="cue3" zeit="99" />
</cuepoints>
Bei diesem jedoch, wird keiner der Cuepoints angezeigt:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<cuepoints>
	<einblender id="cue1" zeit="1" />
	<einblender id="cue2" zeit="3" />
	<einblender id="cue3" zeit="102" />
</cuepoints>
Kann mir jemand helfen? Zero.
zeroval ist offline   Mit Zitat antworten
Alt 21-11-2008, 17:58   #10 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Au Mann! So funktionierts:

Code:
for (i = 0; i < cueXML.firstChild.childNodes.length; i++) {
			plbk.addASCuePoint(Number(cueXML.firstChild.childNodes[i].attributes.zeit), cueXML.firstChild.childNodes[i].attributes.id);
		}
Man muss den XML-Inhalt als Zahl auslesen. Macht mich fertig, dieses Flash. Zero.
zeroval ist offline   Mit Zitat antworten
Alt 29-05-2009, 14:41   #11 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 66
Was ich bis jetzt immer noch nicht kapiert habe und wozu die Antworten in den diversen Threads dieses Forums recht widersprüchliche Angaben liefern, das ist die Frage:

Brauche ich nun eine FLV-Playback-Komponente oder nicht, wenn ich dynamisch mit AS cuePoints setzen will?!

Ich arbeite definitiv ohne Playback-Komponente auf Basis der NetStream-Klasse.
Gibts dazu sowas wie eine finale, verbindliche Ansage?

Ich arbeite mit Flash 8 / AS 2.0.
filigraf ist offline   Mit Zitat antworten
Alt 29-05-2009, 22:31   #12 (permalink)
reXcel
 
Benutzerbild von Sören
 
Registriert seit: Aug 2002
Ort: Herford
Beiträge: 4.774
Die Frage ist, ob es für dich Sinn macht.

Wenn du ohnehin keine Playback Komponente verwendest, warum brauchst du dann CuePoints die du während die Anwendung läuft erzeugen möchtest?

Also als Datenbasis von außen sind CuePoints ja interessant. Also z.B. wenn du die Positionen schon in Premiere beim Videoschnitt setzen kannst. Aber während die Anwendung läuft selber welche hinzufügen???

Es ist doch so: ein CuePoint ist lediglich ein Array. Darin ist z.b. eine Zeitmarke "23. Sekunde" mit dem Wert "hallo" gespeichert. In der Playback Komponente steckt nun die Logik die darus z.B. ein Kapitel "hallo" macht und du kannst mit einem Klick darauf zur 23. Sekunde spulen.
Genauso könnte man es als Untertitel begreifen, der besagt das in der 23 Abspielsekunde der Untertitel "hallo" angezeigt werden soll...

Aber das ist ja alles nichts besonderes. Das kannst du ja mit ein paar Zeilen code in einem eigenen Player jederzeit nachbilden in dem du einfach beständig die video.time mit deiner "CuePoint-Zeitpunkt-Liste" vergleichst.


Immer wieder glauben die Leute "CuePoints" wären etwas ganz besonderes. Es sind aber nur ganz einfache Variablen. "X = yyy". Das kann Flash und auch jede andere Programmiersprache schon immer. Es ist nur die Frage wie deenreich man die Tatsache nutzt, dass in einer Videodatei Metadaten (sprich: cuePoints) stecken können.

Übrigens: in fast jedem Fall ist es besser, wenn man diese Metadaten/Informationen eben NICHT in der Videodatei speichert, sondern serverseitig in der DB. Das hört sich nur nicht so Hipp an
__________________
iPhone, iPad, Android und Flash Video Streamingserver
Streaming & Live-Streaming für Flash, iPhone, iPad, iPod touch und Android.
Inkl. Player, Videokonvertierung in optimierte Formate, Playercode, Flexplayer, etc...
Sören 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 17:35 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele