Sound im WebFront

Ich wollte gerade für meinen Fritz AB die Funktion „Neueste Nachricht abspielen“ ins WF einbauen. Da fiel mir auf mit MediaPlayer geht das im WF ja nur dann, wenn auf dem Rechner auf dem der Browser läuft auch IPS läuft.

Das ist bei mir aber nicht der Fall. Das WF läuft mit Absicht remote und an mehreren Rechnern.

Frage: Wie kriege ich denn den Sound ins WebFront (in den Rechner mit Browser)???

Gruß Steve

Du könntest die Soundfiles auf einem Netwerklaufwerk ablegen und das dann als Basis für den lokalen Windows-Mediaplayer nutzen.

Ok über ein Netzlaufwerk sichtbar machen würde gehen. Aber wie bringe ich im WebFront den Browser denn dazu das abzuspielen?

Ich will ja nicht in das Javascript Dickicht von WebFront eingreifen, um ein WAV abspielen zu lassen …

gruss stefan

Schau mal hier: Playing Sounds in Browser

Wäre super wenn du kurz Feedback geben würdest.

Danke Spaceguy, aber das ist nicht das Problem, Google liefert genügend Treffer wie man sowas grundsätzlich macht.

Die Frage ist für mich eher: wie baue ich einen Button im WebFront (wie für ein Script) der einen Sound abspielt?

Geht das zum Beispiel schon mit dem HTML Profil für eine Variable? Wenn ich da dann HTML reinpacke welches den Sound abspielt?

Hab jetzt ne Lösung gebaut:


<?

setlocale (LC_TIME, 'de_DE');

$server = "ftp://192.168.178.1/TOSHIBA-TransMemory-01/FRITZ/voicebox/rec/";
$files = scandir( $server, 0 );

$formerindex = GetValue(24722 /*[Telefon\.LastKnownIndex]*/);

$i = 0;
$lastindex = 0;
for( ; $i < count ($files); $i++ ) {
    if( strncmp( $files[$i], "rec.0.", 6 ) == 0 ) { $lastindex++; }
}
$lastindex--;
SetValue(24722 /*[Telefon\.LastKnownIndex]*/, $lastindex );

SetValue(41550 /*[Telefon\Anrufe]*/ , getLastCalls( $lastindex, 5 )  );

function getLastCalls( $last, $number ) {
    $result = "<form><table cellpadding='10'>";
    for( $i = $last - $number; $i <= $last; $i++ ) {
        $result = $result . getCall( $i );
    }
    return $result . "</table></form>";
}

function getCall( $index ) {

    global $server, $formerindex;

    $filename = sprintf("rec.0.%03d", $index );
    //echo $lastindex, $filename

    $localfilename = "C:/IP-Symcon/webfront/user/".$filename.".wav";

    if( !file_exists($localfilename) ) {
        $ftpfile = $server . $filename;
        $source = "/TOSHIBA-TransMemory-01/FRITZ/voicebox/rec/$filename";
        $target =  fopen("C:/anrufb.fritz", "w");

        $conn = ftp_connect("192.168.178.1");
        ftp_login($conn,"x","x");
        ftp_chdir($conn,"/TOSHIBA-TransMemory-01/FRITZ/voicebox/rec/");
        $moddate = ftp_mdtm($conn,$filename);
        
        ftp_fget($conn,$target,$source,FTP_BINARY);
        ftp_close($conn);

        IPS_Execute("C:\dec.exe", "C:\anrufb.fritz ".$localfilename, false, true);
        touch( $localfilename, $moddate );
    } else {
       $moddate = filemtime( $localfilename );
    }
    $str = '<tr><td><embed src="/user/'.$filename.'.wav" autostart=false width=0 height=0 name="sound'.$index.'" enablejavascript="true">';
    $str = $str . ($index > $formerindex ? "NEU " : "") . strftime("%d.%m.%Y %H:%M:%S",$moddate) . '</td><td align="left"><input type="button" value="Abspielen" onClick="document.sound'.$index.'.Play()"/></td></tr>';
    return $str;
}
?>

Dieses Script nutze ich zusammen mit der Anrufliste von P. es wird also in einer ~HTMLBox abwechselnd die Anruferliste oder die Sprachnachrichten angezeigt. Ausserdem merkt sich das Skript in einer zweiten Var den höchsten Index, der beim letzten
Mal gelesen wurde und markiert alle, die dazu gekommen sind als neu.

Diese zwei Variabeln müssen also vorhanden sein (Referenzen anpassen).

Die Sprachnachrichten werden per FTP runtergeladen, konvertierung und direkt in <IPS>/webfront/user gespeichert und von dort dann auch im HTML referenziert.

Wers nutzen will muss auf die Pfade achten / anpassen. Bei Interesse kommentier ich das noch etwas besser.

Ach ja bevor ichs vergesse, damit das <embed> tag funktioniert, muss ein passendes Plugin aktiv sein (z.B. QuickTime) sonst hört man nix.

gruss steve

PS: vielleicht hat ja jemand Lust das HTML etwas aufzumotzen (bin kein HTML-Künstler), die Buttons sehen nämlich echt suboptimal aus.

Hallo Leute,

auch ich versuche mich gerade in einer optimierten AB-Darstellung, eigentlich eher ein „Best of“ von dem was hier im Forum gepostet wurde…:wink:

