You are not logged in.

  • Login

1

Wednesday, August 19th 2009, 11:08pm

jw player: text nachladen

Hallo

Ich habe ein Problem:

ich habe JW Player geholt. Jetzt wollte ich dynamisch Links einbinden.

Vorgestellt habe ich es mir so, dass ich bei jedem Klick auf "Play" (über 20 Pro Seite) der Inhalt eines divs mit dem Player neu geladen wird, der schon neue Daten (Link) enthält.
Hierbei habe ich eine Frage und ein Problem:

Problem:

Code ist:

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
<script type='text/javascript' src='content/player/swfobject.js'></script>
	 		<div id='mediaspace'>This text will be replaced</div>
	 		<script type='text/javascript'>
				var so = new SWFObject('content/player/player.swf','mpl','470','20','9');
			  	so.addParam('allowfullscreen','true');
			  	so.addParam('allowscriptaccess','always');
			  	so.addParam('wmode','opaque');
			  	so.addVariable('duration','33');
			  	so.addVariable('file','http://www.longtailvideo.com/jw/upload/bunny.mp3');
			  	so.write('mediaspace');
</script>


wenn ich jetzt das in eine Variable einspeise mit JS, bekomme ich ohne die Funktion gestartet zu haben

Source code

1
2
This text will be replaced
"; } 

(Dieses ist im Code davor drin)

Also es ist so, als ob der Text der Variable von HTML trotzdem interpretiert wird....

so weise ich zu:

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type="text/javascript">
			function Play_mp3(){
				document.getElementById('mp3_player').innerHTML="<script type='text/javascript' src='content/player/swfobject.js'></script>
	 		<div id='mediaspace'>This text will be replaced</div>
	 		<script type='text/javascript'>
				var so = new SWFObject('content/player/player.swf','mpl','470','20','9');
			  	so.addParam('allowfullscreen','true');
			  	so.addParam('allowscriptaccess','always');
			  	so.addParam('wmode','opaque');
			  	so.addVariable('duration','33');
			  	so.addVariable('file','http://www.longtailvideo.com/jw/upload/bunny.mp3');
			  	so.write('mediaspace');
			</script>";
			}
</script>
        <div id="mp3_player">
 
        </div>


habe schon versucht alle < zu escapen (mit \<)

trotzdem passierte nichts, außer dass ein paar \ zu vorschein kamen

Frage:

wenn ich den Inhalt mit JavaScript einfüge, wird es doch nochmal geparst, oder? nicht dass der Code "nicht übernommen" wird^^

Vielen Dank für die Hilfe :)

2

Wednesday, August 19th 2009, 11:54pm

Mist :D

hab das Problem gelöst. Habe vorher die > nicht escaped, nur die < :D

dann war alles weg. Per Javascript will er den Player nicht starten

wenn ich den Inhalt über AJAX einpflanze, ändert sich doch auch nichts, ne? wird ja trotzdem mit JS innerHTML eingelegt...

