Flashvideo per XML File einladen

intercorni

Erfahrenes Mitglied
Hallo,

ich versuche gerade erfolglos, ein Video-Objekt an ein XML Dokument anzubinden,sodass die im XML File eingetragenen Video (bzw. ein Video) geladen wird.
Wenn ich mir per Trace die Pfade zu den Video ausgeben lasse, die sich in der XML Datei befinden, werden die Pfade auch korrekt angezeigt. Jedoch bekomme ich das Video nicht zum abspielen bewegt.
Die XML-Datei:
PHP:
<xml>
    <programme videopath="rtmpt://xx.xxx.x.xxx/test">
        <programm videofile="podcast/test" />
    </programme>
</xml>

my_video ist hier das Videoobjekt. Ein Ausgeben der Pfade zeigt diese völlig io an: trace("link:" + link); trace("pfadlink:" + pfadlink);

Stimmt den diese Definition nicht: connection.connect(pfadlink); ?

Gruss,

Cornel

Und das AS:

PHP:
playstate = true; 
var videoPlaylistxml:XML = new XML(); 
videoPlaylistxml.ignoreWhite = true; 
videoPlaylistxml.onLoad = function(success) {     
    if (success) playVid(0);     
    else trace("Error loading XML file"); 
    }; 
    
videoPlaylistxml.load("xmlTest.xml"); 
function playVid(num:Number):Void{ 
var pfadlink:String = videoPlaylistxml.firstChild.childNodes[0].attributes.videopath; 
var link:String = videoPlaylistxml.firstChild.childNodes[0].childNodes[0].attributes.videofile;
trace("link:" + link); 
trace("pfadlink:" + pfadlink); 
}

//

var globalVolume:Sound = new Sound(); 
var connection:NetConnection = new NetConnection(); 
connection.connect(pfadlink); 
var stream:NetStream = new NetStream(connection); 
my_video.attachVideo(stream); 
stream.setBufferTime(0); 
stream.play(link);
 
Wenn ich die per XML eingelesenen Links direkt in eine Variable setze, funktioniert es komischerweise:

PHP:
playstate = true; 
var videoPlaylistxml:XML = new XML(); 
videoPlaylistxml.ignoreWhite = true; 
videoPlaylistxml.onLoad = function(success) {     
	if (success) playVid(0);     
	else trace("Error loading XML file"); 
	}; 
	
videoPlaylistxml.load("xmlTest.xml"); 
function playVid(num:Number):Void{ 
//var path:String = videoPlaylistxml.firstChild.childNodes[0].attributes.videopath; 
//var link:String = videoPlaylistxml.firstChild.childNodes[0].childNodes[0].attributes.videofile;

//trace("pfadlink:" + path); 
//trace("link:" + link); 
}

//

var globalVolume:Sound = new Sound(); 
var connection:NetConnection = new NetConnection(); 
var path =	"rtmpt://xx.xxx.x.xxx/test";//zum Testen
var link =	"podcast/test";//zum Testen 
connection.connect(path); 
var stream:NetStream = new NetStream(connection); 
my_video.attachVideo(stream); 
stream.setBufferTime(0); 
stream.play(link);

Blos warum nimmt er die Daten denn nicht auch aus dem XML-File. Sind doch absolut identisch?
 
Danke für den Tipp, ich habs jetzt mal so umgebaut, was jedoch auch nicht funktioniert:

PHP:
playstate = true; 
var videoPlaylistxml:XML = new XML(); 
videoPlaylistxml.ignoreWhite = true; 
videoPlaylistxml.onLoad = function(success) {     
	if (success) {
	playVid(0); 
	function playVid(num:Number):Void{ 
		var path:String = videoPlaylistxml.firstChild.childNodes[0].attributes.videopath; 
		var link:String = videoPlaylistxml.firstChild.childNodes[0].childNodes[0].attributes.videofile;

		trace("pfadlink:" + path); 
		trace("link:" + link); 
		var globalVolume:Sound = new Sound(); 
		var connection:NetConnection = new NetConnection(); 
		connection.connect(path); 
		var stream:NetStream = new NetStream(connection); 
		my_video.attachVideo(stream); 
		stream.setBufferTime(0); 
		stream.play(link);
		}
	}
	else trace("Error loading XML file"); 
	}; 
	
videoPlaylistxml.load("xmlTest.xml");
Jetzt sollten doch eigentlich die Variablen erst definiert werden, nachdem die XML Datei geladen wurde?

Gruss,

Cornel
 
Also ich hätte es so formatiert habe mal alles was nicht benutzt wird auch gelöscht.

Code:
var path;
var link;

var videoPlaylistxml:XML = new XML(); 
videoPlaylistxml.ignoreWhite = true; 
videoPlaylistxml.onLoad = function(success) {     
    if (success){
		parseXML();
    	playVid(); 
	}else{
		trace("Error loading XML file"); 
    };
}  
videoPlaylistxml.load("xml.xml");      

function parseXML(){ 
	path = videoPlaylistxml.firstChild.childNodes[0].attributes.videopath; 
	link = videoPlaylistxml.firstChild.childNodes[0].childNodes[0].attributes.videofile;
}

function playVid(){ 
	var connection:NetConnection = new NetConnection(); 
	connection.connect(path); 
	var stream:NetStream = new NetStream(connection); 
	my_video.attachVideo(stream);
	stream.play(link);
}

Ob das nun Funktioniert weiß ich nicht da ich noch nie etwas in der Art gemacht habe.
Allerdings ist mir aufgefallen das in bei stream.play(link); auch der name zu der flv sein muss zB video.flv

