2011-03-06 29 views
8

¿Existe alguna API (pública o privada) que permita que una aplicación de terceros de Mac OS X transmita audio a los receptores de AirPlay? Airfoil por Rogue Amoeba Software parece ser capaz de hacer esto, lo mismo ocurre con Erica Sadun AirFlick, pero no pude encontrar ningún código fuente que demuestre cómo hacerlo. ¡Cualquier apuntador es apreciado!AirPlay API para Mac OS X

Respuesta

4

Resulta AirPlay streaming de audio es posible, ya que de OS X 10.8 utilizando las API públicas, pero en realidad no estaba documentada en cualquier lugar. Joris Kluivers escribió un gran blog post sobre cómo hacerlo funcionar.

0

No creo que esté disponible. Al menos no en versiones anteriores a 10.7.

Supongo que Airfoil utiliza algo así como el DVD que hizo John hace un tiempo cuando descifró la carga útil clave de Airport Express. Él lanzó el código (C#) que debería poder encontrarlo, pero es bastante críptico.

No sé qué usa AirFlick pero siempre puedes intentar hacer ping a Erica, ella generalmente comparte sus cosas.

1

Hay acouple de los reproductores RAOP de código abierto disponibles; No los he probado, así que no sé si Apple los ha roto desde que fueron escritos.

0

Alguien logró recientemente obtener la clave privada AirPlay que le permite tener su programa enumerado en los menús de AirPlay en los dispositivos de su red.

Puede leerlo aquí. También hay un proyecto de código abierto vinculado desde esa página. http://mafipulation.org/blagoblig/2011/04/08#shairport

Tenga en cuenta que, obviamente, cualquier aplicación que cree nunca será aprobada por Apple y la clave privada podría modificarse en una actualización de firmware/software.

+1

Esta pregunta se refiere al envío a los receptores AirPlay. Eso no requiere la clave privada. –

+0

@NicholasRiley Ah sí, estás en lo cierto. – Ben

1

Mountain Lion (OS X 10.8) ha agregado compatibilidad con AirPlay en la configuración de sonido. El usuario puede elegir enviar la salida de sonido local a un dispositivo AirPlay. Sin embargo, no creo que tengas acceso a ninguna API dentro de tu aplicación.

Existen algunas bibliotecas disponibles para implementar AirPlay, pero sepa que Apple rechazará su aplicación si intenta publicarla en la App Store. Al menos, eso es lo que me sucedió a mí.

Escribí un módulo node.js para admitir AirPlay. Incluso si no usa un nodo, puede canalizar sus datos de audio a través de stdin.

https://github.com/lperrin/node_airtunes/

+0

Para aclarar, trabajé en una aplicación OS X, que bifurcó un proceso node.js para salida de audio. El módulo también tiene enlaces a CoreAudio, por lo que no es necesario crear un caso especial para eso. –

+0

No me queda claro cómo fue capaz de bifurcar un proceso nodejs dentro del OS X. ¿Quiere decir que la aplicación OS X estaba usando nodejs como cliente AirPlay? – loretoparisi

+0

Utilicé un [NSTask] (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSTask_Class/Reference/Reference.html), como se explica en esta [pregunta] (http://stackoverflow.com/questions/412562/execute-a-terminal-command-from-a-cocoa-app). La aplicación usa un nodo separado.js para todo el audio (local + AirPlay). Este proceso está controlado por comandos enviados a través de stdin/stdout. Usted tiene la base para eso en los ejemplos. –