Airfoil zur Ausgabe von Audio nutzen, hier Durchsagen

Hallo,

Ich nutze Ips in einer vm auf einem Mac mini. Da ich überall AirPlay Lautsprecher verteilt habe, möchte ich diese natürlich gerne nutzen um Durchsagen zu machen.

Seit ein paar Tagen nehme ich dafür über das SSH Script Kontakt mit dem Host Mac auf und führe dort zuerst ein Apple Script aus, welches über Airfoil die System Audioausgabe auf einen Lautsprecher umleitet. Dann über den Terminal Befehl say liest der Mac vor. Zum Schluss wieder ein Apple Script welches Airfoil beendet.
Funktioniert prinzipiell gut, aber nicht immer. Durch Verzögerungen werden teils Worte abgeschnitten und ich hab schon diverse Pausen eingebaut.

Unbefriedigend.

Jetzt dachte ich mir ich nutze in meinem Ips Win XP System einfach Airfoil für Windows. Da gibt’s auch ein COMAPI. Die beigefügten jscripts laufen auch, aber ich verstehe nichts davon.

http://weblog.rogueamoeba.com/2013/03/02/airfoil-for-windows-3-4-scripting/

Wie stelle ich die Verbindung zwischen Ips und Airfoil her? Über new COM?
Soll ich eine wav erzeugen lassen und die Abspielen. Oder einfach direkt Ips Speech?

Dann müsste ich nur per Script die systemaudioausgabe per Airfoil auf den passenden Lautsprecher umleiten. Ips vorlesen lassen und dann Lautsprecher wieder aus.

Was denkt Ihr?

Sebastian

Also bei mir macht airfoil genau das Gegenteil, nämlich Airplay Audio auf dem Rechner empfangen.

Kann das mittlerweile auch senden?

Na klar, das was Du meinst ist Airfoil Speakers. Ist ein Paket aber 2 Programme.

Hi,

suche immernoch nach einer Lösung für Ansagen über Airplay.

Keiner eine Idee?

Sebastian

Hallo,

antworte mir mal selbst. Habe die Probleme gelöst.
IPS wählt über ein Script den Lautsprecher in Airfoil aus und es erfolgt die Ansage mittels MediaPlayer Instanz. Danach werden die Lautsprecher zeitgesteuert wieder abgewählt.

Bei mir läuft IPS virtuell auf einem Mac. Es ist auch kein Problem zuerst zu checken ob auf dem Mac Itunes spielt und dies zu pausieren und dann wieder einzuschalten.

Ich spare mir jetzt die Sachen alle zu posten. Wenn jemand Fragen dazu hat kann ich gerne helfen.

Sebastian

Hier die Abfrage ob itunes spielt, dann pausieren und wieder einschalten:

<?

 include('Net/SSH2.php');
  $ssh = new Net_SSH2('192.168.1.17'); // IP vom Mac
    if (!$ssh->login('root', 'paswd')) // Anmeldedaten vom Mac
     {
        exit('Login Failed');
     }
  $state = $ssh->exec('osascript state.scpt');
  if ($state == 1)
	 {
     $ssh->exec('osascript pause.scpt');
     $ssh->exec('logout');
     IPS_SetScriptTimer(44700 /*[Durchsagen\Lautsprecher\itunes play]*/  , 30);
	 }

 ?>

In IPS play an Mac schicken:

<?
IPS_SetScriptTimer($IPS_SELF, 0);
include('Net/SSH2.php');
  $ssh = new Net_SSH2('192.168.1.17'); // IP vom Mac
    if (!$ssh->login('root', 'paswd')) // Anmeldedaten vom Mac
     {
        exit('Login Failed');
     }
   $ssh->exec('osascript play.scpt');
   $ssh->exec('logout');

?>

Und hier noch die Apple Scripte, die müssen im Benutzerhauptverzeichnis liegen, oder man passt oben den Pfad an:

state.scpt

tell application "iTunes"
	
	
	if player state is paused then set r1 to "0"
	if player state is not paused then set r1 to "1"
	r1 & ""
	
end tell

pause.scpt

tell application "iTunes" to pause

play.scpt

tell application "iTunes" to play

Da ich es gerade für einen user zusammen geschrieben habe:

airfoil installieren

comapi laden

http://weblog.rogueamoeba.com/2013/03/02/airfoil-for-windows-3-4-scripting/
http://rogueamoeba.com/sources/AirfoilForWindowsCOMAPI.zip

Da ist das Script enumerate speakers dabei. Das zeigt einem dann die zugeordneten Nummern seiner eigenen Speaker an. also ausführen. Nummern merken.

jetzt kann man mit Hilfe der Nummern ein eigenes script schreiben, dieses mit lautsprecherX.js speichern.

var airfoilApp = WScript.CreateObject("RogueAmoeba.Airfoil");
var speakerCollection = airfoilApp.GetSpeakers();

var speaker = speakerCollection.Item(1);


speaker.SetVolume(0.5);
	
		speaker.connect();

ausführen über eine batch datei weil IPS nur so das script ausführt. datei erstellen lautsprecherX.bat, Pfad anpassen

C:\ip-symcon\media\airfoil\lautsprecherX.js

jetzt muss man die lautsprecher wieder deaktivieren. disconnect.js

var airfoilApp = WScript.CreateObject("RogueAmoeba.Airfoil");
var speakerCollection = airfoilApp.GetSpeakers();

for (var i = 0; i < speakerCollection.Count(); i++)
{
	var speaker = speakerCollection.Item(i);
	

	
	speaker.disconnect();

}

und die passende batch Datei disconnect.bat, Pfad anpassen

C:\ip-symcon\media\airfoil\disconnect.js

