BufferSourceAudioTrack

最近更新时间:2023-11-06 02:37:12

事件回调

source-state-change

source-state-change(currentState: AudioSourceState): void

当 BufferSourceAudioTrack 的音频数据源处理状态变化时,会触发此事件。

参数

  • currentState: AudioSourceState

    当前音频数据处理状态:

    • "stopped": 音频源数据处理停止。可能是因为数据处理完毕,也可能是手动触发了停止。
    • "paused": 音频源数据暂停处理。
    • "playing": 音频源数据正在处理。

返回值 void

属性

currentState

currentState: AudioSourceState

当前音频数据源的处理状态(开始/暂停/停止)。

duration

duration: number

音频总时长,单位为秒。

isPlaying

isPlaying: boolean

媒体轨道是否正在页面上播放。

  • true: 媒体轨道正在页面上播放。
  • false: 媒体轨道没有在页面上播放。

source

source: string | File | AudioBuffer

trackMediaType

trackMediaType: "audio" | "video"

媒体轨道的类型:

  • "audio": 音频轨道。
  • "video": 视频轨道。

方法

close

close(): void

关闭本地轨道,并释放相关采集设备。

一旦本地轨道被关闭,就无法再次使用。如需再次使用本地轨道,需要重新创建。

如果释放的轨道处于发布状态时,收到track-ended时应执行取消发布操作。

track.on("track-ended", () => {
    // 建议本地发布之后 设置一个变量做为本地有无发布的判断条件,在取消发布前做一下判断,
    // 并且在取消判断后对该值进行取反操作方便下次做判断;
    client.unpublish(track);
});

返回值 void

getCurrentTime

getCurrentTime(): number

Gets the progress (seconds) of the audio buffer processing.

返回值 number

The progress (seconds) of the audio buffer processing.

getListeners

getListeners(event: string): Function[]

指定一个事件名,获取当前所有监听这个事件的回调函数。

参数

  • event: string

    事件名称。

返回值 Function[]

getMediaStreamTrack

getMediaStreamTrack(): MediaStreamTrack

获取浏览器原生的 MediaStreamTrack 对象。

返回值 MediaStreamTrack

一个 MediaStreamTrack 对象。

getTrackId

getTrackId(): string

获取由 SDK 生成的对于媒体轨道来说的唯一 ID。

返回值 string

媒体轨道 ID。

getTrackLabel

getTrackLabel(): string

获取本地轨道的来源描述。

返回值 string

可能返回以下值:

  • 如果是通过 createMicrophoneAudioTrackcreateCameraVideoTrack 创建的轨道,返回 MediaDeviceInfo.label 字段。
  • 如果是通过 createScreenVideoTrack 创建的轨道,返回屏幕共享的 sourceId
  • 如果是 createCustomAudioTrackcreateCustomVideoTrack 创建的轨道,返回 MediaStreamTrack.label 字段。

getVolumeLevel

getVolumeLevel(): number

获取本地音频轨道的音量等级。

返回值 number

音量等级值,范围 [0, 1],1 代表理论最大音量。

off

off(event: string, listener: Function): void

取消一个指定事件的监听。

参数

  • event: string

    指定事件的名称。

  • listener: Function

    监听事件时传入的回调函数。

返回值 void

on

on(event: string, listener: Function): *void

参数

  • event: string

    指定事件的名称。

  • listener: Function

    监听事件时传入的回调函数。

返回值 void

once

once(event: string, listener: Function): void

监听一个指定的事件,当事件触发时会调用传入的回调函数。

当监听后事件第一次触发时,该监听和回调函数就会被立刻移除,也就是只监听一次指定事件。

参数

  • event: string

    指定事件的名称。

  • listener: Function

    监听事件时传入的回调函数。

返回值 void

pauseProcessAudioBuffer

pauseProcessAudioBuffer(): void

暂停处理音频数据。

返回值 void

play

play(): void

播放本地音频轨道。

播放音频时 SDK 不会创建任何 DOM 元素,所以无需像视频一样提供 DOM 元素。

返回值 void

removeAllListeners

removeAllListeners(event?: undefined | string): void

指定一个事件,取消其所有的监听。

参数

  • Optional event: undefined | string

    指定事件的名称,如果没有指定事件,则取消所有事件的所有监听。

返回值 void

resumeProcessAudioBuffer

resumeProcessAudioBuffer(): void

恢复被暂停的音频数据处理。

返回值 void

seekAudioBuffer

seekAudioBuffer(time: number): void

跳转到指定时间。

参数

  • time: number

    指定的音频时间,单位为秒。

返回值 void

setAudioFrameCallback

setAudioFrameCallback(audioFrameCallback: null | function, frameSize?: undefined | number): void

设置原始音频数据(PCM)回调。

设置成功后,SDK 会不断地将本地音频轨道的音频帧以 AudioBuffer 的形式通过回调返回。

你可以通过 frameSize 来设置每次回调中音频帧的大小。该设置也会影响回调的间隔,frameSize 越大,每次回调的音频数据越多,回调间隔越长。

track.setAudioFrameCallback((buffer) => {
  for (let channel = 0; channel < buffer.numberOfChannels; channel += 1) {
    // Float32Array with PCM data
    const currentChannelData = buffer.getChannelData(channel);
    console.log("PCM data in channel", channel, currentChannelData);
  }
}, 2048);

// ....
// Stop getting the raw audio data
track.setAudioFrameCallback(null);

参数

  • audioFrameCallback: null | function

    用于接收 AudioBuffer 的回调函数。设为 null 后,SDK 就会停止获取音频原始数据。

  • Optional frameSize: undefined | number

    每次回调的 AudioBuffer 中每个声道包含的采样数据个数,只能设为下列值:256, 512, 1024, 2048, 4096, 8192, 16384。默认为 4096。

返回值 void

setEnabled

setEnabled(enabled: boolean): void

启用/禁用该轨道。

轨道禁用后,播放和发布都将被停止。

禁用轨道不会触发 LocalTrack.on("track-ended") 事件。

参数

  • enabled: boolean

    是否启用该轨道:

    • true: 启用该轨道.
    • false: 禁用该轨道.

返回值 void

setMuted

  • setMuted(muted: boolean): Promise<void>

发送或暂停发送该轨道的媒体数据。

如果该轨道已发布,调用 setMuted(true) 后,远端会触发 user-unpublished 事件。再调用 setMuted(false) 后,远端会触发 user-published 事件。

参数

  • muted: boolean

    是否发送该轨道的媒体数据:

    • true: 暂停发送该轨道的媒体数据。
    • false: 恢复发送该轨道的媒体数据。

返回值 Promise<void>


setVolume

setVolume(volume: number): void

设置本地音频轨道的音量。

参数

  • volume: number

    音量值,范围 [0, 1000], 0 代表静音,100 代表原始音量。

返回值 void

startProcessAudioBuffer

startProcessAudioBuffer(options?: AudioSourceOptions): void

开始处理音频数据源。

开始处理音频数据源说明我们已经将音频数据送入 SDK 的处理节点。如果此时该音频轨道已发布,远端可以听到该音源的声音。 只有在调用 play 之后,音频数据才会送入声卡,此时本地才能听到该音源的声音。

参数类型描述
optionsAudioSourceOptions音频数据源处理的相关设置,包括是否需要循环播放/开始播放的位置。详见 AudioSourceOptions

参数

返回值 void

stop

stop(): void

停止播放。

返回值 void

stopProcessAudioBuffer

stopProcessAudioBuffer(): void

停止处理音频数据。

返回值 void