import * as _vueuse_core0 from "@vueuse/core"; import { UseRafFnCallbackArguments } from "@vueuse/core"; import * as vue from "vue"; //#region src/use-audio-context.d.ts /** * 音频上下文淡入淡出选项 * @example * const fadeOptions: AudioContextFadeOptions = { * fade: true, * duration: 1.0 * } */ type AudioContextFadeOptions = { /** 是否启用淡入淡出效果,默认为 false */fade?: boolean; /** 淡入淡出持续时间(秒),默认为 0.5 */ duration?: number; }; /** * 音频上下文配置选项 * @example * const options: AudioContextOptions = { * volume: 0.7, * playbackRate: 1.0, * fade: true, * timeUpdateFormat: (time) => Math.floor(time) * } */ type AudioContextOptions = { /** 初始音量(0-1),默认为 1 */volume?: number; /** 初始播放速率,默认为 1 */ playbackRate?: number; /** 淡入淡出配置,默认为 false */ fade?: AudioContextFadeOptions | boolean; /** 时间更新格式化函数,默认为 (time) => time */ timeUpdateFormat?: (time: number) => number; }; /** * 音频上下文管理 * 提供音频播放控制、音量管理、均衡器调节、频率分析等功能 * * @param options 配置选项 * @returns 音频上下文管理对象 * * @example * // 基本用法 * const { * volume, * setVolume, * muted, * toggleMute, * playing, * play, * pause, * resume, * stop, * toggle * } = useAudioContext({ * volume: 0.7, * fade: true * }) * * play('https://example.com/audio.mp3') * * @example * // 监听音频事件 * const { onPlaying, onPaused, onEnded, onVolumeUpdate } = useAudioContext() * * onPlaying((audioElement) => { * console.log('开始播放') * }) * * onVolumeUpdate((audioElement, volume) => { * console.log('音量变化:', volume) * }) * * @example * // 使用均衡器 * const { setEQFrequency, getEQFrequencies, getFrequencyData } = useAudioContext() * * setEQFrequency(0, 10) // 提升 32Hz 频率 * const eqSettings = getEQFrequencies() * const frequencyData = getFrequencyData() */ declare function useAudioContext(options?: AudioContextOptions): { eqFrequencies: readonly [32, 64, 125, 250, 500, 1000, 2000, 4000, 8000, 16000]; audioContext: AudioContext; audioElement: HTMLAudioElement; sourceNode: MediaElementAudioSourceNode; gainNode: GainNode; analyserNode: AnalyserNode; filters: BiquadFilterNode[]; filterNode: BiquadFilterNode; volume: Readonly>; setVolume: (volume: number) => void; muted: Readonly>; setMuted: (muted?: boolean) => void; toggleMute: () => void; playbackRate: Readonly>; setPlaybackRate: (playbackRate: number) => void; playing: Readonly>; paused: Readonly>; ended: Readonly>; currentTime: Readonly>; currentTimeText: vue.ComputedRef; setCurrentTime: (time: number) => void; duration: Readonly>; durationText: vue.ComputedRef; progress: Readonly>; setProgress: (progress: number) => void; cachedDuration: Readonly>; cachedDurationText: vue.ComputedRef; cachedProgress: Readonly>; url: Readonly>; play: (url: string) => Promise; pause: (options?: AudioContextFadeOptions) => void; resume: (options?: AudioContextFadeOptions) => void; stop: () => void; toggle: (options?: AudioContextFadeOptions) => void; getFrequencyData: () => Uint8Array; setEQFrequency: (index: number, value: number) => void; getEQFrequency: (index: number) => number; getEQFrequencies: () => { frequency: 32 | 64 | 125 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000; gain: number; }[]; onVolumeUpdate: _vueuse_core0.EventHookOn<[HTMLAudioElement, number]>; onMuted: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; onRateUpdate: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; onTimeUpdate: _vueuse_core0.EventHookOn<[HTMLAudioElement, number]>; onTimeUpdateRaf: _vueuse_core0.EventHookOn<[HTMLAudioElement, { currentTime: number; progress: number; }, UseRafFnCallbackArguments]>; onDurationUpdate: _vueuse_core0.EventHookOn<[HTMLAudioElement, number]>; onPlaying: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; onPaused: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; onEnded: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; }; /** * useAudioContext 返回类型 * 包含音频上下文、音频元素、节点、状态、方法和事件钩子 * @example * const audio: UseAudioContextReturns = useAudioContext() */ type UseAudioContextReturns = ReturnType; //#endregion export { AudioContextFadeOptions, AudioContextOptions, UseAudioContextReturns, useAudioContext };