对不起,我的荷兰荷兰人。
我正在使用accelerator-core-js共享我的屏幕并将其发布到。
示例可在此处找到https://github.com/opentok/accelerator-core-js。
试图实现它,但迷路了。
当我打开要发布的新流时,它将发布2 *现有流。
给我一个印象,如果我有2个活动流并打开一个新流,它将发布3个新流。
我提供了一些代码。
启动了三个发布流。至少我认为三个是从HTML组成的。
let otCore;
const otCoreOptions = {
credentials: {
apiKey:"" ,
sessionId: "",
token: "",
},
// A container can either be a query selector or an HTML Element
streamContainers(pubSub, type, data, streamId) {
return {
publisher: {
camera: '#cameraPublisherContainer',
screen: '#screenPublisherContainer',
},
subscriber: {
camera: '#cameraSubscriberContainer',
screen: '#screenSubscriberContainer',
},
}[pubSub][type];
},
controlsContainer: '#controls',
packages: ['textChat', 'screenSharing', 'annotation'],
communication: {
callProperites: null, // Using default
},
screenSharing: {
extensionID: "lalalalalalal",
annotation: true,
externalWindow: false,
dev: true,
screenProperties: {
insertMode: 'append',
width: '100%',
height: '100%',
showControls: false,
style: {
buttonDisplayMode: 'off',
},
videoSource: 'window',
fitMode: 'contain' // Using default
},
},
annotation: {
absoluteParent: {
publisher: '.App-video-container',
}
},
};
....
render() {
const { connected, active } = this.state;
const {
localAudioClass,
localVideoClass,
localCallClass,
controlClass,
cameraPublisherClass,
screenPublisherClass,
cameraSubscriberClass,
screenSubscriberClass,
} = containerClasses(this.state);
return (
<div className="App">
<div className="App-header">
<h1>OpenTok Accelerator Core</h1>
</div>
<div className="App-main">
<div className="App-video-container">
{ !connected && connectingMask() }
{ connected && !active && startCallMask(this.startCall)}
<div id="cameraPublisherContainer" className={cameraPublisherClass} />
<div id="screenPublisherContainer" className={screenPublisherClass} />
<div id="cameraSubscriberContainer" className={cameraSubscriberClass} />
<div id="screenSubscriberContainer" className={screenSubscriberClass} />
</div>
<div id="controls" className={controlClass}>
<div className={localAudioClass} onClick={this.toggleLocalAudio} />
<div className={localVideoClass} onClick={this.toggleLocalVideo} />
<div className={localCallClass} onClick={this.endCall} />
</div>
<div id="chat" className="App-chat-container" />
</div>
</div>
);
}
不确定是否仍然需要它,但这是由于以下原因:{connected &&!active && startCallMask(this.startCall)}
您应该在componentDidMount中开始调用。有完全相同的问题。确保在调用startCall处理程序之前先检查用户是否已连接。