Interface IBufferSourceAudioTrack

  • React

更新时间不可用

直接通过音频数据源创建的音频轨道,继承于 LocalAudioTrack, 在此之上提供了控制音频数据处理流程的功能(开始/暂停/跳转等等)。

可以通过 AgoraRTC.createBufferSourceAudioTrack 来获取。

Events

source-state-change

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

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

Parameters
参数名描述
currentStateAudioSourceState
required

当前音频数据处理状态:

  • "stopped": 音频源数据处理停止。可能是因为数据处理完毕,也可能是手动触发了停止。
  • "paused": 音频源数据暂停处理。
  • "playing": 音频源数据正在处理。
表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

Properties

currentState

currentState: AudioSourceState

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

duration

duration: number

音频总时长,单位为秒。

enabled

enabled: boolean

Inherited from IBufferSourceAudioTrack.enabled

本地轨道当前的启用状态。

isPlaying

isPlaying: boolean

Inherited from IBufferSourceAudioTrack.isPlaying

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

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

muted

muted: boolean

Inherited from IBufferSourceAudioTrack.muted

本地媒体轨道当前的静音状态。

playbackSpeed

playbackSpeed: number

自从

4.18.0

当前音频文件的播放速度。取值范围为 [50,400],其中:

  • 50: 0.5 倍速。
  • 100: (默认)原始速度。
  • 400: 4 倍速。

processorDestination

processorDestination: IAudioProcessor

Inherited from IBufferSourceAudioTrack.processorDestination

自从

4.10.0

本地音频轨道上当前媒体处理链路的最终节点。

source

source: string|File|AudioBuffer|null

创建时指定的 source 值。

trackMediaType

trackMediaType: "audio"|"video"

Inherited from IBufferSourceAudioTrack.trackMediaType

媒体轨道的类型:

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

Methods

close

close(): void

Inherited from IBufferSourceAudioTrack.close

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

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

Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

getCurrentTime

getCurrentTime(): number

获取当前的音频处理的进度,单位为秒。

Returns
返回类型描述

number

当前音频处理的进度。

表格内容超出当前宽度,可横向滚动查看更多列。

getListeners

getListeners(event: string): Function[]

Inherited from EventEmitter.getListeners

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

Parameters
参数名描述
eventstring
required

事件名称。

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

Function[]

表格内容超出当前宽度,可横向滚动查看更多列。

getMediaStreamTrack

getMediaStreamTrack(): MediaStreamTrack

Inherited from IBufferSourceAudioTrack.getMediaStreamTrack

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

Returns
返回类型描述

MediaStreamTrack

一个 MediaStreamTrack 对象。

表格内容超出当前宽度,可横向滚动查看更多列。

getRTCRtpTransceiver

getRTCRtpTransceiver(type?: StreamType): RTCRtpTransceiver | undefined

Inherited from IBufferSourceAudioTrack.getRTCRtpTransceiver

获取当前轨道的 RTCRtpTransceiver 实例。

该方法目前主要用于视频流的端到端加密(Beta)。

如果 SDK 发生断线重连,当前轨道对应的 RTCRtpTransceiver 实例可能会发生变化。你可以通过以下回调来获取新的 RTCRtpTransceiver 实例:

Parameters
参数名描述
optional

视频流的类型。详见 StreamType。

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

RTCRtpTransceiver | undefined

当前轨道的 RTCRtpTransceiver 实例。

表格内容超出当前宽度,可横向滚动查看更多列。

getStats

Inherited from IBufferSourceAudioTrack.getStats

Overrides ILocalTrack.getStats

获取本地音频轨道的质量相关信息。

deprecated

自 v4.1.0 起废弃,请使用 AgoraRTCClient.getLocalVideoStats 和 AgoraRTCClient.getLocalAudioStats。

Returns
返回类型描述
表格内容超出当前宽度,可横向滚动查看更多列。

getTrackId

getTrackId(): string

Inherited from IBufferSourceAudioTrack.getTrackId

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

Returns
返回类型描述

string

媒体轨道 ID。

表格内容超出当前宽度,可横向滚动查看更多列。

getTrackLabel

getTrackLabel(): string

Inherited from IBufferSourceAudioTrack.getTrackLabel

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

Returns
返回类型描述

string

可能返回以下值:

  • 如果是通过 createMicrophoneAudioTrack 或 createCameraVideoTrack 创建的轨道,返回 MediaDeviceInfo.label 字段。
  • 如果是通过 createScreenVideoTrack 创建的轨道,返回屏幕共享的 sourceId。
  • 如果是 createCustomAudioTrack 或 createCustomVideoTrack 创建的轨道,返回 MediaStreamTrack.label 字段。
表格内容超出当前宽度,可横向滚动查看更多列。

getVolumeLevel

getVolumeLevel(): number

Inherited from IBufferSourceAudioTrack.getVolumeLevel

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

Returns
返回类型描述

number

