> ## Índice de la documentación
> Consulta el índice completo de la documentación en: https://developer.rhombus.com/llms.txt
> Úsalo para descubrir todas las páginas disponibles antes de seguir explorando.

# Video y audio de Recon

> Transmite video en vivo y grabado desde cada una de las cámaras de un robot Recon, y su audio en vivo: obtén las URL de transmisión de todas las cámaras con getAllMediaUris, elige la cámara que quieres y reprodúcela como cualquier cámara de Rhombus.

> **Note**: Esta página se tradujo automáticamente. Si encuentras errores o tienes sugerencias, [escríbenos](mailto:support@rhombus.com).

Un robot lleva una o más cámaras y un micrófono. Cada uno es una **faceta** del robot: las facetas de video se llaman `v0`, `v1`, etc., y las de audio, `a0`. Sus transmisiones funcionan igual que las de una cámara de Rhombus, así que se aplican las [guías de transmisión](https://developer.rhombus.com/es/implementations/streaming-video) y [Medios y transmisiones](https://developer.rhombus.com/es/authentication/media). Los ejemplos usan la función auxiliar `robot_api` de la [descripción general](https://developer.rhombus.com/es/robots/overview#convenciones).

**Necesitas** una credencial con acceso solo en vivo al robot para las transmisiones en vivo, y acceso de solo lectura para el video grabado.

## Obtén las URL de transmisión

[`getAllMediaUris`](https://developer.rhombus.com/api-reference/robot-webservice/get-media-uris-for-every-configured-facet-of-a-robot) devuelve las URL de todas las facetas a la vez:

```python Python
media = robot_api("getAllMediaUris", {"deviceUuid": ROBOT_UUID})
for facet, uris in media["videoFacetUris"].items():
    print(facet, uris.get("wanLiveM3u8Uri"))
for facet, uris in media["audioFacetUris"].items():
    print(facet, uris.get("wanLiveOpusUri"))
```

| Campo             | Contiene                                                                                                                                                                                                       |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `videoFacetUris`  | Para cada faceta de video: `wanLiveM3u8Uri` (HLS), `wanLiveMpdUri` (DASH), `wanLiveH264Uri` (H.264 por WebSocket), `wanVodM3u8UriTemplate` y `wanVodMpdUriTemplate` (video grabado), y sus equivalentes `lan…` |
| `audioFacetUris`  | Para cada faceta de audio: `wanLiveOpusUri` (Opus por WebSocket) y `lanLiveOpusUris`                                                                                                                           |
| `wanLiveRobotUri` | El [socket en vivo](https://developer.rhombus.com/es/robots/live-socket) del robot, para control y telemetría                                                                                                  |
| `lanCheckUrls`    | URL que responden `204` cuando tu cliente puede llegar al robot por la red local                                                                                                                               |

Vuelve a obtener las URL antes de reconectarte a una transmisión. El host de medios del robot puede cambiar.

## Elige una cámara

[`getFullState`](https://developer.rhombus.com/es/robots/monitor#estado-de-la-flota) indica qué facetas tiene el robot y hacia dónde apunta cada cámara:

```python Python
state = robot_api("getFullState", {"deviceUuid": ROBOT_UUID, "force": False})["fullState"]
directions = (state.get("robotPlatformCapability") or {}).get("facetOrientationDegrees") or {}
names = state.get("facetNameMap") or {}
for facet in state.get("supportedFacets", []):
    if facet in media["videoFacetUris"]:
        print(facet, names.get(facet, ""), directions.get(facet), "degrees")
```

- `supportedFacets` enumera las facetas que el robot tiene realmente. Usa solo las facetas que aparecen tanto ahí como en `getAllMediaUris`.
- `facetOrientationDegrees` da la dirección de cada cámara, en sentido antihorario desde la dirección de avance del robot: `0` mira hacia adelante y `180`, hacia atrás.
- `facetNameMap` contiene el nombre de cada faceta.

## Reproduce video en vivo

Reproduce la URL de una faceta como la de una cámara. En un navegador, genera un [token federado](https://developer.rhombus.com/es/authentication/federated-tokens) en tu servidor y agrégalo a la URL:

```javascript JavaScript
const url = `${videoFacetUris.v0.wanLiveM3u8Uri}?x-auth-scheme=federated-token&x-auth-ft=${encodeURIComponent(token)}`;
if (video.canPlayType("application/vnd.apple.mpegurl")) {
  video.src = url;
} else {
  const hls = new Hls();
  hls.loadSource(url);
  hls.attachMedia(video);
}
```

Desde un servidor o una app nativa, envía en su lugar los encabezados de tu clave de API en cada solicitud. DASH y el WebSocket H.264 funcionan como se describe en [Video en vivo y grabado](https://developer.rhombus.com/es/authentication/media#video-en-vivo-y-grabado).

## Video grabado

Las plantillas `wanVodM3u8UriTemplate` y `wanVodMpdUriTemplate` de una faceta reproducen lo que grabó esa cámara. Reemplaza `{START_TIME}` (hora Unix en segundos) y `{DURATION}` (segundos) en la plantilla:

```python Python
template = media["videoFacetUris"]["v0"]["wanVodM3u8UriTemplate"]
url = template.replace("{START_TIME}", str(start_seconds)).replace("{DURATION}", "300")
```

Para encontrar los momentos que vale la pena ver, usa los [eventos](https://developer.rhombus.com/es/robots/monitor#historial-de-eventos) del robot: cada llegada a una parada de patrulla tiene un `timestampMs`.

## Audio en vivo

`wanLiveOpusUri` es un WebSocket que transmite audio Opus desde el micrófono del robot. Autentícalo igual que el WebSocket H.264 ([WebSocket (H.264 y audio)](https://developer.rhombus.com/es/authentication/media#websocket-h264-y-audio)).

## En la red local

Cuando tu cliente está en la red del robot, solicita una de las `lanCheckUrls`. Si responde `204`, usa las URL `lan…` para tener menos latencia y no generar tráfico por internet. [Streaming por LAN](https://developer.rhombus.com/es/implementations/lan-streaming) explica los certificados y la autenticación en la red local.
