Options
All
  • Public
  • Public/Protected
  • All
Menu

Class AudioTrackMixer

example
import AudioTrackMixer from 'audio-track-mixer';

Hierarchy

  • AudioTrackMixer

Index

Constructors

constructor

  • Create an audio track mixer / 创建一个音轨合并器

    throws

    Throw an error if the browser does not support to mix audio track / 如果浏览器不支持音轨合并,将抛出错误

    example
    const mixer = new AudioTrackMixer();

    Returns AudioTrackMixer

    An audio track mixer / 一个音轨合并器

Methods

addTrack

  • Add an audio track (MediaStreamTrack) into the mixer. / 向合并器添加一个音轨 (音轨)

    throws

    Throw an error if the track is not an audio kind MediaStreamTrack or it has already been added. / 添加的非合法音轨或已添加过该音轨时将抛出错误

    example
    mixer.addTrack(trackA);
    mixer.addTrack(trackB);
    note

    Because of the chain invoke, you can also use it just like the following way: / 因支持链接调用,所以你也可以像下面这样使用:

    mixer.addTrack(trackA).addTrack(trackB);

    Parameters

    • track: MediaStreamTrack

      An audio track / 一个音轨

    Returns AudioTrackMixer

    Return the mixer itself, so it support the chain invoke. / 返回音轨合并器本身以支持链式调用

destroy

  • destroy(): Promise<void>
  • Clear cache of the mixer and destroy it. / 销毁合并器

    example
    mixer
     .destroy()
     .catch(err => {
       ...
     });

    Returns Promise<void>

    An promise

getMixedMediaStream

  • getMixedMediaStream(): MediaStream
  • Get media stream which contains mixed audio track, you can play it directly. / 直接获取包含合并后音轨的媒体流,可用于直接播放

    example
    const audio = new Audio();
    audio.srcObject = mixer.getMixedMediaStream();

    Returns MediaStream

    The media stream includes the mixed audio track / 返回媒体流

getMixedTrack

  • getMixedTrack(): MediaStreamTrack
  • Get the mixed track from the mixer after mixing tracks. / 获取经过合并器合并后的音轨

    example
    const mixedTrack = mixer.getMixedTrack();

    Returns MediaStreamTrack

    The mixed audio track / 合并后的音轨

getMixedTrackVolume

  • getMixedTrackVolume(): number
  • Get the volume of the mixed track. / 获取合并后音轨的音量

    example
    const volume = mixer.getMixedTrackVolume();

    Returns number

    Volume range [0, 100] / 返回的音量范围为 [0, 100]

getTracks

  • getTracks(): MediaStreamTrack[]
  • Get all original tracksr (not the mixed one). / 获取所有原始音轨

    example
    const tracks = mixer.getTracks();

    Returns MediaStreamTrack[]

    Return all original tracks / 返回所有原始音轨

muteTrack

  • muteTrack(track: MediaStreamTrack): boolean
  • Mute a track. / 将某条音轨静音

    throws

    Throw an error if the track is not an audio kind MediaStreamTrack / 传入的非合法音轨时将抛出错误

    example
    const result = mixer.muteTrack(trackA);

    Parameters

    • track: MediaStreamTrack

      The track added into the mixer / 指定音轨

    Returns boolean

    True if mute successfully, False when failure / 成功时返回 true,失败时返回 false

removeTrack

  • Remove an audio track from the mixer. / 将某条音轨从合并器中移除

    throws

    Throw an error if the track is not an audio kind MediaStreamTrack. / 传入非合法音轨时将抛出错误

    example
    mixer.removeTrack(trackA);
    mixer.removeTrack(trackB);
    note

    Because of the chain invoke, you can also use it just like the following way: / 因支持链接调用,所以你也可以像下面这样使用:

    mixer.removeTrack(trackA).removeTrack(trackB);

    Parameters

    • track: MediaStreamTrack

      The audio track added into the mixer. / 已合并的音轨

    Returns AudioTrackMixer

    Return the mixer itself to support the chain invoke. / 返回合并器本身以支持链式调用

setTrackVolume

  • setTrackVolume(track: MediaStreamTrack, volume: number): void
  • Set volume of the track added into the mixer. / 调节原始音轨的输出音量

    throws

    Throw an error if the track is not an audio kind MediaStreamTrack / 当输入非合法音轨时将抛出错误

    example
    mixer.setTrackVolume(trackA, 50);

    Parameters

    • track: MediaStreamTrack

      The track added into the mixer / 指定音轨

    • volume: number

      Volume range [0, 100] / 指定音量,可设范围 [0, 100]

    Returns void

unmuteTrack

  • unmuteTrack(track: MediaStreamTrack): boolean
  • Unmute the track added into the mixer. / 将某条音轨取消静音

    throws

    Throw an error if the track is not an audio kind MediaStreamTrack / 传入的非合法音轨时将抛出错误

    example
    const result = mixer.unmuteTrack(trackA);

    Parameters

    • track: MediaStreamTrack

      The track added into the mixer / 指定音轨

    Returns boolean

    True if unmute successfully, False when failure / 成功时返回 true, 失败时返回 false

Static getMediaStreamFromElement

  • getMediaStreamFromElement(el: HTMLMediaElement): MediaStream | undefined
  • Get MediaStream from HTMLMediaElement. / 从媒体元素中获取媒体流

    example
    const audio = new Audio(xxx.mp3);
    audio.addEventListener('loadeddata', () => {
      const stream = AudioTrackMixer.getMediaStreamFromElement(audio);
      if (stream) {
        // You can get audio or video tracks after loadeddata, otherwise it will return blank. // 请在加载数据后再获取音视频轨道,否则将获取空
        const tracks = stream.getTracks();
      }
    });
    note

    Some browser may not support this API, such as Safari. / 部分浏览器不支持该 API,如 Safari

    note

    Media element must has already loaded data if you want get more information, such as AudioTracks. / 如果想获取更多的信息,请在提取前须确保媒体元数据已加载

    note

    In Firefox browser, the original sounds may disappear, you play the sounds with a new MediaElement or WebAudio API. / 在火狐浏览器中,调用此 API 之后,原声音会消失,若需要继续播放音频,请创建一个新的媒体元素或使用 WebAudio API 来播放

    Parameters

    • el: HTMLMediaElement

    Returns MediaStream | undefined

    MediaStream / 媒体流

Static getTracks

  • getTracks(stream: MediaStream): MediaStreamTrack[]
  • Get all audio tracks from a MediaStream. / 直接从 媒体流 中提取出所有音频轨道

    example
    const audioTracks = AudioTrackMixer.getTracks(stream);

    Parameters

    • stream: MediaStream

      A source MediaStream / 一条媒体流

    Returns MediaStreamTrack[]

    An Array of audio kind MediaStreamTrack / 包含若干个音轨的数组

Generated using TypeDoc