交互控件VoiceNote波形拖动倍速播放互斥
语音条
带可拖动波形与播放控制的语音消息条,支持倍速切换,多条的播放会互相打断。
上面的组件正在页面上实时运行,可以直接交互。
安装
在项目根目录执行下面的命令,组件源码会写入 @/components/ui/voice-note.tsx。
npx shadcn@latest add swamimalode07/rare-ui/voice-note用法
组件默认导出(或具名导出)即可直接使用,不需要额外的 Provider。
voice-note.tsx
属性
下表列出了该组件公开的主要属性,所有未列出的原生属性都会透传到根元素。
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| src | string | — | 音频地址;省略时使用模拟播放。 |
| duration | number | — | 时长(秒)。 |
| waveform | number[] | — | 自定义波形振幅数组。 |
| bars | number | — | 波形柱数量。 |
| seed | number | — | 随机波形种子,保证前后端一致。 |
| playing | boolean | — | 受控播放状态。 |
| onPlayingChange | (playing: boolean) => void | — | 播放状态回调。 |
| onEnded | () => void | — | 播放结束回调。 |
| accent | string | — | 进度强调色。 |
| size | "sm" | "md" | "lg" | "md" | 尺寸。 |
| seekable | boolean | true | 波形是否可拖动。 |
| speeds | number[] | — | 可切换的倍速列表。 |