Am besten schaust du den Befehle connect() mal in der Hilfe nach. Dort steht es erklärt wie es funktioniert weiß aber nicht ob das auch für dieses rtmpt:// gilt
 
leider funktioniert das so auch nicht. Irgendwie wird die Netconnection nicht innerhalb der function aufgerufen. Blos warum nicht?

PHP:
var path;
var link;

var videoPlaylistxml:XML = new XML(); 
videoPlaylistxml.ignoreWhite = true; 
videoPlaylistxml.onLoad = function(success) {     
    if (success){
		trace("loading XML file success"); 
		parseXML();
    	playVid(); 
	}else{
		trace("Error loading XML file"); 
    };
}  
videoPlaylistxml.load("xmlTest.xml");      

function parseXML(){ 
	trace("parseXML"); 
	path = videoPlaylistxml.firstChild.childNodes[0].attributes.videopath;
	link = videoPlaylistxml.firstChild.childNodes[0].childNodes[0].attributes.videofile;
	trace("parse path:" + path)
	trace("parse path:" + link)
 
}

function playVid(){ 
	trace("playVid:" + path + link)
	var connection:NetConnection = new NetConnection(); 
	connection.connect(path); 
	var stream:NetStream = new NetStream(connection); 
	my_video.attachVideo(stream);
	stream.play(link);
}
 
Ich habe nochmal neu gescriptet, wobei ich connection.connect erstmal als fixen Wert gesetzt habe. Jetzt funktioniert es. connection.connect soll er natürlich auch aus dem XML File beziehen. Lege ich jedoch den NetConnection Aufruf in die function playVid, so spielt er das Video auch mit dem gefixten Wert nicht ab. Kann denn die NetConnection nicht innerhalb einer function aufgerufen werden?

PHP:
	var globalVolume:Sound = new Sound();
	var connection:NetConnection = new NetConnection();
	connection.connect("rtmpt://xx.xxx.x.xxx/test");
	var stream:NetStream = new NetStream(connection);
	my_video.attachVideo(stream);
	stream.setBufferTime(0);
	playstate = true;


var videoPlaylistxml:XML = new XML();
videoPlaylistxml.ignoreWhite = true;

videoPlaylistxml.onLoad = function(success) {
    if (success) playVid(0);
    else trace("Error loading XML file");
};

videoPlaylistxml.load("xmlTest.xml");

function playVid(num:Number):Void{
	var pfad:String = videoPlaylistxml.firstChild.childNodes[0].attributes.videopath; 
	var link:String = videoPlaylistxml.firstChild.childNodes[0].childNodes[0].attributes.videofile;
	trace(link);
	trace(pfad);
	//
	
	//
	stream.play(link);
 
also was man mal schauen könnte wie inder Flashhilfe steht ob die Funktion connect() auch was zurückgibt. Oder ob es and der verbindung liegt

Rückgabewerte
Boolean - false bedeutet, dass die Verbindung fehlgeschlagen und nicht verwendbar ist. true bedeutet, dass die Verbindung zum Zeitpunkt des Aufrufs von connect() zwar nicht fehlgeschlagen war, doch ein Erfolg dadurch nicht garantiert ist.
 
Es liegt definitiv daran, dass die Netconnection über eine function aufgerufen wird. Dann funktioniert es nämlich nicht, so wie hier:

PHP:
var videoPlaylistxml:XML = new XML();
videoPlaylistxml.ignoreWhite = true;

videoPlaylistxml.onLoad = function(success) {
    if (success) playVid(0);
    else trace("Error loading XML file");
};

videoPlaylistxml.load("xmlTest.xml");

function playVid(num:Number):Void{
	trace("playVid");
	var pfad:String = videoPlaylistxml.firstChild.childNodes[0].attributes.videopath; 
	var link:String = videoPlaylistxml.firstChild.childNodes[0].childNodes[0].attributes.videofile;
	trace(link);
	trace(pfad);
	//
	
	//
	var globalVolume:Sound = new Sound();
	var connection:NetConnection = new NetConnection();
	connection.connect("rtmpt://xx.xxx.x.xxx/test");
	var stream:NetStream = new NetStream(connection);
	my_video.attachVideo(stream);
	stream.setBufferTime(0);
	playstate = true;
	stream.play("podcast/test");
}

Es muss doch eine Lösung dafür geben?
 
Also ich habe mir gerade die NetConnection() durchgelesen und dies kann sicher nicht sein das es daranliegt das es in einer Funktion aufgerufen wird
http://livedocs.adobe.com/fms/2/doc...htm?context=LiveDocs_Parts&file=00000740.html

Was mich interresieren würde. Funktioniert dies?

Code:
var path;
var link;

function connectNet(){ 
    var connection:NetConnection = new NetConnection(); 
    connection.connect(path); 
    var stream:NetStream = new NetStream(connection); 
    my_video.attachVideo("rtmpt://xx.xxx.x.xxx/test");
}

connectNet();

var videoPlaylistxml:XML = new XML(); 
videoPlaylistxml.ignoreWhite = true; 
videoPlaylistxml.onLoad = function(success) {     
    if (success){
        trace("loading XML file success"); 
        parseXML();
        playVid(); 
    }else{
        trace("Error loading XML file"); 
    };
}  
videoPlaylistxml.load("xmlTest.xml");      

function parseXML(){ 
    path = videoPlaylistxml.firstChild.childNodes[0].attributes.videopath;
    link = videoPlaylistxml.firstChild.childNodes[0].childNodes[0].attributes.videofile;
}

function playVid(){ 
    stream.play(link);
}
 

Neue Beiträge

Zurück