Beschreibung
PlayMP3 ermöglicht das Einbinden des EMFF Players. Mit diesem Flash Player ist es möglich MP3 Audiodateien so in Mediawiki Projekte einzubinden das die Dateien ohne externen Player abgespielt werden können.
Einsatz
Befehl
Um eine MP3 Datei abzuspielen wird das Tag <playmp3> benutzt.
<playmp3>ONeill.mp3,Sga_opening_s1.mp3</playmp3>
<playmp3>ONeill.mp3,Sga_opening_s1.mp3</playmp3>
Dateien
Die Dateien werden einfach innerhalb des Tags angegeben. Sollen mehrere Dateien nacheinander abgespielt werden so können diese einfach durch ein Komma getrennt angegeben werden. Der benutze FlashPlayer kann nur MP3's richtig abspielen die mit 44100 Hz aufgenommen wurden EMFF-FAQ.
Parameter
- autostart - Der Player startet automatisch mit der ersten Datei
- autoload - Die erste Datei wird sofort eingelsen
- repeat - Der Player wiederholt die Dateien
- shuffle - Die Dateien werden in zufälliger Reihenfolge abgespielt
- groupname="name" - Ordnet den Player einer Gruppe zu. Nur ein Player einer Gruppe kann aktiv sein
- volume=0..100 - Anfangs Lautstärke
- balance=-100..100 - Rechts / Links - Verteilung des Tons
- skin="name" - Auswahl des Playersskins. Mögliche Werte:
- easy_glaze, easy_glaze_small, position_blue, old, old_noborder, lila, lila_info, silk_button, silk, wooden, stuttgart, standard
<playmp3 skin="name" autostart repeat shuffle>datei1.mp3,datei2.mp3</playmp3>
Skins Übersicht
| easy_glaze | easy_glaze_small | old | old_noborder |
|---|---|---|---|
| <playmp3 skin="easy_glaze" groupname="sg">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="easy_glaze_small" groupname="sg">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="old">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="old_noborder">Captain Samantha Carter.mp3</playmp3> |
| lila | lila_info | silk Vorlage:Aussprache |
silk_button Vorlage:Audio |
| <playmp3 skin="lila">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="lila_info">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="silk">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="silk_button">Captain Samantha Carter.mp3</playmp3> |
| position_blue | wooden | stuttgart | standart |
| <playmp3 skin="position_blue">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="wooden">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="stuttgart">Captain Samantha Carter.mp3</playmp3> | <playmp3 skin="standard">Captain Samantha Carter.mp3</playmp3> |
Probleme, Ideen
- Aktuell kann die Erweiterung nur eine einzelne Datei verarbeiten. Die nächste Version wird auch mehrere Dateien als Playliste verarbeiten (hoffentlich).
- Nicht alle möglichen Fehler werden behandelt. Nicht vorhandene Dateien werden einfach ignoriert.
- Variablen {{{1}}} werden nicht ersetzt. In Vorlagen sollte die Erweiterung daher so benutzt werden: {{#tag:playmp3|Datei|Parameter1|Parameter2...}}
- Probleme wenn </playmp3> fehlt
Copyright
Die Erweiterung unterliegt der GPL (Version 2). Das bedeutet der Einsatz in anderen MediaWikis ist erlaubt solange der Hinweis auf den Author und die GPL erhalten bleibt. Dazu genügt, in diesem Falle, bereits der von der Erweiterung selbst erzeugte Link auf der System Seite Spezial:Version. Natürlich kann die Erweiterung auch in anderen System benutzt werden, unter Beachtung der GPL.
Über einen kleinen Hinweis (auf der Diskussionsseite) in welchem Wiki die Erweiterung eingesetzt wird würde ich mich freuen, ist aber keine Pflicht.
Installation
Erweiterung
- Erzeuge ein neues Verzeichnis EMFF im extensions Verzeichnis.
- In dem neuen Verzeichnis den unten angegebenen Code in die Datei player.php speichern.
- An das Ende der Datei LocalSettings.php die folgende Zeile anfügen
require_once("$IP/extensions/EMFF/player.php");
EMFF
- Das aktuelle Paket des Players von der Homepage holen.
- Das Archiv entpacken und die *.swf Dateien aus dem Verzeichnis skins in das Verzeichnis der Erweiterung (extensions/EMFF) kopieren.
Code
<?php
if(!defined('MEDIAWIKI')) die();
/**
* player Extension by René Raule to embed a flash player with mp3-files
* http://www.stargate-wiki.de/index.php/Benutzer:Rene/PlayMP3
*
* This extension uses the Audio Player EMFF plugin from Marc Reicheltt
*
* http://emff.sourceforge.net
*
* Tag :
* <playmp3 skin="name" autostart repeat shuffle>mp3</playmp3>
*
* Example:
* <playmp3>music.mp3</playmp3>
*/
$wgExtensionFunctions[] = 'wfPlayMP3';
$wgExtensionCredits['parserhook'][] = array(
'name' => 'PlayMP3',
'description' => 'Plays mp3-files in an embedded Flash-player',
'author' => 'René Raule',
'url' => 'http://www.stargate-wiki.de/index.php/Benutzer:Rene/PlayMP3',
'version' => 'v0.2'
);
// Parameters
define("SKIN","silk_button");
define("EXPATH","/extensions/EMFF");
define("DEFPARA","&groupname=sg");
// Init
function wfPlayMP3() {
global $wgParser;
$wgParser->setHook('playmp3', 'renderPlayMP3');
}
// The callback function for converting the input text to HTML output
function renderPlayMP3($input, $args) {
global $wgScriptPath;
$player= array(
'easy_glaze'=>array('name'=>'emff_easy_glaze.swf','width'=>32,'height'=>32),
'easy_glaze_small'=>array('name'=>'emff_easy_glaze_small.swf','width'=>22,'height'=>22),
'position_blue'=>array('name'=>'emff_position_blue.swf','width'=>100,'height'=>50),
'old'=>array('name'=>'emff_old.swf','width'=>120,'height'=>55),
'old_noborder'=>array('name'=>'emff_old_noborder.swf','width'=>91,'height'=>25),
'lila'=>array('name'=>'emff_lila.swf','width'=>200,'height'=>55),
'lila_info'=>array('name'=>'emff_lila_info.swf','width'=>200,'height'=>55),
'silk_button'=>array('name'=>'emff_silk_button.swf','width'=>16,'height'=>16),
'silk'=>array('name'=>'emff_silk.swf','width'=>84,'height'=>32),
'wooden'=>array('name'=>'emff_wooden.swf','width'=>120,'height'=>60),
'stuttgart'=>array('name'=>'emff_stuttgart.swf','width'=>140,'height'=>30)
);
$parameters = array('autostart'=>'autostart=yes','repeat'=>'repeat=yes','shuffle'=>'shuffle=yes');
$add = '&';
$file_path = $wgScriptPath.EXPATH;
$player_path = $wgScriptPath.EXPATH.'/';
$params = explode("|", htmlspecialchars($input));
$files = explode(",", array_shift($params));
// Create playlist if more then one file
if(count($files) > 1) {
// TODO: create playlist
$play_name = getMP3Title($files[0]);
} else {
$play_name = getMP3Title($files[0]);
}
// Use default skin if no skin defined
if(!isset($args['skin'])) {
$args['skin'] = SKIN;
}
// Use default skin if wrong skinname
if(!isset($player[$args['skin']])) {
$args['skin'] = SKIN;
}
// copy skin parameters
$player_name = $player[$args['skin']]['name'];
$player_width = $player[$args['skin']]['width'];
$player_height = $player[$args['skin']]['height'];
// player parameters
$player_para = DEFPARA;
foreach($parameters as $key => $value) {
if(isset($args[$key])) {
$player_para .= $add.$value;
}
}
// generate code
$output = '<object type="application/x-shockwave-flash" data="';
$output .= $player_path.$player_name.'" width="';
$output .= $player_width.'" height="';
$output .= $player_height.'">';
$output .= '<param name="movie" value="';
$output .= $player_path.$player_name.'" />';
$output .= '<param name="FlashVars" value="src=';
$output .= $play_name.$player_para.'" />';
$output .= "</object>\n";
return $output;
}
// Get Wiki URL - TODO: does not work with parametrs {{{}}}
function getMP3Title($file) {
if(!$title = Title::makeTitleSafe("Image",$file)) {
return '';
}
$img = new Image($title);
$path = $img->getViewURL(false);
return $path;
}