Interface IBufferSourceAudioTrack
- Web
更新时间不可用
直接通过音频数据源创建的音频轨道,继承于 LocalAudioTrack, 在此之上提供了控制音频数据处理流程的功能(开始/暂停/跳转等等)。
可以通过 AgoraRTC.createBufferSourceAudioTrack 来获取。
Events
source-state-change
source-state-change(currentState: AudioSourceState): void当 BufferSourceAudioTrack 的音频数据源处理状态变化时,会触发此事件。
| 参数名 | 描述 |
|---|---|
currentStateAudioSourceState | 当前音频数据处理状态:
|
| 返回类型 | 描述 |
|---|---|
void |
Properties
currentState
currentState: AudioSourceState当前音频数据源的处理状态(开始/暂停/停止)。
duration
duration: number音频总时长,单位为秒。
enabled
enabled: booleanInherited from IBufferSourceAudioTrack.enabled
本地轨道当前的启用状态。
isPlaying
isPlaying: booleanInherited from IBufferSourceAudioTrack.isPlaying
媒体轨道是否正在页面上播放。
true: 媒体轨道正在页面上播放。false: 媒体轨道没有在页面上播放。
muted
muted: booleanInherited from IBufferSourceAudioTrack.muted
本地媒体轨道当前的静音状态。
playbackSpeed
playbackSpeed: number自从
4.18.0
当前音频文件的播放速度。取值范围为 [50,400],其中:
50: 0.5 倍速。100: (默认)原始速度。400: 4 倍速。
processorDestination
processorDestination: IAudioProcessorInherited 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(): voidInherited from IBufferSourceAudioTrack.close
关闭本地轨道,并释放相关采集设备。
一旦本地轨道被关闭,就无法再次使用。如需再次使用本地轨道,需要重新创建。
| 返回类型 | 描述 |
|---|---|
void |
getCurrentTime
getCurrentTime(): number获取当前的音频处理的进度,单位为秒。
| 返回类型 | 描述 |
|---|---|
number | 当前音频处理的进度。 |
getListeners
getListeners(event: string): Function[]Inherited from EventEmitter.getListeners
指定一个事件名,获取当前所有监听这个事件的回调函数。
| 参数名 | 描述 |
|---|---|
eventstring | 事件名称。 |
| 返回类型 | 描述 |
|---|---|
Function[] |
getMediaStreamTrack
getMediaStreamTrack(): MediaStreamTrackInherited from IBufferSourceAudioTrack.getMediaStreamTrack
获取浏览器原生的 MediaStreamTrack 对象。
| 返回类型 | 描述 |
|---|---|
MediaStreamTrack | 一个 MediaStreamTrack 对象。 |
getRTCRtpTransceiver
getRTCRtpTransceiver(type?: StreamType): RTCRtpTransceiver | undefinedInherited from IBufferSourceAudioTrack.getRTCRtpTransceiver
获取当前轨道的 RTCRtpTransceiver 实例。
该方法目前主要用于视频流的端到端加密(Beta)。
如果 SDK 发生断线重连,当前轨道对应的
RTCRtpTransceiver实例可能会发生变化。你可以通过以下回调来获取新的RTCRtpTransceiver实例:
| 参数名 | 描述 |
|---|---|
typeStreamType | 视频流的类型。详见 StreamType。 |
| 返回类型 | 描述 |
|---|---|
RTCRtpTransceiver | undefined | 当前轨道的 |
getStats
getStats(): LocalAudioTrackStatsInherited from IBufferSourceAudioTrack.getStats
Overrides ILocalTrack.getStats
获取本地音频轨道的质量相关信息。
deprecated
自 v4.1.0 起废弃,请使用 AgoraRTCClient.getLocalVideoStats 和 AgoraRTCClient.getLocalAudioStats。
| 返回类型 | 描述 |
|---|---|
getTrackId
getTrackId(): stringInherited from IBufferSourceAudioTrack.getTrackId
获取由 SDK 生成的对于媒体轨道来说的唯一 ID。
| 返回类型 | 描述 |
|---|---|
string | 媒体轨道 ID。 |
getTrackLabel
getTrackLabel(): stringInherited from IBufferSourceAudioTrack.getTrackLabel
获取本地轨道的来源描述。
| 返回类型 | 描述 |
|---|---|
string | 可能返回以下值:
|
getVolumeLevel
getVolumeLevel(): numberInherited from IBufferSourceAudioTrack.getVolumeLevel
获取本地音频轨道的音量等级。
| 返回类型 | 描述 |
|---|---|
number | 音量等级值,范围 [0, 1],1 代表理论最大音量。通常该值大于 0.6 代表用户在持续说话。 |
off
off(event: string, listener: Function): voidInherited from EventEmitter.off
取消一个指定事件的监听。
| 参数名 | 描述 |
|---|---|
eventstring | 指定事件的名称。 |
listenerFunction | 监听事件时传入的回调函数。 |
| 返回类型 | 描述 |
|---|---|
void |
on
on [1/2]
on(event: "source-state-change", listener: typeof event_source_state_change): voidOverrides ILocalAudioTrack.on
| 参数名 | 描述 |
|---|---|
event"source-state-change" | 事件名称。 |
listenertypeof event_source_state_change |
| 返回类型 | 描述 |
|---|---|
void |
on [2/2]
on(event: string, listener: Function): voidOverrides ILocalAudioTrack.on
当指定的事件触发时,会调用传入的回调函数。
| 参数名 | 描述 |
|---|---|
eventstring | 事件名称。 |
listenerFunction | 回调函数。 |
| 返回类型 | 描述 |
|---|---|
void |
once
once(event: string, listener: Function): voidInherited from EventEmitter.once
监听一个指定的事件,当事件触发时会调用传入的回调函数。
当监听后事件第一次触发时,该监听和回调函数就会被立刻移除,也就是只监听一次指定事件。
| 参数名 | 描述 |
|---|---|
eventstring | 指定事件的名称。 |
listenerFunction | 传入的回调函数。 |
| 返回类型 | 描述 |
|---|---|
void |
pauseProcessAudioBuffer
pauseProcessAudioBuffer(): void暂停处理音频数据。
| 返回类型 | 描述 |
|---|---|
void |
pipe
pipe(processor: IAudioProcessor): IAudioProcessorInherited from IBufferSourceAudioTrack.pipe
自从
4.10.0
将 Processor 注入本地音频轨道。
| 参数名 | 描述 |
|---|---|
processorIAudioProcessor |
|
| 返回类型 | 描述 |
|---|---|
IAudioProcessor |
|
play
play(): voidInherited from IBufferSourceAudioTrack.play
Overrides ILocalTrack.play
播放本地音频轨道。
播放音频时 SDK 不会创建任何 DOM 元素,所以无需像视频一样提供 DOM 元素。
| 返回类型 | 描述 |
|---|---|
void |
removeAllListeners
removeAllListeners(event?: string): voidInherited from EventEmitter.removeAllListeners
指定一个事件,取消其所有的监听。
| 参数名 | 描述 |
|---|---|
eventstring | 指定事件的名称,如果没有指定事件,则取消所有事件的所有监听。 |
| 返回类型 | 描述 |
|---|---|
void |
resumeProcessAudioBuffer
resumeProcessAudioBuffer(): void恢复被暂停的音频数据处理。
| 返回类型 | 描述 |
|---|---|
void |
seekAudioBuffer
seekAudioBuffer(time: number): void跳转到指定时间。
| 参数名 | 描述 |
|---|---|
timenumber | 指定的音频时间,单位为秒。 |
| 返回类型 | 描述 |
|---|---|
void |
setAudioBufferPlaybackSpeed
setAudioBufferPlaybackSpeed(speed: number): void自从
4.18.0
设置当前音频文件的播放速度。
在加入频道前和加入频道后,你都可以调用该方法。
| 参数名 | 描述 |
|---|---|
speednumber | 播放速度。取值范围为 [50,400],其中:
|
| 返回类型 | 描述 |
|---|---|
void |
setAudioFrameCallback
setAudioFrameCallback(audioFrameCallback: null | function, frameSize?: number): voidInherited from IBufferSourceAudioTrack.setAudioFrameCallback
设置原始音频数据(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);| 参数名 | 描述 |
|---|---|
audioFrameCallbacknull | function | 用于接收 AudioBuffer 的回调函数。设为 |
frameSizenumber | 每次回调的 |
| 返回类型 | 描述 |
|---|---|
void |
setEnabled
setEnabled(enabled: boolean): Promise<void>Inherited from IBufferSourceAudioTrack.setEnabled
自从
4.0.0
启用/禁用该轨道。
轨道禁用后,播放和发布都将被停止。
- 禁用轨道不会触发 LocalTrack.on("track-ended") 事件。
- 如果该轨道已发布,禁用轨道后,远端会触发 user-unpublished 事件。重新启用后,远端会触发 user-published 事件。
setEnabled和setMuted不能同时调用。
| 参数名 | 描述 |
|---|---|
enabledboolean | 是否启用该轨道:
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
setMuted
setMuted(muted: boolean): Promise<void>Inherited from IBufferSourceAudioTrack.setMuted
发送或暂停发送该轨道的媒体数据。
自从
4.0.0
如果该轨道已发布,调用 setMuted(true) 后,远端会触发 user-unpublished 事件。再调用 setMuted(false) 后,远端会触发 user-published 事件。
- 与 setEnabled 相比,调用该方法响应速度更快且不影响视频采集状态,详见 setEnabled 和 setMuted 有什么区别?。
setEnabled和setMuted不能同时调用。
| 参数名 | 描述 |
|---|---|
mutedboolean | 是否发送该轨道的媒体数据:
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
setPlaybackDevice
setPlaybackDevice(deviceId: string): Promise<void>Inherited from IBufferSourceAudioTrack.setPlaybackDevice
自从
4.1.0
注意事项
- 自 v4.7.0 起,该方法不再生效。请改用 IRemoteAudioTrack.setPlaybackDevice。
设置本地播放远端音频流的设备(扬声器)。
| 参数名 | 描述 |
|---|---|
deviceIdstring | 设备 ID,可以通过 getPlaybackDevices 方法获取。 |
| 返回类型 | 描述 |
|---|---|
Promise<void> |
setVolume
setVolume(volume: number): voidInherited from IBufferSourceAudioTrack.setVolume
设置本地音频轨道的音量。
| 参数名 | 描述 |
|---|---|
volumenumber | 音量值,范围 [0, 1000], 0 代表静音,100 代表原始音量。100 以上会使用 WebAudio 进行音量增益。如果本地音频轨道已经发布,修改音量会影响远端听到的音量大小。 |
| 返回类型 | 描述 |
|---|---|
void |
startProcessAudioBuffer
startProcessAudioBuffer(options?: AudioSourceOptions): void开始处理音频数据源。
开始处理音频数据源说明我们已经将音频数据送入 SDK 的处理节点。如果此时该音频轨道已发布,远端可以听到该音源的声音。 只有在调用 play 之后,音频数据才会送入声卡,此时本地才能听到该音源的声音。
| 参数名 | 描述 |
|---|---|
optionsAudioSourceOptions | 音频数据源处理的相关设置,包括是否需要循环播放/开始播放的位置。详见 AudioSourceOptions。 |
| 返回类型 | 描述 |
|---|---|
void |
stop
stop(): voidInherited from IBufferSourceAudioTrack.stop
停止播放。
| 返回类型 | 描述 |
|---|---|
void |
stopProcessAudioBuffer
stopProcessAudioBuffer(): void停止处理音频数据。
| 返回类型 | 描述 |
|---|---|
void |
unpipe
unpipe(): voidInherited from IBufferSourceAudioTrack.unpipe
自从
4.10.0
取消本地音频轨道上注入的 Processor。
| 返回类型 | 描述 |
|---|---|
void |