【问题标题】:How to restart video track after stopping it in twilio?在 twilio 中停止视频轨道后如何重新启动视频轨道?
【发布时间】:2020-12-27 17:00:26
【问题描述】:
我正在使用 twilio-video v2.7。
目标:
停止后重新启动视频轨道。
用例:
当视频关闭时关闭摄像头 LED 指示灯,反之亦然,就像 google meet。
const toggleVideo = () => {
const isOff = !isVideoOn;
room.localParticipant.videoTracks.forEach((t) => {
if (isOff) {
t.track.enable();
t.track.attach(screenRef.current)
} else {
t.track.disable();
t.track.stop()
t.unpublish()
t.track.detach()
}
});
setVideoToggle(isOff);
};
【问题讨论】:
标签:
javascript
reactjs
twilio
webrtc
twilio-video
【解决方案1】:
不久前,我使用此代码将媒体静音/取消静音。你可以随意改变它。如果有什么不清楚的,请让我现在在 cmets 中。
/**
* Mute/unmute your media in a Room.
* @param {Room} room - The Room you have joined
* @param {'audio'|'video'} kind - The type of media you want to mute/unmute
* @param {'mute'|'unmute'} action - Whether you want to mute/unmute
*/
function muteOrUnmuteYourMedia(room, kind, action) {
const publications = kind === 'audio'
? room.localParticipant.audioTracks
: room.localParticipant.videoTracks;
publications.forEach(function(publication) {
if (action === 'mute') {
publication.track.disable();
} else {
publication.track.enable();
}
});
}
/**
* Mute your video in a Room.
* @param {Room} room - The Room you have joined
* @returns {void}
*/
function muteYourVideo(room) {
muteOrUnmuteYourMedia(room, 'video', 'mute');
}
/**
* UnMute your video in a Room.
* @param {Room} room - The Room you have joined
* @returns {void}
*/
function muteYourVideo(room) {
muteOrUnmuteYourMedia(room, 'video', 'unmute');
}
【解决方案2】:
我认为您需要重新发布视频轨道。只要您正在处理已发布的轨道事件,这就足够了。
t.track.publish()