音量等级值,范围 [0, 1],1 代表理论最大音量。通常该值大于 0.6 代表用户在持续说话。

表格内容超出当前宽度,可横向滚动查看更多列。

off

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

Inherited from EventEmitter.off

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

Parameters
参数名描述
eventstring
required

指定事件的名称。

listenerFunction
required

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

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

on

on [1/2]

on(event: "source-state-change", listener: typeof event_source_state_change): void

Overrides ILocalAudioTrack.on

Parameters
参数名描述
event"source-state-change"
required

事件名称。

listenertypeof event_source_state_change
required
表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

on [2/2]

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

Overrides ILocalAudioTrack.on

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

Parameters
参数名描述
eventstring
required

事件名称。

listenerFunction
required

回调函数。

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

once

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

Inherited from EventEmitter.once

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

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

Parameters
参数名描述
eventstring
required

指定事件的名称。

listenerFunction
required

传入的回调函数。

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

pauseProcessAudioBuffer

pauseProcessAudioBuffer(): void

暂停处理音频数据。

Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

pipe

pipe(processor: IAudioProcessor): IAudioProcessor

Inherited from IBufferSourceAudioTrack.pipe

自从

4.10.0

将 Processor 注入本地音频轨道。

Parameters
参数名描述
processorIAudioProcessor
required

Processor 实例。每个插件均有对应类型的 Processor。

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

IAudioProcessor

Processor 实例。

表格内容超出当前宽度,可横向滚动查看更多列。

play

play(): void

Inherited from IBufferSourceAudioTrack.play

Overrides ILocalTrack.play

播放本地音频轨道。

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

Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

removeAllListeners

removeAllListeners(event?: string): void

Inherited from EventEmitter.removeAllListeners

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

Parameters
参数名描述
eventstring
optional

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

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

resumeProcessAudioBuffer

resumeProcessAudioBuffer(): void

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

Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

seekAudioBuffer

seekAudioBuffer(time: number): void

跳转到指定时间。

Parameters
参数名描述
timenumber
required

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

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

setAudioBufferPlaybackSpeed

setAudioBufferPlaybackSpeed(speed: number): void

自从

4.18.0

设置当前音频文件的播放速度。

在加入频道前和加入频道后,你都可以调用该方法。

Parameters
参数名描述
speednumber
required

播放速度。取值范围为 [50,400],其中:

  • 50: 0.5 倍速。
  • 100: (默认)原始速度。
  • 400: 4 倍速。
表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

setAudioFrameCallback

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

Inherited from IBufferSourceAudioTrack.setAudioFrameCallback

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

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

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

JavaScript
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);
Parameters
参数名描述
audioFrameCallbacknull | function
required

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

frameSizenumber
optional

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

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

setEnabled

setEnabled(enabled: boolean): Promise<void>

Inherited from IBufferSourceAudioTrack.setEnabled

自从

4.0.0

启用/禁用该轨道。

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

Parameters
参数名描述
enabledboolean
required

是否启用该轨道:

  • true: 启用该轨道。
  • false: 禁用该轨道。
表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

Promise<void>

表格内容超出当前宽度,可横向滚动查看更多列。

setMuted

setMuted(muted: boolean): Promise<void>

Inherited from IBufferSourceAudioTrack.setMuted

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

自从

4.6.0

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

Parameters
参数名描述
mutedboolean
required

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

  • true: 暂停发送该轨道的媒体数据。
  • false: 恢复发送该轨道的媒体数据。
表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

Promise<void>

表格内容超出当前宽度,可横向滚动查看更多列。

setPlaybackDevice

setPlaybackDevice(deviceId: string): Promise<void>

Inherited from IBufferSourceAudioTrack.setPlaybackDevice

自从

4.1.0

注意事项:

设置本地播放远端音频流的设备(扬声器)。

Parameters
参数名描述
deviceIdstring
required

设备 ID,可以通过 getPlaybackDevices 方法获取。

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

Promise<void>

表格内容超出当前宽度,可横向滚动查看更多列。

setVolume

setVolume(volume: number): void

Inherited from IBufferSourceAudioTrack.setVolume

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

Parameters
参数名描述
volumenumber
required

音量值,范围 [0, 1000], 0 代表静音,100 代表原始音量。100 以上会使用 WebAudio 进行音量增益。如果本地音频轨道已经发布,修改音量会影响远端听到的音量大小。

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

startProcessAudioBuffer

startProcessAudioBuffer(options?: AudioSourceOptions): void

开始处理音频数据源。

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

Parameters
参数名描述
optional

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

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

stop

stop(): void

Inherited from IBufferSourceAudioTrack.stop

停止播放。

Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

stopProcessAudioBuffer

stopProcessAudioBuffer(): void

停止处理音频数据。

Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

unpipe

unpipe(): void

Inherited from IBufferSourceAudioTrack.unpipe

自从

4.10.0

取消本地音频轨道上注入的 Processor。

Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。