# Interface IRemoteAudioTrack (/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

## Properties [#properties]

<a id="isplaying"></a>

### isPlaying [#isplaying]

<ApiSignature>

isPlaying: boolean

</ApiSignature>

Inherited from [IBufferSourceAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack).[isPlaying](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack#isplaying)

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

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

<a id="processordestination"></a>

### processorDestination [#processordestination]

<ApiSignature>

processorDestination: IAudioProcessor

</ApiSignature>

:::info[自从]
*4.13.0*
:::

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

<a id="trackmediatype"></a>

### trackMediaType [#trackmediatype]

<ApiSignature>

trackMediaType: "audio"|"video"

</ApiSignature>

Inherited from [IBufferSourceAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack).[trackMediaType](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack#trackmediatype)

媒体轨道的类型：

- `"audio"`: 音频轨道。
- `"video"`: 视频轨道。

## Methods [#methods]

<a id="getlisteners"></a>

### getListeners [#getlisteners]

<ApiSignature>

getListeners(event: string): Function[]

</ApiSignature>

Inherited from EventEmitter.getListeners

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

<ParameterList title="Parameters">
<Parameter name="event" type="string" required>

事件名称。

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

Function[]

</ApiReturnType>

</ApiReturns>

<a id="getmediastreamtrack"></a>

### getMediaStreamTrack [#getmediastreamtrack]

<ApiSignature>

getMediaStreamTrack(): MediaStreamTrack

</ApiSignature>

Inherited from [IBufferSourceAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack).[getMediaStreamTrack](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack#getmediastreamtrack)

获取浏览器原生的 [MediaStreamTrack](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack) 对象。

<ApiReturns>

<ApiReturnType>

MediaStreamTrack

</ApiReturnType>

一个 [MediaStreamTrack](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack) 对象。

</ApiReturns>

<a id="getrtcrtptransceiver"></a>

### getRTCRtpTransceiver [#getrtcrtptransceiver]

<ApiSignature>

getRTCRtpTransceiver(type?: [StreamType](/zh-CN/api-reference/rtc/web/enums/streamtype)): RTCRtpTransceiver | undefined

</ApiSignature>

Inherited from [IBufferSourceAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack).[getRTCRtpTransceiver](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack#getrtcrtptransceiver)

获取当前轨道的 [RTCRtpTransceiver](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver) 实例。

该方法目前主要用于视频流的[端到端加密（Beta）](/zh-CN/realtime-media/rtc/build/security-and-auth/e2e-encryption)。

> 如果 SDK 发生断线重连，当前轨道对应的 `RTCRtpTransceiver` 实例可能会发生变化。你可以通过以下回调来获取新的 `RTCRtpTransceiver` 实例：
>
> - 本地轨道：[ILocalTrack.transceiver-updated](/zh-CN/api-reference/rtc/web/interfaces/ilocaltrack#event_transceiver_updated)
> - 远端轨道：[IRemoteTrack.transceiver-updated](/zh-CN/api-reference/rtc/web/interfaces/iremotetrack#event_transceiver_updated_2)

<ParameterList title="Parameters">
<Parameter name="type" optional>

<ParameterType>

[StreamType](/zh-CN/api-reference/rtc/web/enums/streamtype)

</ParameterType>

视频流的类型。详见 [StreamType](/zh-CN/api-reference/rtc/web/enums/streamtype)。

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

RTCRtpTransceiver | undefined

</ApiReturnType>

当前轨道的 `RTCRtpTransceiver` 实例。

</ApiReturns>

<a id="getstats"></a>

### getStats [#getstats]

<ApiSignature>

getStats(): [RemoteAudioTrackStats](/zh-CN/api-reference/rtc/web/interfaces/remoteaudiotrackstats)

</ApiSignature>

Overrides [IRemoteTrack](/zh-CN/api-reference/rtc/web/interfaces/iremotetrack).[getStats](/zh-CN/api-reference/rtc/web/interfaces/iremotetrack#getstats)

获取远端音频轨道相关信息。

**不推荐使用** 请使用 [AgoraRTCClient.getRemoteAudioStats](/zh-CN/api-reference/rtc/web/interfaces/iagorartcclient#getremoteaudiostats) 获取远端音频轨道相关信息。

<ApiReturns>

<ApiReturnType>

[RemoteAudioTrackStats](/zh-CN/api-reference/rtc/web/interfaces/remoteaudiotrackstats)

</ApiReturnType>

一个 [RemoteAudioTrackStats](/zh-CN/api-reference/rtc/web/interfaces/remoteaudiotrackstats) 对象。

</ApiReturns>

<a id="gettrackid"></a>

### getTrackId [#gettrackid]

<ApiSignature>

getTrackId(): string

</ApiSignature>

Inherited from [IBufferSourceAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack).[getTrackId](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack#gettrackid)

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

<ApiReturns>

<ApiReturnType>

string

</ApiReturnType>

媒体轨道 ID。

</ApiReturns>

<a id="getuserid"></a>

### getUserId [#getuserid]

<ApiSignature>

getUserId(): [UID](/zh-CN/api-reference/rtc/web/globals#uid)

</ApiSignature>

Inherited from [IRemoteAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack).[getUserId](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack#getuserid)

获取发布远端轨道的远端用户 ID。

<ApiReturns>

<ApiReturnType>

[UID](/zh-CN/api-reference/rtc/web/globals#uid)

</ApiReturnType>

远端轨道对应的 `uid`。

</ApiReturns>

<a id="getvolume"></a>

### getVolume [#getvolume]

<ApiSignature>

getVolume(): number

</ApiSignature>

<ApiReturns>

<ApiReturnType>

number

</ApiReturnType>

</ApiReturns>

<a id="getvolumelevel"></a>

### getVolumeLevel [#getvolumelevel]

<ApiSignature>

getVolumeLevel(): number

</ApiSignature>

获取远端音频轨道的音量等级。

<ApiReturns>

<ApiReturnType>

number

</ApiReturnType>

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

</ApiReturns>

<a id="off"></a>

### off [#off]

<ApiSignature>

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

</ApiSignature>

Inherited from EventEmitter.off

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

<ParameterList title="Parameters">
<Parameter name="event" type="string" required>

指定事件的名称。

</Parameter>
<Parameter name="listener" type="Function" required>

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

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="on"></a>

### on [#on]

#### on [1/3] [#on-13]

<ApiSignature>

on(event: "track-updated", listener: typeof event_track_updated): void

</ApiSignature>

Inherited from [IRemoteAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack).[on](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack#on)

Overrides EventEmitter.on

<ParameterList title="Parameters">
<Parameter name="event" type="&quot;track-updated&quot;" required>

事件名称。

</Parameter>
<Parameter name="listener" type="typeof event_track_updated" required>

详见 [track-updated](/zh-CN/api-reference/rtc/web/globals#event_track_updated)。

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

#### on [2/3] [#on-23]

<ApiSignature>

on(event: "first-frame-decoded", listener: typeof event_first_frame_decoded): void

</ApiSignature>

Inherited from [IRemoteAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack).[on](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack#on)

Overrides EventEmitter.on

<ParameterList title="Parameters">
<Parameter name="event" type="&quot;first-frame-decoded&quot;" required>

事件名称。

</Parameter>
<Parameter name="listener" type="typeof event_first_frame_decoded" required>

详见 [first-frame-decoded](/zh-CN/api-reference/rtc/web/interfaces/iremotetrack#event_first_frame_decoded)。

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

#### on [3/3] [#on-33]

<ApiSignature>

on(event: "transceiver-updated", listener: typeof event_transceiver_updated_2): void

</ApiSignature>

Inherited from [IRemoteAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack).[on](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack#on)

Overrides EventEmitter.on

添加事件监听器。

<ParameterList title="Parameters">
<Parameter name="event" type="&quot;transceiver-updated&quot;" required>

事件名称。

</Parameter>
<Parameter name="listener" type="typeof event_transceiver_updated_2" required>

详见 [IRemoteTrack.transceiver-updated](/zh-CN/api-reference/rtc/web/interfaces/iremotetrack#event_transceiver_updated_2)。

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="once"></a>

### once [#once]

<ApiSignature>

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

</ApiSignature>

Inherited from EventEmitter.once

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

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

<ParameterList title="Parameters">
<Parameter name="event" type="string" required>

指定事件的名称。

</Parameter>
<Parameter name="listener" type="Function" required>

传入的回调函数。

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="pipe"></a>

### pipe [#pipe]

<ApiSignature>

pipe(processor: IAudioProcessor): IAudioProcessor

</ApiSignature>

:::info[自从]
*4.13.0*
:::

将 `Processor` 注入远端音频轨道。

<ParameterList title="Parameters">
<Parameter name="processor" type="IAudioProcessor" required>

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

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

IAudioProcessor

</ApiReturnType>

`Processor` 实例。

</ApiReturns>

<a id="play"></a>

### play [#play]

<ApiSignature>

play(): void

</ApiSignature>

Overrides [ILocalTrack](/zh-CN/api-reference/rtc/web/interfaces/ilocaltrack).[play](/zh-CN/api-reference/rtc/web/interfaces/ilocaltrack#play)

播放远端音频轨道。

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

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="removealllisteners"></a>

### removeAllListeners [#removealllisteners]

<ApiSignature>

removeAllListeners(event?: string): void

</ApiSignature>

Inherited from EventEmitter.removeAllListeners

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

<ParameterList title="Parameters">
<Parameter name="event" type="string" optional>

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

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="setamplifiedvolume"></a>

### setAmplifiedVolume [#setamplifiedvolume]

<ApiSignature>

setAmplifiedVolume(volume: number): void

</ApiSignature>

<ParameterList title="Parameters">
<Parameter name="volume" type="number" required />
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="setaudioframecallback"></a>

### setAudioFrameCallback [#setaudioframecallback]

<ApiSignature>

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

</ApiSignature>

设置原始音频数据（PCM）回调。

设置成功后，SDK 会不断地将远端音频轨道的音频帧以 [AudioBuffer](https://developer.mozilla.org/en-US/docs/Web/API/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);
```

<ParameterList title="Parameters">
<Parameter name="audioFrameCallback" type="null | function" required>

用于接收 [AudioBuffer](https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer) 的回调函数。设为 `null` 后，SDK 就会停止获取音频原始数据。

</Parameter>
<Parameter name="frameSize" type="number" optional>

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

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="setplaybackdevice"></a>

### setPlaybackDevice [#setplaybackdevice]

<ApiSignature>

setPlaybackDevice(deviceId: string): Promise&lt;void&gt;

</ApiSignature>

:::info[自从]
*4.1.0*
:::

设置音频播放设备，比如扬声器。

> 该方法只支持桌面端的 Chrome 和 Edge 浏览器，其他浏览器调用将会抛出 `NOT_SUPPORTED` 错误。

<ParameterList title="Parameters">
<Parameter name="deviceId" type="string" required>

设备 ID，可以通过 [getPlaybackDevices](/zh-CN/api-reference/rtc/web/interfaces/iagorartc#getplaybackdevices) 方法获取。

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

Promise&lt;void&gt;

</ApiReturnType>

</ApiReturns>

<a id="setvolume"></a>

### setVolume [#setvolume]

<ApiSignature>

setVolume(volume: number): void

</ApiSignature>

设置远端音频轨道的播放音量

<ParameterList title="Parameters">
<Parameter name="volume" type="number" required>

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

</Parameter>
</ParameterList>

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="stop"></a>

### stop [#stop]

<ApiSignature>

stop(): void

</ApiSignature>

Inherited from [IBufferSourceAudioTrack](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack).[stop](/zh-CN/api-reference/rtc/web/interfaces/ibuffersourceaudiotrack#stop)

停止播放。

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>

<a id="unpipe"></a>

### unpipe [#unpipe]

<ApiSignature>

unpipe(): void

</ApiSignature>

:::info[自从]
*4.13.0*
:::

取消远端音频轨道上注入的 `Processor`。

<ApiReturns>

<ApiReturnType>

void

</ApiReturnType>

</ApiReturns>
