ATENCIÓN!!!:

Hay disponible una versión compatible con Shoutcast Server 2 en GitHub https://github.com/cperezabo/shoutcast-server-information.
Desde ahora el proyecto continuará activo allí.
En esta página solo se conserva la versión compatible con Shoutcast 1, la cual no se mantendra mas.

Información del proyecto

Descripción
Descarga
Versión
API
Variables de informacíón
Ejemplo

Descripción

Class PHP que permite obtener informacion acerca de la transmision de un servidor de streaming Shoutcast

Descarga

Source: shoutcast.php

Versión

2.2 (15-09-2010)

API

public Shoutcast::server_online (void)
Devuelve TRUE o FALSE si el server esta en linea o no (Esto es distinto a si el server esta transmitiendo o no, esa informacion se obtiene con la variable STATION_STATUS)

public Shoutcast::admin_mode (void)
Devuelve TRUE si se esta trabajando en modo admin o FALSE en caso contrario

public Shoutcast::get (string $var)
Devuelve el valor de la variable ingresada, y en caso de no existir la variable o no ser accesible devuelve una cadena vacia

Variables a las que se puede acceder

En modo simple (sin iniciar sesion como administrador):

CURRENT_LISTENERS : Cantidad de oyentes actuales
STATION_STATUS : Vale TRUE si el servidor esta transmitiendo o FALSE en caso contrario
LISTENERS_PEAK : Pico máximo de oyentes simultaneos en un momento
LISTENERS_LIMIT : Capacidad máxima de oyentes permitida
UNIQUE_LISTENERS : Cantidad de oyentes únicos (IP)
BITRATE : Frecuencia de la transmisión
CURRENT_SONG : Título de la canción actual

En modo admin:
Se puede acceder a todas las variables del modo simple y las siguientes

STATION_GENRE : Genero de la estación de radio
STATION_URL : Dirección web de la estación
STATION_TITLE : Título de la estación
IRC : IRC de la estación
ICQ : ICQ de la estación
AIM : AIM de la estación
CONTENT_TYPE : MIME del contenido transmitido
SERVER_VERSION : Versión del servidor
SONG_HISTORY : Historial de canciones – Array ( TIMESTAMP, TITLE )
LISTENERS : Información de los oyentes – Array ( HOST, PLAYER, UNDER_RUNS, CONNECT_TIME, POINTER, UID})

Ejemplo de Uso

58 commentarios

Knight · 31 enero 2010 a las 14:48

Hola!
La verdad es que tengo un problema,.. estoy escuchando mi propia radio, hago la prueba en el server con php5 y,… el servidor del shoutcast está offline? Pero si la estoy escuchando! Curiosidad me voy a la pagina del server y me carga perfectamente,… que es lo que pasa?

Cristián · 31 enero 2010 a las 15:35

Hola @Knight, deberias chequear que estes apuntando a la IP y puerto correctos..

Tu server PHP esta en la misma computadora donde esta el servidor shoutcast? las pruebas que estas haciendo son locales???

Ahora bien, si estas ejecutando el script desde otro servidor, hacia tu pc, deberias verificar que los puertos esten abiertos y redirigidos correctamente en tu router! La clase funciona perfectamente ya que mucha gente la esta utilizando, deberias revisar esas otras cuestiones que son mas de Red, que de codigo

Suerte

Daniel García · 22 febrero 2010 a las 20:43

Esto funciona igual para este servidor???

giss.tv

Cristián · 22 febrero 2010 a las 22:08

No Daniel, solo para shoutcast

Sergio Solano · 28 febrero 2010 a las 12:43

Tengo mi radio, funciona normal
En mi server http://192.168.1.111:8000/ quiero entrar en admin log in pero no se cual es mi usuario.

Cristián · 28 febrero 2010 a las 21:02

Hola sergio, en el shoutcast server monitor, hay un boton que dice Edit Config, ahi figuran tu usuario y contraseña, o al menos la contraseña y por default, el usuario es “admin”

