[ "method" => "GET", "header" => "Icy-MetaData:1\r\n" ] ]; // Crear el contexto de flujo $context = stream_context_create($options); // Intentar abrir el stream $fp = @fopen($streamUrl, 'r', false, $context); if (!$fp) { return ['error' => 'No se pudo conectar al stream']; } // Obtener las cabeceras para encontrar el intervalo de metadatos $metaInt = 0; $headers = stream_get_meta_data($fp); foreach ($headers['wrapper_data'] as $header) { if (stripos($header, 'icy-metaint') !== false) { $parts = explode(':', $header); if (count($parts) == 2) { $metaInt = intval(trim($parts[1])); } break; } } if ($metaInt == 0) { fclose($fp); return ['error' => 'No se encontraron metadatos ICY']; } // Leer el intervalo de datos de audio $buffer = fread($fp, $metaInt); // Leer el bloque de metadatos $metaLength = ord(fread($fp, 1)) * 16; $metadata = ''; if ($metaLength > 0) { $metadata = fread($fp, $metaLength); $metadata = rtrim($metadata, "\0"); // Limpiar la cadena de metadatos // Extraer el t铆tulo de la canci贸n preg_match("/StreamTitle='([^']*)';/", $metadata, $matches); $streamTitle = isset($matches[1]) ? $matches[1] : 'Desconocido'; } else { $streamTitle = 'Desconocido'; } fclose($fp); // Devolver los metadatos junto con la imagen return [ 'title' => $streamTitle, 'image' => $imageUrl ]; } // Obtener los metadatos $metadata = getStreamMetadata(); ?> Reproductor de Radio
Imagen de la estaci贸n