Javascript 在单个文件中记录多个RTC多连接流
我正在使用RTCMulticonnection与WebRTC合作进行直播,在直播中,用户共享他们的摄像头提要和屏幕。它工作正常,但当我用RecordRTC录制流时,每当用户从一个摄像头切换到另一个屏幕或从一个屏幕切换到另一个摄像头时,它都会启动一个单独的录制。如何将其记录在单个文件中。下面是我的代码:Javascript 在单个文件中记录多个RTC多连接流,javascript,video,webrtc,rtcmulticonnection,Javascript,Video,Webrtc,Rtcmulticonnection,我正在使用RTCMulticonnection与WebRTC合作进行直播,在直播中,用户共享他们的摄像头提要和屏幕。它工作正常,但当我用RecordRTC录制流时,每当用户从一个摄像头切换到另一个屏幕或从一个屏幕切换到另一个摄像头时,它都会启动一个单独的录制。如何将其记录在单个文件中。下面是我的代码: var connection = new RTCMultiConnection(); var video = document.querySelector('#video') // this li
var connection = new RTCMultiConnection();
var video = document.querySelector('#video')
// this line is VERY_important
connection.socketURL = 'https://rtcmulticonnection.herokuapp.com:443/';
// if you want audio+video conferencing
connection.session = {
audio: true,
video: {
mandatory:{
width: 1280,
height: 720
}
},
oneway: true
};
connection.mediaConstraints = {
video: true,
audio: true,
screen: false
};
connection.open('coach-stream'+roomid)
connection.sdpConstraints.mandatory = {
OfferToReceiveAudio: false,
OfferToReceiveVideo: false
};
$('#share').on('click', function(e){
e.preventDefault();
var cameraOptions = {
screen: true
};
connection.captureUserMedia(function(camera) {
var screen = camera.getVideoTracks()[0]
connection.attachStreams.forEach(function(stream){
stream.getVideoTracks().forEach(tracks => {
tracks = screen
})
})
var streamEvent = {
type: 'local',
stream: camera,
streamid: camera.id,
mediaElement: video
};
//connection.dontCaptureUserMedia = true;
screen.onended = function(){
var cameraOptions2 = {
video: true
};
connection.captureUserMedia(function(camera) {
var screen = camera.getVideoTracks()[0]
connection.attachStreams.forEach(function(stream){
stream.getVideoTracks().forEach(tracks => {
tracks = screen
})
})
var streamEvent = {
type: 'local',
stream: camera,
streamid: camera.id,
mediaElement: video
};
//connection.dontCaptureUserMedia = true;
}, cameraOptions2);
}
}, cameraOptions);
});
var blob
connection.onstream=function(event){
$('#count').html(connection.getAllParticipants().length+' <i class="fa fa-eye"></i>')
if( event.type === 'local' ){
video.addEventListener("pause", function(){
connection.streamEvents.selectFirst({local: true}).stream.mute();
});
video.addEventListener("play", function(){
connection.streamEvents.selectFirst({local: true}).stream.unmute();
});
}
sid = event.streamid
video.srcObject = event.stream
video.play();
var screen = connection.streamEvents.selectFirst({local: true, isScreen: true}).stream;
var recorder = RecordRTC([event.stream], {type:'video', mimeType: 'video/webm;codecs=vp8'})
recorder.startRecording();
$('#stp').on('click', function(e){
e.preventDefault();
connection.getAllParticipants().forEach(function(pid) {
connection.disconnectWith(pid);
});
connection.attachStreams.forEach(function(localStream) {
localStream.getTracks().forEach(function(track) {
if (track.readyState == 'live') {
track.stop();
}
})
});
connection.removeStream('video')
connection.removeStream('audio')
video.srcObject = null
var connection=new-RTCMultiConnection();
var video=document.querySelector(“#video”)
//这条线很重要
connection.socketURL=https://rtcmulticonnection.herokuapp.com:443/';
//如果您想要音频+视频会议
connection.session={
音频:是的,
视频:{
强制性:{
宽度:1280,
身高:720
}
},
单向:对
};
connection.mediaConstraints={
视频:没错,
音频:是的,
屏幕:假
};
连接打开('coach-stream'+roomid)
connection.sdpConstraints.mandatory={
OfferToReceiveAudio:false,
OfferToReceiveVideo:错误
};
$(“#共享”)。在('click',函数(e){
e、 预防默认值();
var cameraOptions={
屏幕:对
};
连接。captureUserMedia(功能(摄像头){
var screen=camera.getVideoTracks()[0]
connection.attachStreams.forEach(函数(流){
stream.getVideoTracks().forEach(tracks=>{
轨迹=屏幕
})
})
var streamEvent={
键入:“本地”,
流:摄像机,
streamid:camera.id,
mediaElement:视频
};
//connection.dontCaptureUserMedia=true;
screen.onended=函数(){
变量cameraOptions2={
视频:真的
};
连接。captureUserMedia(功能(摄像头){
var screen=camera.getVideoTracks()[0]
connection.attachStreams.forEach(函数(流){
stream.getVideoTracks().forEach(tracks=>{
轨迹=屏幕
})
})
var streamEvent={
键入:“本地”,
流:摄像机,
streamid:camera.id,
mediaElement:视频
};
//connection.dontCaptureUserMedia=true;
},相机选项2);
}
},相机选项);
});
var blob
connection.onstream=函数(事件){
$('#count').html(connection.getAllParticipants().length+“”)
如果(event.type==='local'){
video.addEventListener(“暂停”,函数(){
connection.streamEvents.selectFirst({local:true}).stream.mute();
});
video.addEventListener(“播放”,函数(){
connection.streamEvents.selectFirst({local:true}).stream.unmute();
});
}
sid=event.streamid
video.srcObject=event.stream
video.play();
var screen=connection.streamvents.selectFirst({local:true,isScreen:true});
var recorder=RecordRTC([event.stream],{type:'video',mimeType:'video/webm;codecs=vp8'})
记录器。开始记录();
$('stp')。在('click',函数(e)上{
e、 预防默认值();
connection.getAllParticipants().forEach(函数(pid){
连接。与(pid)断开连接;
});
connection.attachStreams.forEach(函数(localStream){
localStream.getTracks().forEach(函数(跟踪){
如果(track.readyState=='live'){
track.stop();
}
})
});
connection.removeStream(“视频”)
连接。removeStream(“音频”)
video.srcObject=null
请有人帮我做这个