🎥 Wolkelab Camera Streaming Server

🔒 Conexión HTTPS segura establecida
Servidor: cameras.wolkelab.com

📡 Endpoints API Disponibles:

🎬 Streaming WebRTC (WHEP):

POST https://cameras.wolkelab.com/{camera}/whep?exp={timestamp}&sig={signature}

⚠️ Requiere token de autenticación HMAC. Obtener token primero vía API.

🔑 Generación de Tokens:

GET https://cameras.wolkelab.com/api/get-token/{camera}

Retorna URL firmada válida por 5 minutos para streaming WHEP.

🎮 Control PTZ:

POST https://cameras.wolkelab.com/ptz/move
Body: {"cameraId": "P1-PTZ", "direction": "up|down|left|right", "speed": 1-3}
POST https://cameras.wolkelab.com/ptz/zoomSet
Body: {"cameraId": "P1-PTZ", "level": 1-10}

📺 Streaming HLS (sin autenticación):

GET https://cameras.wolkelab.com/hls/{camera}/index.m3u8

Cámaras disponibles: P1-CAM1, P1-CAM2, P1-PTZ, cam-mina, cam-mina-2

⚠️ Nota Importante:

Este es un servidor API para streaming de cámaras. No tiene interfaz web pública.

Para visualizar las cámaras, utiliza los widgets integrados en ThingsBoard:

ℹ️ Información Técnica:

📚 Ejemplo de Uso (JavaScript):

// 1. Obtener token
const response = await fetch('https://cameras.wolkelab.com/api/get-token/P1-CAM1');
const { url } = await response.json();

// 2. Usar URL firmada para WHEP
const pc = new RTCPeerConnection();
pc.addTransceiver('video', { direction: 'recvonly' });
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);

const whepResponse = await fetch(url, {
  method: 'POST',
  headers: { 'Content-Type': 'application/sdp' },
  body: offer.sdp
});

const answerSdp = await whepResponse.text();
await pc.setRemoteDescription({ type: 'answer', sdp: answerSdp });

🏢 Wolkelab Infrastructure · 2025

Servidor de Cámaras IP · Sistema LPR · Monitoreo en Tiempo Real