Oferta de lanzamiento: Los planes Creator y Business tienen descuento por tiempo limitado. Ver precios

Reproducir y acceder a pistas

Elige cómo se concede el acceso y — cuando un servidor crea una sesión de reproducción — cómo se reproduce el audio. La subida es una decisión aparte; consulta Subir pistas.

Sesiones de reproducción vs entrega firmada

Una sesión de reproducción (play session) es una autorización de corta duración por oyente creada vía la API (alcance track o collection — el alcance playlist está reservado y devuelve 400). La entrega firmada sin sesión de reproducción firma una URL en tu servidor con una URL Signing key; la posesión del enlace temporal es acceso suficiente. Puedes combinar ambas (por ejemplo previsualizaciones firmadas y pistas completas con acceso controlado).

Reproducir y acceder a tracks

Elige cómo se concede el acceso y luego — si hace falta — cómo se reproduce el audio. Puedes combinar métodos (por ejemplo, vistas previas firmadas públicas y play sessions restringidas para tracks completos).

¿Cómo debe concederse el acceso al audio?
¿Cómo debe reproducirse el audio?

Componente web AudioDN Player con una Client-Side Player key

Configuración de componente más rápida. El player crea y renueva sesiones de reproducción. Adecuado cuando no se requiere aprobación por oyente en el servidor.

1

Crear una Client-Side Player key

En el dashboard crea una clave Client-Side Player. Opcionalmente limítala a una colección, pista y/o variantes. Esta clave solo puede crear sesiones de reproducción — no gestionar pistas ni colecciones.

2

Instalar el componente web Player

npm install @audiodn/components
import '@audiodn/components/player'

O desde un CDN:

<script type="module" src="https://unpkg.com/@audiodn/components@latest/dist/player.js"></script>
3

Renderizar el componente web Player

<audiodn-player
  api-key="CLIENT-SIDE-PLAYER-KEY"
  scope="collection"
  id="COLLECTION-ID"
  variant="hq"
  size="large"
></audiodn-player>

Se requiere api-key o play-session-id — nunca ambos. Consulta la referencia del Player component.

Reproductor personalizado con una Client-Side Player key

Tu app crea una sesión de reproducción con una Client-Side Player key con alcance y reproduce URLs de variantes firmadas en tu propia interfaz.

1

Crear una Client-Side Player key

Limítala a las pistas, colecciones y variantes a las que la app puede acceder. Nunca uses una API Access key en código de cliente.

2

Crear una sesión de reproducción

const response = await fetch('https://api.audiodelivery.net/v1/play_session/collection', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer CLIENT-SIDE-PLAYER-KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    collection_id: 'COLLECTION-ID',
    variants: ['hq', 'lq'],
    is_downloadable: false,
    expires_in: 3600
  })
});
const { play_session_id, tracks } = await response.json();

La ruta de alcance es /v1/play_session/track o /v1/play_session/collection. variants es obligatorio. Descarga solo cuando la clave lo permita y la solicitud establezca is_downloadable: true.

3

Obtener recursos de reproducción y reproducir

const response = await fetch(
  `https://api.audiodelivery.net/v1/play/${play_session_id}/${track_id}`
);
const { variants } = await response.json();
const url = variants.find((v) => v.variant.index === 'hq' || v.variant.id === 'hq').url;

Sesión de reproducción creada en el servidor con el componente web AudioDN Player

Tu servidor comprueba el derecho de acceso, crea una sesión de reproducción y pasa el ID de sesión al componente web AudioDN Player.

1

Mantén una API Access key en tu servidor

Crea una clave API Access. Nunca la expongas al cliente.

2

Autorizar al oyente y luego crear una sesión de reproducción

// After checking the listener's entitlement on your server:
const response = await fetch('https://api.audiodelivery.net/v1/play_session/collection', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_ACCESS_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    collection_id: 'COLLECTION-ID',
    variants: ['hq', 'lq'],
    is_downloadable: false,
    expires_in: 3600
  })
});

const { play_session_id, tracks, first_track } = await response.json();

Devuelve solo play_session_id al cliente. Lista completa de parámetros: Play Sessions API.

3

Pasar la sesión al componente web Player

npm install @audiodn/components
import '@audiodn/components/player'
<audiodn-player
  play-session-id="PLAY-SESSION-ID"