muss man auf iframes zugreifen? ;(

3

Thursday, August 20th 2009, 5:46pm

du solltest die bibliothek immer einbinden.. also ohne innerhtml etc

HTML Code

1
<script type='text/javascript' src='content/player/swfobject.js'></script>


anschließend musst du nur noch container und swf im funktionsaufruf angeben
z.b. mit einem funktionswrapper

JavaScript Code

1
2
3
4
5
6
7
8
9
function drawClip(swfpath, div) {
	var so = new SWFObject(swfpath,'mpl','470','20','9');
  	so.addParam('allowfullscreen','true');
  	so.addParam('allowscriptaccess','always');
  	so.addParam('wmode','opaque');
  	so.addVariable('duration','33');
  	so.addVariable('file','http://www.longtailvideo.com/jw/upload/bunny.mp3');
  	so.write(div);
}


willst du die divs wirklich dynamisch hinzufügen? Macht in meinen Augen aber keinen Sinn.

JavaScript Code

1
2
3
4
5
6
7
function drawClip(swfpath, div) {
	var elem = document.createElement('div');
	elem.id = div;
	document.getElementById('maindiv').appendChild();
	...
  	so.write(div);
}

4

Thursday, August 20th 2009, 10:13pm

Ich wollte mp3's starten in einen Player ohne die Seite neu laden zu müssen.

Gibts eine einfachere Methode?

div's dynamisch - nein! div soll gleicher bleiben, wollte den Player immer wieder da drinne überschreiben lassen, damit immer aktuell ausgewählter Track drin ist

5

Friday, August 21st 2009, 12:49am

Ich entschuldige mich für 2. Doppelpost hier im Thread....

ich habe es jetzt hinbekommen.

jetzt wäre die nächste Frage: weiß jemand zufällig wie ich eine Playliste für den Player erstelle?

muss man unbedingt eine xml datei schreiben? ist das schwer? wie binde ich die ein?

Edit:

habe gefunden wie die XML datei aussehen muss:

XML Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<feed>
<title>Example ATOM playlist</title>
<entry>
<title>MP3 Audio with thumb</title>
<link rel="alternate" type="text/html" href="http://www.bigbuckbunny.org/"/>
<summary>
Big Buck Bunny is a short animated film by the Blender Institute, part of the Blender Foundation.
</summary>
<media:group>
<media:credit role="author">the Peach Open Movie Project</media:credit>
<media:content url="files/bunny.mp3" type="audio/mpeg"/>
<media:thumbnail url="files/bunny.jpg"/>
</media:group>
</feed>


so. Thumbnail und so kann raus.

Jetzt frage ich nach einem Rat: meint ihr ich soll einfach einen ordner anlegen und für jeden besucher eine XML liste anlegen und sie nach z.b. 24 stunden löschen oder überschreiben?

ich habe es mir so vorgestellt, dass 20 lieder pro seite angezeigt werden und diese auch abgespielt werden. die 20
und wenn der besucher auf seite 2 kommt, werden nächste 20 abgespielt. man könnte natürlich eine xml datei mit dem namen = ip adresse anlegen und danach löschen

hat jemand bessere vorschläge?

PS: Danke d0nut!!

This post has been edited 1 times, last edit by "Koljan777" (Aug 21st 2009, 5:16pm)


6

Saturday, August 22nd 2009, 5:47pm

hat jemand bessere vorschläge?


Na klar, du siehst das viel zu statisch.
Welche Sprachen beherrschst du denn? Du hast ja immerhin ein paar Posts im PHP Forum. Mit PHP kannst du die Playlist doch dynamisch für jeden Benutzer erstellen:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
header ("content-type: text/xml");
if(!isset($_COOKIE['publicid'])) {
	$id = $_COOKIE['publicid'] = uniqid(rand(), true);
	setcookie("publicid", $id, strtotime('+ 1 day'));
} else {
	$id = $_COOKIE['publicid'];
}
?>
<feed>
<title>Example ATOM playlist for user <?=$id?></title>
<?php
// db query
foreach($rows as $entry) {
?>
<entry>
	<title><?=$entry->title?></title>
	<link rel="alternate" type="text/html" href="http://www.bigbuckbunny.org/"/>
	<summary>Big Buck Bunny is a short animated film by the Blender Institute, part of the Blender Foundation.</summary>
	<media:group>
		<media:credit role="author">the Peach Open Movie Project</media:credit>
		<media:content url="files/bunny.mp3" type="audio/mpeg"/>
		<media:thumbnail url="files/bunny.jpg"/>
	</media:group>
	</feed>
</entry>
<?php
}
?>
</feed>

7

Sunday, August 23rd 2009, 4:16pm

Hi d0nut

ich danke Dir vielmals für Deine Hilfe. nun weiter:

Ich beherrsche PHP zum gr0ßen Teil würde ich sagen (3-4 Jahre Erfahrung). Javascript tue ich kennen, aber selten einsetzen, somit ständige rumfragerei :D und AJAX verwende ich nach Muster...

Du meinst jetzt nicht IP als Name, sondern ID als Name verwenden und es aufm Rechner als Cookie hinterlegen. Weil ich meine ich muss ja trotzdem eine XML Datei auf dem Server ablegen, damit das swfobject da raus lesen kann, stimmts? oder kann ich irgendwie in php Datei mit XML rumcoden? (hast ja in deinem Beispiel schon gezeigt, dass es wohl gehen soll)

Dann einmal die nächste Frage, wie sage ich dem Player bescheid, wo er lesen soll? Und kennst du zufällig genau diesen Player und Playlisten? ich wüsste jetzt überhaupt nicht wie ich eine Playlist da einbinden soll. einfach die XML Datei als "file" einbinden?

Gruß, Niko

8

Sunday, August 23rd 2009, 4:42pm

ja, einfach die xml Datei als file einbinden. Und die Datei kann auch ein Pfad zu einer PHP Datei sein:

JavaScript Code

1
so.addVariable('file','http://www.domain.tld/playlist.php');

9

Sunday, August 23rd 2009, 4:53pm

Jetzt hat das Relais in meinem Kopf geschaltet :D

php Datei mit dynamischer Ausgabe von XML Code und diese in den Player rein :D

Danke d0nut, ich versuche es mal zu coden :)

Social bookmarks