@tingxin_cy/web-audio-player
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

@tingxin_cy/web-audio-player

  • Web 端音频播放器库,相比于原生 Audio 类支持更多高级能力,例如定点播放、区间播放、循环播放、音量控制、速率控制等。
  • 为了实现高级播放器功能,内部基于的 WebAudioApi 进行实现,所以播放器需要基于 AudioBuffer 进行初始化而非 url。
  • 播放器内置 AudioBuffer 加载工具,支持基于 url 加载和基于本地文件进行加载。
import WebAudioPlayer, { loadAudioFromUrl, TPlayerState } from '@tingxin_cy/web-audio-player';

const loader = loadAudioFromUrl({
  url,
  onloadstart: () => {
    console.log(`loadPercent: 0`);
  },
  onprogress: (data) => {
    console.log(`loadPercent: ${data.loaded / data.total}`);
  },
});

loader.then((audioBuffer) => {
  // 创建播放器实例
  this.player = new WebAudioPlayer();
  this.player.audioBuffer = audioBuffer;
  this.player.onStateChange = (state: TPlayerState) => {
    console.log(state);
  };

  // 循环播放,从10s处开始播放,当播放至25s之后便进入15s-25s循环播放
  this.player.setConfig({
    loop: true,
    startOffset: 10,
    loopStart: 15,
    loopEnd: 25,
  });

  // 非循环播放,从10s处开始播放,播放至20s处结束
  this.player.setConfig({
    loop: false,
    startOffset: 10,
    endOffset: 20,
  });

  // 开始播放
  this.player.play();
});

属性

  • audioBuffer (AudioBuffer) (read & write): 音频资源
  • currentTime (Number) (read-only): 当前播放时间
  • duration (Number) (read-only): 当前音频总时长
  • state (TPlayerState) (read-only): 当前播放器状态
    • stop: 播放器初始状态,播放器处于起点状态。
    • running: 播放中
    • paused: 暂停中
    • ended: 非循环模式下,播放至结尾结束播放,可针对该状态实现特殊业务逻辑
  • config (playerConfig)(read): 播放器配置
    • loop?:boolean; 循环播放
    • rateValue?:number; 播放速率
    • gainValue?:number; 音量增益
    • startOffset?:number; 起始播放偏移量,可以理解为播放起点时间,在循环播放模式下,startOffset 必须小于 loopEnd,单位秒。
    • endOffset?: number; 终点播放偏移量,可以理解为播放终点时间,仅适用于非循环播放模式下,endOffset 必须大于 startOffset
    • loopStart?:number; 循环区间起点,单位秒。
    • loopEnd?:number; 循环区间终点,loopEnd 必须大于 loopStart,单位秒

方法

  • play(): 开始播放
  • pause(): 暂停播放
  • stop(): 停止播放,播放进度重置回起点(startOffset)
  • destroy(): 销毁播放器,释放资源占用

音频加载方法

  • loadAudioFromUrl(options: IAudioLoaderOptions): 通过 Url 加载音频资源,加载进度实时监听,返回 AudioBuffer,资源地址需要支持跨域访问。
  • loadAudioFromFile(file: File): 通过本地文件加载音频资源,加载进度实时监听,返回 AudioBuffer。

Readme

Keywords

none

Package Sidebar

Install

npm i @tingxin_cy/web-audio-player

Weekly Downloads

2

Version

1.0.2

License

none

Unpacked Size

96 kB

Total Files

10

Last publish

Collaborators

  • tingxin_cy