></audiodn-player>

Sesión de reproducción creada en el servidor con un reproductor personalizado

Tu servidor crea la sesión de reproducción; tu reproductor web o nativo personalizado usa los recursos de reproducción devueltos.

1

Mantén una API Access key en tu servidor

Solo en el servidor.

2

Autorizar y luego crear una sesión de reproducción

// After checking the listener's entitlement on your server:
const response = await fetch('https://api.audiodelivery.net/v1/play_session/collection', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_ACCESS_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    collection_id: 'COLLECTION-ID',
    variants: ['hq', 'lq'],
    is_downloadable: false,
    expires_in: 3600
  })
});

const { play_session_id, tracks, first_track } = await response.json();
3

Obtener URLs de variantes y reproducir

const track_id = tracks[0].id;

// No auth needed — the play session ID authorizes the request
const response = await fetch(
  `https://api.audiodelivery.net/v1/play/${play_session_id}/${track_id}`
);

const { variants } = await response.json();
const hq = variants.find((v) => v.variant.index === 'hq' || v.variant.id === 'hq');
// Use hq.url in your custom player

Ejemplos nativos:

const response = await fetch(
  `https://api.audiodelivery.net/v1/play/${play_session_id}/${track_id}`
);
const { variants } = await response.json();
const url = variants.find((v) => v.variant.index === 'hq' || v.variant.id === 'hq').url;

Entrega firmada sin sesión de reproducción

Tu servidor firma una URL de entrega con una URL Signing key. Sin sesión de reproducción, sin ida y vuelta a la API en el momento de la reproducción. La posesión de la URL temporal concede acceso hasta que expire.

No es aplicación de derechos por oyente

Cualquiera con una URL firmada válida puede reproducir hasta que expire la firma. Firma en tu servidor, elige una duración sensata y nunca expongas el secreto de firma. La entrega firmada es una opción de reproducción — no un método de subida, y no para el componente web AudioDN Player.

1

Crear una URL Signing key

En el dashboard crea una clave URL Signing. El secreto se muestra una sola vez — guárdalo en tu servidor. Opcional: establece el ttl de la firma y restringe variantes. Consulta Signing Keys.

2

Encontrar tu dominio de entrega

Cada organización tiene un host de entrega como {organization_id}.audiodelivery.net. Cópialo de Settings → Organization → Delivery Domain.

3

Firmar la URL en tu servidor

function base64url(bytes) {
  let binary = '';
  const b = new Uint8Array(bytes);
  for (let i = 0; i < b.byteLength; i++) binary += String.fromCharCode(b[i]);
  return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

async function hmacSha256(key, data) {
  const cryptoKey = await crypto.subtle.importKey(
    'raw', new TextEncoder().encode(key),
    { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']
  );
  return new Uint8Array(await crypto.subtle.sign('HMAC', cryptoKey, new TextEncoder().encode(data)));
}

// secret = URL Signing key secret (server-side only)
// domain = your org delivery host, e.g. "1bb2....audiodelivery.net"
// path   = the file path, e.g. "folder-id/track-index_lq.mp3"
async function signUrl(secret, domain, path) {
  const u = new URL('https://' + domain + '/' + path);
  u.searchParams.delete('verify');
  const message = u.pathname + (u.search || '');
  const issued = Math.floor(Date.now() / 1000).toString();
  const mac = await hmacSha256(secret, message + issued);
  u.searchParams.append('verify', issued + '-' + base64url(mac)); // verify MUST be last
  return u.toString();
}
// Express example: hand a freshly signed URL to your frontend.
app.get('/api/track-url', async (req, res) => {
  const url = await signUrl(
    process.env.ADN_SIGNING_SECRET,   // never expose to the client
    process.env.ADN_DELIVERY_DOMAIN,  // e.g. 1bb2....audiodelivery.net
    req.query.path
  );
  res.json({ url });
});
4

Reproducir en tu interfaz multimedia

<!-- Signed URL works anywhere a normal audio URL does. Not for <audiodn-player>. -->
<audio controls src="https://{org}.audiodelivery.net/{file_path}?verify={issued}-{mac}">
</audio>

El componente web AudioDN Player usa una Client-Side Player key o play-session-id — no una URL prefirmada. Las reproducciones desde URLs firmadas siguen contando para el uso y la facturación.

Referencias relacionadas