Suerte 🙂

Lorenzo Vinueza · 21 marzo 2010 a las 2:03

Disculpa como puedo hacer funcionar el song_history

Cristián · 21 marzo 2010 a las 16:45

Hola lorenzo, podrias usar el ejemplo que esta al final del codigo de ejemplo, bajo el comentario //List Song History

Basicamente SONG_HISTORY es un Array, como dice en la documentacion, por lo que podrias hacer un print_r() del mismo para conocer su contenido y asi saber de que manera procesarlo.

Recorda que SONG_HISTORY esta solo en Admin Mode, para lo que necesitaras el usuario y la contraseña del servidor

Greci · 7 mayo 2010 a las 9:56

HOla, estoy usando este script pero no logro ver el listado de temas emitidos.
Estoy probando el codigo del ejemplo que sale en esta pagina, coloco mis datos de usuario y contraseña pero solo logra desplegar la informacion básica y no el historial de canciones.
Si entro directamente a la pagina de shoutcast con mis datos si puedo ver el listado de temas pero desde este escript no.

Que puede estar pasando? he revisado el codigo y aparentemente no veo nada anormal.

Gracias

Daniel · 1 junio 2010 a las 0:08

Hola, discula las molestias, queiro insertar el codigo pero no se como hacerlo, pongo en html y no sale nada, en que campo de html de la pagina va puesto?? gracias

Cristián · 2 junio 2010 a las 23:25

Hola Greci, si podes postea el codigo que estas utilizando para ver si puedo ayudarte

Cristián · 2 junio 2010 a las 23:25

Daniel, no es html esto, es PHP, por ende, no hay un campo en donde insertarlo, primero tendrias que aprender PHP. y luego implementar la clase en tu proyecto

Seba · 15 junio 2010 a las 9:51

Hola, como se puede hacer el Print pero de la variable (admin) LISTENERS?

Trato de copiar el codigo como estan en SONG_HISTORY pero no puedo conseguirlo.

Plis HELP

Cristián · 16 junio 2010 a las 17:31

Hola seba, te explico
LISTENERS es un array, con todos los oyentes, por eso al hacer foreach obtenes cada uno de esos oyentes, ahora, cada oyente es a su vez otro array, por ende, tendrias que decirle que clave es la que quieres!..
Fijate que las claves del array de oyente esta especificada en la lista de variables.
Por las dudas te la transcribo aqui.

Array ( HOST, PLAYER, UNDER_RUNS, CONNECT_TIME, POINTER, UID})

por ende, si quieres obtener el Reproductor por ejemplo que esta usando cada uno de tus oyentes deberias hacer algo asi

foreach($s->get(‘LISTENERS’) as $listener) {
echo $listener[‘PLAYER’]; //Aca le pedis la clave que devuelve el Reproductor usado
}

Lo mismo con cualquier otra clave del array

roger · 19 junio 2010 a las 18:19

cuales son las lineas q hay q editar no se entiende porfa explicar

Cristián · 25 junio 2010 a las 23:58

hola roger, no hay que editar ninguna linea, para utilizar la clase tenes que tener conocimientos de PHP Orientado a Objetos, y solo incluir el archivo shoutcast.php en tu codigo e instanciar la clase como un objeto, luego, utilizar los metodos nombrados mas arriba para poder acceder al estado del servidor o a las distintas variables… en el codigo de ejemplo hay varios casos usados en el mismo ejemplo, solo deberias basar tu codigo en lo se parezca mas a lo que necesitas hacer

Fernando · 7 agosto 2010 a las 23:16

Hola Cristián !
Bueno sinceramente, llevo tiempo buscando esto !
La verdad, muy buena tu predisposición al subir este material genial.
Te cuento que soy un novato en php, todo lo que he hecho hasta ahora, es con mucha ayuda

Bien, subi todo los archivos, shoutcast.php’ y ‘ver_info.php’
Dentro de ‘ver_info.php’ pegue el código con el cual se tendría que conectar con el servidor y darme los datos,
Cree un iFrame redirigiendo a ‘ver_info.php’
Me dice que el Server está offline.
¿Puede ser que no este bien el host y el puerto?