Auch ich bin jetzt auf das Problem mit dem Abspielen der Sounddatei gestossen. Die Lösung von Steve wird ja „nur“ im lokalen Netzwerk funkionieren, ich versuche es so hinzubekommen, das man die Nachricht auch aus dem www abhören kann…

Welche Lösung für das Abspielen im Webfront wird von Euch favorisiert bzw. vielleicht an andere Stelle genutzt?

Joachim

Da liegst Du falsch, funktioniert wunderbar aus dem Netz. Nur IPS muss natürlich im lokalen Netz laufen :wink:

Die Sounddatei selbst wird ja vom WebFront Webserver verschickt.

Gruss Steve

  1. …na, dann nehme ich alles zurück und behaupte das Gegenteil! :wink:

  2. …und Dein Code kommt dann mit in das „Best Of“! :slight_smile:

Welche „passenden“ Plugins funktionierenden denn? Funktioniert auch der MS Media Player?

Joachim

Auch MS Media Player müßte gehen. Ich verwende Quicktime Alternative. RealAudio Plugin sollte auch gehen.

Mach einfach mal einen Test, oder consultier Google, die wissen alles …

Alternative sind auch Lösungen mit Flash denkbar. Da gibt es den SoundManager 2. Dann mußt Du aber den Code anpassen.

Ich verwende inzwischen auch schon einen etwas veränderten Code, da ich manchmal Probleme mit dem Laden der Sounds hatte, wenn ich 5 Sound in der
gleichen Seite instanziiere. Hängt vielleicht mit dem IPS Webserver zusammen??

Gruß Steve

Hall Steve,

ich habe da noch mal eine Frage zu Deinem Code:

$str = '<tr><td><embed src="/user/Fritzbox/Test.wav" autostart=false width=0 height=0 name="sound" enablejavascript="true">';
$str = $str . ("NEU ") . '</td><td align="left"><input type="button" value="Abspielen" onClick="document.sound.Play()"/></td></tr>';

erzeugt den Button und bei „onClick“ wird die Wave-Datei abgespielt.

Ich würde ihn gerne so umstellen, das er beim Durchlaufen der Schleife (automatisch) abgespielt wird:

elseif ($Auswahl == 1) //Abspielen
{
//Ausgewählte Datei abspielen
}

Weißt Du (oder jemand anderes;)) wie das aussehen müsste?

Joachim

hi joachim,

dann musst du halt für dieses eine embed tag autoplay auf true setzen.

gruss steve

Hallo Steve,

ich komme damit aber noch nicht wirklich zurecht…:frowning:
(Meine Erfahrungen sind auf diesem Gebiet „Sound“ auch fast „0“)

Ich habe versuchsweise mal folgendes probiert:

$str = '<tr><td><embed src="/user/Fritzbox/Test.wav" autostart=true name="sound" enablejavascript="true">';
SetValueString(36221 /*[Sonstige Daten\Testobjekte\Entwicklung AB Abfrage\TestBox]*/ , $str);

Wenn ich die ensprechende Taste anklicke, wird die Testdatei abgespielt, aber:

  • die HTMLTextbox muss sichbar sein, was mir nicht gefällt
  • ich habe keine Ahnung ob und wie ich die Dateiwiedergabe ggf. auch stoppen könnte (bevor die Datei bis zum Ende durchgelaufen ist)
  • beim Laden der Website wird die Datei auch schon abgespielt, was auch nicht so gedacht ist…

Irgendwie bin ich noch nicht so ganz glücklich…:wink:

Joachim

Also wenn das autostart gesetzt ist, dann wird immer gleich gespielt. Wenn Du das nicht willst, dann kannst Du z.B. zu Anfang einen Dummy Sound setzen den man nicht hört. Später kann man dann per JavaScript das SRC-Attribut ändern.

Etwa so: document.sound.src="/jetzt/aber/mit/Sound.wav".

Dass das nur abgespielt wird, wenn die Seite auch sichtbar ist liegt am Browser, der „rendert“ die Seiteninhalte eben nur, wenn sie auch sichtbar sind.

Wenn Du das ändern willst mußt Du es evtl. auf andere Weise ins WebFront einbetten, nicht mit einer HTML-Box, sondern als eigene Seite oder als iframe.

Stoppen läßt sich die Wiedergabe per Javascript: „document.sound.stop()“. Schau mal hier nach JavaScript: Playing Sound

Hallo Steve,

vielen Dank noch mal für die Infos und den Link.

Ich finde jedoch keine für mich befriedigende Lösung. Ich habe so einiges jetzt probiert, aber das erste was mich an einer zufriedenstellende Lösung hindert, ist, das ich es ohne sichtbare HTMLBox kein Ton (an einem anderen PC) herausbekomme. Mag sein, dass es da andere Lösungen gibt, ich bekomme es aber nicht hin.
Die Funktion jedoch bei Klick auf den Webfront-Button eine Wave-Datei abzuspielen wäre für mich grundlegend wichtig. Orientiert habe ich mich dabei an der optischen Umsetzung wie in diesem Thread http://www.ip-symcon.de/forum/f39/fritz-card-ab-ip-symcon-v2-2-a-10246/.

Joachim

Wie schon erwähnt, das mag damit zusammenhängen, dass die Standard-Sichten des WebFront das nicht anders zulassen. Eine komplett eigene Seite ist da sicher flexibler, aber da mußt Du mit entsprechendem HTML / JS Knowhow eben was zusammen bauen, was Deinen Anforderungen genügt.

Gruß Steve