Jetzt erstmal testen und mit doppelklick die batch dateien starten und dabei airfoil beobachten. Sollte sich jetzt mit dem Lautsprecher verbinden und wieder deaktivieren nach doppelklick auf disconnect.

in IPS siehts dann so aus:

<?

 IPS_ExecuteEx("C:/ip-symcon/media/airfoil/wohnein.bat", "", false, false, 1);
 IPS_ExecuteEx("C:/ip-symcon/media/airfoil/badein.bat", "", false, false, 1);
    IPS_sleep(2000);
    WAC_SetVolume(22553 /*[Durchsagen\Media Player]*/, 100);
    WAC_PlayFile(22553 /*[Durchsagen\Media Player]*/, "C:/ip-symcon/media/wav/buzzHeim.wav");
    IPS_SetScriptTimer(17516 /*[Durchsagen\Lautsprecher\Airfoil aus]*/  , 7);

?>

Am Schluss wird also ein anderes Script gestartet mit zeitverzögerung von 7 Sekunden. Dort werden die Lautsprecher deaktiviert.

<?
IPS_SetScriptTimer($IPS_SELF, 0);
IPS_ExecuteEx("C:/ip-symcon/media/airfoil/aus.bat", "", false, false, 1);
?>

Viel Spass und frohe Weihnachten Sebastian

Hallo Leute,

bräuchte mal eure Hilfe!
Kann mir jemand sagen in welcher Datei von IPS die Sprachausgabe drinsteckt ??

Wäre Super wenn mir jemand Helfen kann.

Bräuchte die Datei für Airfoil zum Streamen auf ein I PAD für die Sprachausgabe.

Gruß
Thomas

Hallo Leute ,

keiner eine Lösung oder Idee?

Gruß
Thomas

Den Pfad gibst Du doch selbst vor…?

Sent from my iPhone using Tapatalk

Hi

Siehe mal http://www.ip-symcon.de/forum/threads/23523-WebFront-Sprachausgabe-via-WFC_AudioNotification
In der Mitte des Skriptes solltest du fündig werden!

p.s. Ich bin derzeit dabei die erzeugte ‚Sprachdatei‘ via DLNA auf diversen Geräten auszugeben.

  • Ausgabe auf Android Handy über die App ‚BubbleUPnP‘ funktioniert wunderbar
  • Ausgabe auf FRITZ!WLAN Repeater NG funktioniert auch sehr gut
  • Ausgabe auf LG TV noch nicht, da WAV Dateien nicht wiedergeben werden können (muss ich mal versuchen zusätzlich eine MP3 aus der WAV zu machen)

Zusatz: Für DLNA verwende ich http://www.ip-symcon.de/forum/threads/22744-UPNP-DLNA-for-IPS-new-version?p=211672#post211672 -> daraus aber nur das Skript ‚UPNP_Functions_V2.5.ips.php‘

@IP Symcon Team: Grundsätzlich wäre es ja super, wenn die Apps für iPhone und Android Push Messages nativ vorlesen könnten!

lg. Günter

Es geht um folgendes:

Airfoil muss die Audioausgabe abgreifen um diese auf die Lautsprecher zu verteilen. Unter Win 7 stellt man als Abgreifen-Quelle einfach Systemaudioausgabe ein. Leider gibt’s das unter XP nicht und damits funktionert, müsste man Airfoil das konkrete Programm welches den Sound abspielt, mitteilen.
Also z. B. IE oder Media Player oder eben ips.exe
Leider geht’s nicht wenn man IPS.exe auswählt.

Sebastian

Hi,

habe genau das gleiche Problem unter Windows 8. Wenn ich auf System Audio stelle, dann werden alle „klicks“ übertragen aber nicht der IPS Ton. unter dem Audio Mixer sehe ich nur „Name nicht verfügnar“ als Anwendung

Unter win 7 läufts problemlos mit System Audio ausgabe

Hab den Fehler grad gefunden zumindest für die Mediaplayer Instance. Airfolio installiert ja einen eigenen System Audio Driver. Dieser muss in den Eigemschaften der Media Player Instance ausgewählt werden. Dann bekomme ich Ton auf mein Iphone.

Kann ich das gleiche auch für die Netplayer Instanz konfigurieren?

Hallo bennybunny,

wo meinst du das Airfoil einen Audio Driver Installiert in der IPS Mediaplayer Instance kann ich nur die Soundkarte des Severs auswählen.
Könntes du mir eine kleine Berschreibung geben wo und wie ich das machen kann ?!

Gruß
Thomas

Hi Thomas,

wenn du Airfoil installiert hast gibbt es irgendwo die Option Extras dort kann der System Driver installiert werden. Bin leider grad auf der Arbeit und kann nichht genau nachsehen. Wenn der Treiber installiert ist, sihst du den in den Sound Einstellungen in Windows.

Gruß
Benjamin

Hallo,

ich habe jetzt auch mal AirFoil installiert - funktioniert soweit auch. Kann man denn Titel und Interpret für IPS „ermitteln“ ?

DANKE

herbert

Thomas hat xp und da gibt es keinen system audio Ausgabe Treiber. Das ist ja das Problem. Den gibts erst ab win 7

Hallo Sebastian,
ich würde auch gerne airfoil für die Ausgabe der Sprachdaten und Musik nutzen und über IPS steuern, nur finde ich keine Erläuterung wie ich die Scripte (z.B. enumerateSpeakers.js) innerhalb von IPS ans Laufen bekomme bzw. wie ich das einbinde. Recherchen haben leider nichts ergeben.

Ich freue mich auf Deine/Eure Unterstützung
Gruß, Rainer

Hi,

diese Scripte laufen unter windows und werden nur vom ips aufgerufen.

IPS_ExecuteEx ist der Befehl.
Das ganze über den Umweg einer batch dabei die wiederum das Script aufruft.

Sebastian