Aclaro, uso un servidor gratis, no tengo deseos de pagar uno, solo lo hago por hobbie, no por algún trabajo ni nada por el estilo, el servidor que uso es el de:
http://freeshoutcast.com/
Y el host+puerto es..
http://free.freeshoutcast.com:16038/

¿Qué estaré haciendo mal?

Greco · 15 septiembre 2010 a las 0:49

Hola,

Despues de arto tiempo vuelvo a retomar el script para intentar usarlo pero segía sin funcionar incluso hasta con el mismo codigo que pones de ejemplo.

basicamente lo que no funciona era la parte de admin, osea no mostraba los temas recientes y la informacion de los auditores (ip etc)

hice un print_r y me mostraba los array con valor 0 asi que decidí hecharle una mirada a la clase shoutchast.php

Es así como probando y probando lo pude hacer funcionar eliminando algo en la clase, específicamente en las lineas 247 y 257 en donde aparece:

foreach ( (array)$xml->SONGHISTORY->SONG as $song )
….
foreach ( (array)$xml->LISTENERS->LISTENER as $listener )
….

Elimine (array) en las dos lineas y ahora funciona todo correctamente.

quedando asi: foreach($xml-> ….

Espero le sirva a alguien.

Saludos

Cristián · 15 septiembre 2010 a las 3:12

Hola greco, muchas gracias por tu aporte.
Despues de leerlo, me puse a revizar la clase y descubrí que el error no era ese en particular, si bien ese cambio ayudo a darle solución a tu problema no era el foco del problema general que había al manipular el objeto SimpleXMLElement

Cambie un poco la forma de manejar la información leída para asegurarme el tipo de datos recibido, así que.. ahora, en teoría (aunque no pude probarlo mucho tiempo) no habría problemas en adelante.

Cualquier cosa, ya saben donde encontrarme jaja

Greco · 16 septiembre 2010 a las 5:14

Hola, gracias por todo 🙂

Sebas (Uruguay) · 10 noviembre 2010 a las 12:24

Hola gente. Ahora si que traigo una duda de las buenas. Les cuento. Estoy utilizando el shoutcast para transmitir mi radio en internet y todo va de maravilla. La consigna es la Siguiente. Si han visto cuando reproducimos la emisora por winamp, se actualiza solo el nombre del tema. La pregunta es: Se puede hacer algo similar pero para un html. Es decir, que cuando cambie el nombre del tema, en forma automatica cambie el nombre en el sitio web tambien? Gracias. Un abrazo.

Cristián · 10 noviembre 2010 a las 14:49

Sebas, eso lo podes hacer con Ajax chequeando cada cierto intervalo de tiempo el estado de shoutcast!
Saludos!

Jose · 22 diciembre 2010 a las 14:48

chekea el script en la parte de los listeners ,cuando no hay nadie conectado a la radio si bien funciona el escript te devuelve este error :

Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 264

Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 267

Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 274

Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 275

Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 276

Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 277

Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 278

Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 279

Rommel Flores · 21 enero 2011 a las 18:55

Que tal Cristian, muy bueno el material, la pregunta es, puede ayudarnos para que este material tengo el isguiente cambio, pues la idea es que se actualice automaticamente segun avanza, el shoutcast, yo uso el refesh pero se actualiza la pagina completa? o que idea nos puedes dar.

Cristián · 25 enero 2011 a las 0:24

Hola Rommel, lo que podrías hacer es utilizar AJAX, y realizar peticiones cada una cierta cantidad de segundos al servidor para refrescar solamente la información que necesites.
Saludos

Garrizano · 17 agosto 2011 a las 1:06

Hola, esta muy bueno ese script, te felicito.

Pero tengo un problema y espero puedan ayudarme.
El problema radica en obtengo un error de la funcion fsockopen(): “unable to connect to radio.ciudadmetropolis.com:7000 (Connection timed out)”.

Ese error me sale cuando corro el ejemplo desde un host gratis que tengo; pero si lo pruebo localmente con server en mi PC, si funciona de maravilla.

Pienso que puede ser que esa funcion no este permitida en la configuracion del host gratis, es de “000webhost”.

Espero haber explicado bien mi problema. De antemano muchas gracias por su ayuda.

Greco · 23 octubre 2011 a las 23:12

Garrizano, ese problema se debe justamente a lo que comentas, muchos servidores, sobre todo los gratuitos tienen desabilitada esa opcion, no se puede usar fsockopen(), 000webhost es uno de ellos.

Saludos.

lekin · 21 diciembre 2011 a las 14:55

Hola! Estoy intentando usar esa clase con el Shoutcast DNAS 2.0 y no me funciona. Dice que esta conectado el servidor pero que no esta transmitiendo :/

En teoria funciona el script con el DNAS 2.0

Muchas gracias por compartir su trabajo!

bertrand

lekin · 21 diciembre 2011 a las 15:20

ok. solo tuve que cambiar la linea 208:
fputs($this->fp, “GET /admin.cgi?sid=1&mode=viewxml HTTP/1.0\r\n”);

le faltaba el sid=1 como param!

Cesar · 22 febrero 2012 a las 15:38

He calgado todos los archivos necesarios en mi servidor pero cuando hago la prueba me sale “Server Offline” a pesar que estoy escuchado la transmisión, cuando lo pruebo en mi servidor local (WAMP) funciona de perlas.

Mi emisora esta colgada en un servidor diferente al de mi pagina web, debo hacer alguna configuración adicional???

Cristián · 12 marzo 2012 a las 18:04

Deberias chequear si tenes habilitada la funcion fsockopen() en tu servidor.. En WAMP eso esta por default, pero en otros servicios de hosting puede estar desactivada

Tebo · 24 junio 2012 a las 4:39

Hola Cristián, muchas gracias por estos aportes, sin duda se agracede mucho.
Pese a eso tengo una duda amigo y espero puedas ayudarme, todo funciona perfecto pero por ejemplo, quisiera que se mostrara el avatar del locutor en curso.
No sé si podrias ayudarme en ese tema o saber donde puedo buscar esa información con mayor detalle. Saludos y Gracias!

JUke · 17 julio 2012 a las 21:01

Buenas resulta que tengo el panel instalado correctamente en mi servidor virtual he logrado ponerle nombre a la radio en shoutcast.com salen todos los valores que puse en el autohash, pero no he logrado ver el nombre de la cancion y artista en la pagina de shoutcast.com y solo sale Now Playing: sin artista ni cancion. Alguien sabe que debo configurar para ver el actual file ese del que hablan que algunos quieren eliminar y yo quiero q se vea XD. Muchas gracias de antemano

veve · 11 agosto 2012 a las 8:29

buenas el caso es que instale todo lo de shoutcast, pero para buscar la radio en el listado te piden el nombre de la radio, como puedo saber que nombre tengo o donde puedo cambiarlo?

Cristián · 11 agosto 2012 a las 17:22

Eso no es algo que provea Shoutcast, no al menos en la versión soportada por mi libreria!…

GABRIEL300487 · 12 agosto 2012 a las 7:45

Saludos, pues he estado buscando una solución a mi problema la cosa es que tengo un blog y escucho siempre una radio de shoutcast, pero al momento de escuchar una canción que me gusta si quiero saber el nombre tengo que ir a pagina de la radio para saberlo.
Tambien mis lectores tienen que hacerlo y luego en el chat me preguntan que canción es y obviamente si no estoy conectado no puedo decirles, y ya despues es muy tarde para saber.
Quisiera saber si esto mismo lo puedo aplicar en blogger y como podría lograrlo, gracias de antemano.

Cristián · 15 agosto 2012 a las 22:00

Sinceramente no he usado nunca Blogger, espero que alguien pueda ayudarte! Saludos!

houseparty · 6 septiembre 2012 a las 5:32

Estoy intentado hacer funcionar el codigo, pero siempre me pone Server Offline.
En usuario y password, ¿cuales hay que poner? las de emitir o las de admin.

Saludos !!

Angel · 26 octubre 2012 a las 7:54

Buenas,

En mi página tengo un servidor de radio que cuenta con la función autodj. La cuestión es que siempre me sale la información del autodj y quiero que salga la del dj que está emitiendo. Una posible solución que se me había ocurrido es hacer una base de datos con IPs y usuarios, de tal manera que cuando emita una IP salga su nombre correspondiente. El problema es que no se como obtener la ip de la persona que esta emitiendo, es posible? se te ocurre alguna otra manera de solucionar este problema?

Muchas gracias por tu tiempo,

Un saludo.

Cristián · 26 octubre 2012 a las 17:40

Hola @Angel, esta libreria no lo soporta a eso!… pero podria implementarse de alguna otra manera, en este momento sinceramente no tengo tiempo para ponerme a investigarlo porque estoy tapado de trabajo! pero si logras encontrar una solución me gustaría que la publiques asi podemos sumarlo al proyecto! Saludos y Gracias por tu comentario!

Jason · 29 diciembre 2012 a las 11:47

Tengo dos maquinas conectadas con modem router wifi marca bhs en la primera tengo windows 8 en la segunda xp para poder usar el zararadio 1.4.4 con el plugin shoutcast + el aimp que vendria a ser como el winamp pero infinitamente mejor.
el tema es que no me conecta el shoutcast . he visto por ahi que tengo que abrir los puertos del router pero no veo como hacerlo . puertos 8000 al 8005. aclaro que si pongo otro modem en modo bridge se conecta al toque pero si lo dejo asi tendria una sola pc conectada a internet. Si hubiera una solucion para mi caso les agradeceria. gracias.

Cristián · 2 enero 2013 a las 12:25

Deberías contactar con alguien que te de asistencia tecnica sobre networking, podrías probar este software tambien si no tenes idea sobre el tema. http://www.simpleportforwarding.com
Si no tenes conocimientos sobre networking es difícil explicarte ya que el port forwarding varia de un router a otro (me refiero a interfaz grafica)

Kevin · 23 marzo 2013 a las 3:31

Hola, disculpa ya inserte los datos de mi radio, usuario, contraseña, puerto e ip. todos los datos anteriores los tengo bien pero me sale Server offline. tienes alguna idea? los datos los puse en el codigo que das de ejemplo. hice la prueba subiendo los archivos en mi servidor de mi web.

Cesar · 28 marzo 2013 a las 20:39

Saludos Cristian, muy buen aporte.
Espero no este abandonado este proyecto. La verdad aun no lo he hecho funcionar, me sale “Server offline” . Obviamente he usado los datos que me dan los proveedores del servicio de streaming (IP, PORT, Cntraseña) pero a toda esta tengo una duda:
Mi radio esta las 24 horas del día encendída, tiene puesto un AutoDJ, por consiguiente puedo crear y borrar DJ que emitan en mi radio y cada uno tener una clave diferente….en fin el punto es el siguiente, tengo una clave general que la puedo usar sin el AUTO DJ con un “PUERTO” especifico, ahora cuando esta activo el autodj se usa “OTRO PUERTO” y otra clave diferente (osea como mencione arriba, puedo crear claves diferentes para dj diferente) no se si me explico bien. el problema aqui seria el siguiente, cuaL puerto usar? (aunque la verdad no se si sea este el problema por el cual me salga “Server offline” (de todas manera hare en este momento las pruebas con ambos puertos y usar alguna clave de dj existente)

Mi pagina esta alojada en un hosting gratis. he leido en algunos sitios que pudiera ser los puerto que estan cerrados y hasta me hablan de unos puerto UDP que si no estan habilitados no funcinan, ya depende del hosting, la verdad me gustaria me dieran unn mano en esto, a todas esta mi idea seria llevar esto a crear un reproductor flash donde me indique todo estos datos (nombre cancion, numero oyentes, historial de canciones, etc)

Saludos

Cristián · 2 abril 2013 a las 17:04

Deberías probar desde una maquina en tu red local, digamos, una maquina en la misma red que tu servidor de radio. Si de esta manera funciona, entonces tu problema esta en el acceso remoto a tu servidor y ya ahí no puedo ayudarte porque existen mil y una variables.

Cristián · 2 abril 2013 a las 17:11

¿Tenes idea si tenes soporte para crear sockets en tu servidor? Porque si no es asi, el script no va a funcionar!. Para probar esto podrias hacer lo siguiente

< ?php echo (string)function_exists("fsockopen"); ?>

Si eso arroja un resultado negativo, entonces no podes utilizar la librería en tu servidor web.

Cesar · 2 abril 2013 a las 21:47

Gracias por responder amigo, para serte franco he utilizado varios servicios de paginas gratis donde ofrecen “fsock” tambien algo de “allow_url…” (ahorita no recuerdo bien) y hasta “cURL”..claro es un servicio que en teoria lo ofrecen pero no se que tan “real” seria (la verdad no todos lo he encontrado en el mismo sitio), tambien he utilizado otros codigos e incluso la misma gente que ofrece el panel de mi radio (VHMSONIC) ofrecen gratuitamente algo similar llamado “SONICRADIO PLAYER SCRIPT” donde uno configura muy similar una PHP pero tampoco me funciona, en la descripción me aparece algo asi “Your radio port must be enabled on the hosting server for UDP out connections” (aqui en este link podras observar lo que te digo http://www.sonicpanel.com/whmsonic-license-api-partners/)…lo ironico de todo esto, es que las personas que me dan el servicio de radio (supongo revendedores de WHSONIC) lo pudiero hacer y en una pagina que ellos me sumistran puedo ver los datos, aqui puedes ver la pagina –>> http://jhekho.zxq.net/Radio.html (esto es lo que deberia de hacer SONICRADIO) el historia de canciones lo hice yo con un iframe de mi pagina shoutscat (http://69.175.22.147:7046)

Uff si que he hecho pruebas de todos tipo e usado varios servidores (gratis y ofrecen fsock, allor_url.., cURL) y nada…o tal ves sea yo ke este haciendo algo mal (se lo mas basico de PHP)

Unas preguntas amigo,
1.- ¿el el archivo “shoutcast.php” hay que modificar algo? si es asi, indicaque que parte.
2.-Yo use tu codigo de ejemplo y en la parte de “$s = new Shoutcast(“xxx.xxx.xxx.xxx”, “8000”, “usuario”, “password”, 10);” coloque mis datos (IP, PORT, USUARIO (el que usa para entrar panel radio) y PASS (el que uso para entrar al panel radio) esto esta bien?

Tal ves sea yo el del error amigo y no este configurando esto bien. ayudame si ves algun error en lo que hago.

Por ahora verificare eso que dices de los “sockets” y hare una prueba con en mi red local a ver como va (no tengo idea como, pero ya me encargo de averiguar)

Un Saludo amigo,espero me puedas ayudar con esto y perdona por extenderme

Cesar..

Josè Manuel Sanhueza · 28 abril 2013 a las 15:07

Encuentro muy bueno tu aporte, por casualidad no tienes uno donde solo muestre el tema actual y se refresque casa x segundos solo ?

Saludos

Cristián · 31 mayo 2013 a las 23:13

Lo lamento José, el aporte es únicamente la librería y el ejemplo completo. Sin embargo con un poco de ajax y parte de código ejemplo podes hacerlo. Pero deberías tener algunos conocimientos de programación web. No doy soporte de ese tipo. Saludos

Obtener datos de la transmision Shoutcast con PHP v2.0 » Cristián Pérez · 1 enero 2010 a las 14:36

[…] Acerca de miShoutcast Server Information […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.