LocalTrack 为本地轨道的基础类,为音频轨道 LocalAudioTrack 和视频轨道 LocalVideoTrack 提供一些公共的方法。
import ArRTC from "ar-rtc-sdk";
var audioTrack = null; // 本地存放音频轨道
var videoTrack = null; // 本地存放视频轨道
/**
* 采集音视频
*/
async function () {
[audioTrack, videoTrack] = await ArRTC.createMicrophoneAndCameraTracks();
}()
继承
- Track
- LocalTrack
事件回调
track-ended
track-ended(): void
注意
如果释放的轨道处于发布状态时,收到track-ended
时应执行取消发布操作。
audioTrack.on("track-ended", () => {
rtcClient.unpublish(audioTrack);
});
videoTrack.on("track-ended", () => {
rtcClient.unpublish(videoTrack);
});
音频或视频轨道被终止,终止的原因可能是:
- 摄像头被拔出
- 麦克风被拔出
- 用户主动停止了屏幕共享
- 该轨道被主动关闭
- 媒体设备故障
返回值 void
属性
isPlaying
isPlaying: boolean
媒体轨道是否正在页面上播放。
console.log("音频是否正在页面上播放", audioTrack.isPlaying)
console.log("视频是否正在页面上播放", videoTrack.isPlaying)
true
: 媒体轨道正在页面上播放。false
: 媒体轨道没有在页面上播放。
trackMediaType
trackMediaType: "audio" | "video"
媒体轨道的类型:
"audio"
: 音频轨道。"video"
: 视频轨道。
方法
close
close(): void
关闭本地轨道,并释放相关采集设备。
一旦本地轨道被关闭,就无法再次使用。如需再次使用本地轨道,需要重新创建。
注意
如果释放的轨道处于发布状态时,收到track-ended
时应执行取消发布操作。
audioTrack.on("track-ended", () => {
rtcClient.unpublish(audioTrack);
});
videoTrack.on("track-ended", () => {
rtcClient.unpublish(videoTrack);
});
audioTrack && audioTrack.close(); // 释放音频设备
videoTrack && videoTrack.close(); // 释放视频设备
返回值 void
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
可能返回以下值:
- 如果是通过
createMicrophoneAudioTrack
或createCameraVideoTrack
创建的轨道,返回 MediaDeviceInfo.label 字段。 - 如果是通过
createScreenVideoTrack
创建的轨道,返回屏幕共享的sourceId
。 - 如果是
createCustomAudioTrack
或createCustomVideoTrack
创建的轨道,返回 MediaStreamTrack.label 字段。
off
off(event: string, listener: Function): void
取消一个指定事件的监听。
参数
-
event: string
指定事件的名称。
-
listener: Function
监听事件时传入的回调函数。
返回值 void
on
on(event: "track-ended", listener: event_track_ended): void
注意
如果释放的轨道处于发布状态时,收到track-ended
时应执行取消发布操作。
audioTrack.on("track-ended", () => {
rtcClient.unpublish(audioTrack);
});
参数
-
event: "track-ended"
-
listener: event_track_ended
返回值 void
once
once(event: string, listener: Function): void
监听一个指定的事件,当事件触发时会调用传入的回调函数。
当监听后事件第一次触发时,该监听和回调函数就会被立刻移除,也就是只监听一次指定事件。
参数
-
event: string
指定事件的名称。
-
listener: Function
传入的回调函数。
返回值 void
play
play(element?: string | HTMLElement): void
在页面上播放媒体轨道。
// 在页面上播放视频
videoTrack.play("xxx");
// 在页面上播放音频
audioTrack.play();
参数
-
Optional element: string | HTMLElement
指定一个 DOM 元素,SDK 将在这个元素下创建
<video>
元素播放视频轨道,支持 2 种类型:string
: 指定该 DOM 元素的 ID 值。HTMLElement
: 直接传入一个 DOM 元素对象。
返回值 void
removeAllListeners
removeAllListeners(event?: undefined | string): void
指定一个事件,取消其所有的监听。
参数
-
Optional event: undefined | string
指定事件的名称,如果没有指定事件,则取消所有事件的所有监听。
返回值 void
setEnabled
- setEnabled(enabled: boolean): Promise<void>
启用/禁用该轨道。
轨道禁用后,播放和发布都将被停止。
禁用轨道不会触发 LocalTrack.on("track-ended") 事件。
// 禁用视频
videoTrack.setEnabled(false);
// 禁用音频
audioTrack.setEnabled(false);
参数
-
enabled: boolean
是否启用该轨道:
true
: 启用该轨道.false
: 禁用该轨道.
返回值 Promise<void>
stop
stop(): void
停止播放。
// 停止播放视频
videoTrack.stop();
// 停止播放音频
audioTrack.stop();