Offre de lancement : Les forfaits Creator et Business sont réduits pour une durée limitée. Voir les tarifs

Lire et accéder aux pistes

Choisissez comment l’accès est accordé, puis — lorsqu’un serveur crée une session de lecture — comment l’audio est lu. Le téléversement est une décision distincte ; voir Téléverser des pistes.

Sessions de lecture vs livraison signée

Une session de lecture (play session) est une autorisation de courte durée par auditeur créée via l’API (portée track ou collection — la portée playlist est réservée et renvoie 400). La livraison signée sans session de lecture signe une URL sur votre serveur avec une URL Signing key ; la possession du lien temporaire suffit pour l’accès. Vous pouvez combiner les deux (par exemple aperçus signés et pistes complètes contrôlées).

Lire et accéder aux tracks

Choisissez comment l’accès est accordé, puis — si nécessaire — comment l’audio est lu. Vous pouvez combiner les méthodes (par exemple des previews signées publiques et des play sessions contrôlées pour les tracks complets).

Comment l’accès à l’audio doit-il être accordé ?
Comment l’audio doit-il être lu ?

Composant web AudioDN Player avec une Client-Side Player key

Configuration de composant la plus rapide. Le player crée et renouvelle les sessions de lecture. Adapté lorsque l'approbation serveur par auditeur n'est pas requise.

1

Créer une Client-Side Player key

Dans le dashboard créez une clé Client-Side Player. Limitez-la éventuellement à une collection, une piste et/ou des variantes. Cette clé ne peut créer que des sessions de lecture — pas gérer les pistes ni les collections.

2

Installer le composant web Player

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

Ou depuis un CDN :

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

Afficher le composant web Player

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

Soit api-key, soit play-session-id est requis — jamais les deux. Voir la référence du Player component.

Lecteur personnalisé avec une Client-Side Player key

Votre application crée une session de lecture avec une Client-Side Player key à portée limitée et lit les URL de variantes signées dans votre propre interface.

1

Créer une Client-Side Player key

Limitez-la aux pistes, collections et variantes auxquelles l’application peut accéder. N’utilisez jamais une API Access key dans le code client.

2

Créer une session de lecture

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();

Le chemin de portée est /v1/play_session/track ou /v1/play_session/collection. variants est requis. Téléchargement uniquement lorsque la clé l’autorise et que la requête définit is_downloadable: true.

3

Récupérer les ressources de lecture et lire

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;

Session de lecture créée côté serveur avec le composant web AudioDN Player

Votre serveur vérifie le droit d'accès, crée une session de lecture et passe l'ID de session au composant web AudioDN Player.

1

Conservez une API Access key sur votre serveur

Créez une clé API Access. Ne l’exposez jamais au client.

2

Autoriser l'auditeur, puis créer une session de lecture

// 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();

Renvoyez uniquement play_session_id au client. Liste complète des paramètres : Play Sessions API.

3

Passer la session au composant web Player

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

Session de lecture créée côté serveur avec un lecteur personnalisé

Votre serveur crée la session de lecture ; votre lecteur web ou natif personnalisé utilise les ressources de lecture renvoyées.

1

Conservez une API Access key sur votre serveur

Serveur uniquement.

2

Autoriser, puis créer une session de lecture

// 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

Récupérer les URL de variantes et lire

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

Exemples natifs :

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;

Livraison signée sans session de lecture

Votre serveur signe une URL de livraison avec une URL Signing key. Pas de session de lecture, pas d'aller-retour API au moment de la lecture. La possession de l'URL temporaire accorde l'accès jusqu'à son expiration.

Pas d'application des droits par auditeur

Quiconque dispose d’une URL signée valide peut diffuser jusqu’à l’expiration de la signature. Signez sur votre serveur, choisissez une durée de vie raisonnable et n’exposez jamais le secret de signature. La livraison signée est une option de lecture — pas une méthode de téléversement, et pas pour le composant web AudioDN Player.

1

Créer une URL Signing key

Dans le dashboard créez une clé URL Signing. Le secret s’affiche une seule fois — stockez-le sur votre serveur. Optionnel : définissez le ttl de la signature et restreignez les variantes. Voir Signing Keys.

2

Trouver votre domaine de livraison

Chaque organisation a un hôte de livraison comme {organization_id}.audiodelivery.net. Copiez-le depuis Settings → Organization → Delivery Domain.

3

Signer l'URL sur votre serveur

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

Lire dans votre interface multimédia

<!-- 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>

Le composant web AudioDN Player utilise une Client-Side Player key ou play-session-id — pas une URL pré-signée. Les lectures depuis des URL signées comptent toujours pour l’usage et la facturation.

Références associées