Prise en main
Copiez un prompt de configuration incluant les étapes d'installation et le guide markdown complet pour ce plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-audio-recorder`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/audio-recorder/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Installer
Section intitulée « Installation »Vous pouvez utiliser notre configuration assistée par IA pour installer le plugin. Ajoutez les skills Capgo à votre outil d'IA avec la commande suivante :
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsUtilisez ensuite le prompt suivant :
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-audio-recorder` plugin in my project.Si vous préférez une installation manuelle, installez le plugin en exécutant les commandes suivantes et suivez les instructions spécifiques à chaque plateforme ci-dessous :
bun add @capgo/capacitor-audio-recorderbunx cap syncImporter
Section intitulée « Import »import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';Démarrage rapide
Section intitulée « Démarrage rapide »Demandez l'accès au micro, enregistrez, puis arrêtez et lisez l'URI du fichier natif (ou web) Blob).
import { Capacitor } from '@capacitor/core';import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const mic = await CapacitorAudioRecorder.requestPermissions();if (mic.recordAudio !== 'granted') { throw new Error('Microphone permission required');}
await CapacitorAudioRecorder.startRecording({ sampleRate: 44100, bitRate: 128000, resetToPlaybackOnStop: true, // iOS only: restore playback-friendly audio session after stop});
const { uri, blob, duration } = await CapacitorAudioRecorder.stopRecording();const clipRef = Capacitor.getPlatform() === 'web' ? blob : uri;console.log('Saved clip', clipRef, duration);Exemple : mémo vocal avec pause
Section intitulée « Exemple : mémo vocal avec pause »await CapacitorAudioRecorder.startRecording();// user taps pause during a long noteawait CapacitorAudioRecorder.pauseRecording();await CapacitorAudioRecorder.resumeRecording();const clip = await CapacitorAudioRecorder.stopRecording();pauseRecording est disponible sur Android (API 24+), iOS et Web.
Exemple : indicateur de niveau en direct
Section intitulée « Exemple : indicateur de niveau en direct »Interroger getCurrentAmplitude() via un timer (environ 60 à 100 ms) pendant que le statut est RECORDING. Les valeurs sont normalisées 0 vers 1, mais le signal sous-jacent diffère selon la plateforme (peak sur Android, puissance moyenne sur iOS, RMS sur Web). Appliquez un léger facteur d'échelle par plateforme si vous souhaitez une parité visuelle.
const tick = async () => { const { status } = await CapacitorAudioRecorder.getRecordingStatus(); if (status !== 'RECORDING') return; const { value } = await CapacitorAudioRecorder.getCurrentAmplitude(); updateMeterUi(value);};Exemple : abandonner un enregistrement
Section intitulée « Exemple : abandonner un enregistrement »await CapacitorAudioRecorder.startRecording();await CapacitorAudioRecorder.cancelRecording(); // no file persistedErreurs courantes
Section intitulée « Erreurs courantes »- Différence de retour entre Web et natif: Android et iOS retournent
uridepuisstopRecording. Le Web retourneblob(et peut omettreuri). - Lecture silencieuse sur iOS après l'enregistrement: définissez
resetToPlaybackOnStop: truedansstartRecordingsi les utilisateurs relancent l'extrait au cours de la même session. - Capture en arrière-plan: le plugin n'active pas l'audio en arrière-plan par lui-même. Sur iOS, ajoutez le mode Audio background lorsque vous avez besoin d'enregistrer l'appareil verrouillé.
- Ne saturez pas l'amplitude: chaque
getCurrentAmplitudeappel traverse le bridge. Utilisez un intervalle UI plutôt qu'une boucle intensive.
Aperçu de API
Section intitulée « Aperçu API »startRecording
Section intitulée « startRecording »Commencer l'enregistrement audio via le microphone de l'appareil.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.startRecording();pauseRecording
Section intitulée « pauseRecording »Met en pause l'enregistrement en cours. Disponible uniquement sur Android (API 24+), iOS et Web.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.pauseRecording();resumeRecording
Section intitulée « resumeRecording »Reprend un enregistrement précédemment mis en pause.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.resumeRecording();stopRecording
Section intitulée « stopRecording »Arrête l'enregistrement actuel et sauvegarde l'audio enregistré.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.stopRecording();console.log(result);cancelRecording
Section intitulée « cancelRecording »Annule l'enregistrement actuel et supprime l'audio capturé.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.cancelRecording();getRecordingStatus
Section intitulée « getRecordingStatus »Récupère le statut actuel de l'enregistrement.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.getRecordingStatus();console.log(result);getCurrentAmplitude
Section intitulée « getCurrentAmplitude »Récupère l'amplitude d'entrée actuelle (niveau du micro) sous la forme d'un nombre
normalisé dans la [0, 1] range.
Destiné à piloter des visualisations en direct comme des VU meters ou des formes d'onde pendant l'enregistrement. Retourne 0 lorsqu'aucun enregistrement n'est actif. Conçu pour un polling au taux de rafraîchissement de l'UI — un intervalle de 60 à 100 ms est un bon point de départ pour une
forme d'onde. Évitez de l'appeler dans une boucle serrée ; chaque appel traverse le
bridge JS/natif.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.getCurrentAmplitude();console.log(result);checkPermissions
Section intitulée « checkPermissions »Retourne l'état actuel des permissions pour accéder au micro.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.checkPermissions();console.log(result);requestPermissions
Section intitulée « requestPermissions »Demander la permission d'accéder au microphone.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.requestPermissions();console.log(result);Référence de type
Section intitulée « Référence de type »StartRecordingOptions
Section intitulée « StartRecordingOptions »Options acceptées par .
export interface StartRecordingOptions { /** * The audio session category options for recording. Only available on iOS. * * @since 1.0.0 */ audioSessionCategoryOptions?: AudioSessionCategoryOption[];
/** * The audio session mode for recording. Only available on iOS. * * @since 1.0.0 */ audioSessionMode?: AudioSessionMode;
/** * The audio bit rate in bytes per second. * Only available on Android and iOS. * * @since 1.0.0 */ bitRate?: number;
/** * The audio sample rate in Hz. * Only available on Android and iOS. * * @since 1.0.0 */ sampleRate?: number;}StopRecordingResult
Section intitulée « StopRecordingResult »Résultat renvoyé par .
export interface StopRecordingResult { /** * The recorded audio as a Blob. Only available on Web. * * @since 1.0.0 */ blob?: Blob;
/** * The duration of the recording in milliseconds. * * @since 1.0.0 */ duration?: number;
/** * The URI pointing to the recorded file. Only available on Android and iOS. * * @since 1.0.0 */ uri?: string;}GetRecordingStatusResult
Section intitulée « GetRecordingStatusResult »Résultat renvoyé par .
export interface GetRecordingStatusResult { /** * The current recording status. * * @since 1.0.0 */ status: RecordingStatus;}GetCurrentAmplitudeResult
Section intitulée « GetCurrentAmplitudeResult »Résultat renvoyé par .
export interface GetCurrentAmplitudeResult { /** * The current input amplitude normalized to the `[0, 1]` range, where `0` * represents silence and `1` represents the maximum level the platform can * report. The value is `0` when no recording is active. * * Note: the source signal differs between platforms — Android reports the * peak sample amplitude since the last call, iOS reports the average power * in dB converted to linear, and Web reports the RMS of the latest frame. * Consumers that need cross-platform parity may want to apply a * per-platform scaling curve. * * @since 8.1.0 */ value: number;}PermissionStatus
Section intitulée « PermissionStatus »Informations de permission renvoyées par et .
export interface PermissionStatus { /** * The permission state for audio recording. * * @since 1.0.0 */ recordAudio: PermissionState;}RecordingErrorEvent
Section intitulée « RecordingErrorEvent »Événement émis lorsqu'une erreur survient pendant l'enregistrement.
export interface RecordingErrorEvent { /** * The error message. * * @since 1.0.0 */ message: string;}RecordingStoppedEvent
Section intitulée « RecordingStoppedEvent »Événement émis lorsqu'un enregistrement se termine.
export type RecordingStoppedEvent = StopRecordingResult;AudioSessionCategoryOption
Section intitulée « AudioSessionCategoryOption »Options de catégorie de session audio disponibles sur iOS.
export enum AudioSessionCategoryOption { AllowAirPlay = 'ALLOW_AIR_PLAY', AllowBluetooth = 'ALLOW_BLUETOOTH', AllowBluetoothA2DP = 'ALLOW_BLUETOOTH_A2DP', DefaultToSpeaker = 'DEFAULT_TO_SPEAKER', DuckOthers = 'DUCK_OTHERS', InterruptSpokenAudioAndMixWithOthers = 'INTERRUPT_SPOKEN_AUDIO_AND_MIX_WITH_OTHERS', MixWithOthers = 'MIX_WITH_OTHERS', OverrideMutedMicrophoneInterruption = 'OVERRIDE_MUTED_MICROPHONE_INTERRUPTION',}AudioSessionMode
Section intitulée « AudioSessionMode »Modes de session audio disponibles sur iOS.
export enum AudioSessionMode { Default = 'DEFAULT', GameChat = 'GAME_CHAT', Measurement = 'MEASUREMENT', SpokenAudio = 'SPOKEN_AUDIO', VideoChat = 'VIDEO_CHAT', VideoRecording = 'VIDEO_RECORDING', VoiceChat = 'VOICE_CHAT',}RecordingStatus
Section intitulée « RecordingStatus »Le statut de l'enregistrement.
export enum RecordingStatus { Inactive = 'INACTIVE', Recording = 'RECORDING', Paused = 'PAUSED',}PermissionState
Section intitulée « PermissionState »États de permission de plateforme pris en charge par Capacitor.
export type PermissionState = 'prompt' | 'prompt-with-rationale' | 'granted' | 'denied';Source de vérité
Section intitulée « Source de vérité »Cette page est générée à partir de src/definitions.ts. Relancez la synchronisation lorsque l’API public change en amont.
Continuer depuis Getting Started
Section intitulée « Continuer après Prise en main »Si vous utilisez Prise en main pour planifier le comportement des médias et de l'interface natifs, connectez-l’à Utiliser @capgo/capacitor-audio-recorder pour la capacité native dans l'utilisation de @capgo/capacitor-audio-recorder, Utiliser @capgo/capacitor-live-activities pour la capacité native dans Utiliser @capgo/capacitor-live-activities @capgo/capacitor-live-activities pour le détail d'implémentation dans @capgo/capacitor-live-activities Utiliser @capgo/capacitor-video-player pour la capacité native dans Utiliser @capgo/capacitor-video-player, et @capgo/capacitor-video-player pour le détail d'implémentation dans @capgo/capacitor-video-player.