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

Recorder

Capturez l’audio du microphone dans le navigateur, prévisualisez-le avec un mini lecteur et une forme d’onde, puis envoyez une piste vers AudioDN.

Utilisation

Installez depuis npm et importez le composant, puis placez l’élément dans votre page. Fournissez une clé API d’envoi côté client et, optionnellement, un identifiant de collection vers laquelle envoyer. Avec une api-key, l’enregistreur crée la session d’envoi et la piste en une seule requête, puis transfère l’enregistrement (PUT). Si la clé API est limitée à une collection, l’identifiant de collection est résolu automatiquement.

L’enregistrement démarre après un court compte à rebours 3‑2‑1, et les noms de fichiers sont générés automatiquement à partir de l’horodatage UTC. Le navigateur choisit un type MIME pris en charge, en privilégiant Opus dans WebM/Ogg, puis MP4/AAC sur Safari.

Lorsque l’enregistrement a fini d’être transféré, le composant déclenche file-uploaded avec le nouveau trackId. Cela signifie que les octets ont atteint le stockage — pas que le traitement est terminé. Interrogez GET /v1/track/:track_id jusqu’à ce que track_status_id soit ready (ou écoutez un webhook de piste) avant de démarrer la lecture.

npm install @audiodn/components
import '@audiodn/components/recorder'
<audiodn-recorder
api-key="YOUR_API_KEY"
collection-id="COLLECTION_ID"
></audiodn-recorder>

Vous préférez sans étape de build ? Chargez-le directement depuis un CDN à la place :

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

Attributs

AttributTypeDéfautDescription
api-keystringClé API d’envoi côté client (sûre à utiliser dans le code front-end). Crée la session et la piste lors de l’envoi. api-key ou upload-session-id est requis.
upload-session-idstringIdentifiant de session d’envoi fourni par le serveur. Utilisez-le lorsque votre serveur crée les sessions pour le compte du client. upload-session-id ou api-key est requis.
collection-idstringCollection cible vers laquelle envoyer la piste (utilisé avec api-key). Optionnel lorsque la clé API est limitée à une collection.
accent-colorstring”#fe008a”Couleur d’accentuation du bouton d’enregistrement, de la forme d’onde et des contrôles. Un hex à 6 chiffres est préférable (également envoyé comme player_color lors d’un envoi via api-key). Si omise, la player_color de la collection/organisation est utilisée.
themestring”auto”Thème de couleur : “dark” (texte blanc sur fond sombre), “light” (texte sombre sur fond gris clair doux), ou “auto”. “auto” suit le réglage prefers-color-scheme du système / navigateur du visiteur et bascule en direct lorsqu’il change. Les propriétés CSS personnalisées individuelles (voir Thèmes) remplacent toujours la palette.
localestring”en”Langue de l’interface. Valeurs : en, fr, es, de.
countdownnumber3Durée du compte à rebours avant enregistrement (3 → 3‑2‑1). Mettez 0 pour ignorer le compte à rebours et démarrer immédiatement.
max-durationnumber0Durée maximale d’enregistrement en secondes. 0 (ou omis) signifie illimité ; l’enregistrement s’arrête automatiquement à l’atteinte de la limite.
auto-hidebooleanfalseAprès un envoi réussi, applique display: none à l’élément hôte. Effacez le style inline (ou remontez l’élément) pour l’afficher à nouveau.
disabledbooleanfalseDésactive les contrôles d’enregistrement lorsqu’il est défini.

Événements

Tous les événements se propagent et sont composés (traversent le shadow DOM). Écoutez file-uploaded lorsque l’envoi se termine — c’est le signal « envoi terminé » pour les hôtes et cela ne signifie pas que le traitement est ready.

<audiodn-recorder
api-key="YOUR_API_KEY"
collection-id="COLLECTION_ID"
countdown="3"
auto-hide
></audiodn-recorder>

<script type="module">
const recorder = document.querySelector('audiodn-recorder')
recorder.addEventListener('file-uploaded', (e) => {
  const { trackId, fileName, blob } = e.detail
  console.log('uploaded', trackId, fileName, blob.size)
})
</script>
ÉvénementdetailDéclenché quand
recording-startedLa capture du microphone a réellement commencé (après le compte à rebours, le cas échéant).
recording-stopped{ blob, duration }L’enregistrement est terminé ; l’aperçu est prêt.
recording-discardedL’utilisateur a supprimé le clip (ou annulé en cours d’enregistrement / de compte à rebours).
upload-progress{ percent }Progression de l’envoi (0–100).
file-uploaded{ trackId, fileName, blob }Les octets ont fini d’être envoyés au stockage. Ne signifie pas que la piste est ready.
session-error{ error }Une session d’envoi existante n’a pas pu être récupérée.
adn-session-refreshed{ uploadSessionId }Une nouvelle session a été créée lors de l’envoi (le parcours api-key).
adn-session-expired{ uploadSessionId }Une session pré-créée a expiré.

Par défaut

Appuyez pour enregistrer, prévisualisez le clip, puis envoyez-le. Nécessite une clé API et un identifiant de collection.

<audiodn-recorder
api-key="YOUR_API_KEY"
collection-id="COLLECTION_ID"
></audiodn-recorder>

Compte à rebours et durée maximale

Utilisez countdown pour définir le minuteur 3‑2‑1 avant enregistrement (ou 0 pour démarrer immédiatement), et max-duration pour arrêter automatiquement après un certain nombre de secondes. Cet exemple compte à rebours à partir de 2 et limite les enregistrements à 30 secondes.

<audiodn-recorder
api-key="YOUR_API_KEY"
collection-id="COLLECTION_ID"
countdown="2"
max-duration="30"
></audiodn-recorder>

Thèmes

Le moyen le plus rapide de basculer entre clair et sombre est l’attribut theme (“auto”, “dark” ou “light”) documenté ci-dessus — “auto” suit la préférence système du visiteur. Pour un contrôle plus fin, vous pouvez toujours surcharger les propriétés CSS personnalisées sur l’hôte pour restyliser l’enregistreur, avec la même API —adn-* que le lecteur.

Clair / Sombre (préférence système)

.theme-recorder-lightdark {
--adn-main-border: 1px solid light-dark(#ccc, #444);
--adn-bg: light-dark(#fff, #111);
--adn-bg-light: light-dark(#eee, #222);
--adn-color-font: light-dark(#222, #eee);
--adn-color-font-muted: light-dark(#666, #aaa);
--adn-color-accent: light-dark(#0066cc, #4da6ff);
--adn-color-accent-alt: light-dark(#fff, #111);
--adn-border-color: light-dark(#ccc, #444);
--adn-radius: 6px;
}
<audiodn-recorder
class="theme-recorder-lightdark"
api-key="YOUR_API_KEY"
collection-id="COLLECTION_ID"
></audiodn-recorder>

Midnight

.theme-recorder-midnight {
--adn-bg: #1a1a2e;
--adn-bg-light: #2a2a4e;
--adn-color-font: #e0e0e0;
--adn-color-font-muted: #8888aa;
--adn-color-accent: #7c3aed;
--adn-color-accent-rgb: 124, 58, 237;
--adn-color-accent-alt: #fff;
--adn-border-color: #3a3a5e;
--adn-color-highlight: rgba(124, 58, 237, 0.12);
--adn-radius: 12px;
--adn-main-border: 1px solid #3a3a5e;
--adn-box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
}
<audiodn-recorder
class="theme-recorder-midnight"
api-key="YOUR_API_KEY"
collection-id="COLLECTION_ID"
></audiodn-recorder>