async function startVideo(){
try{
console.warn('startVideo');
streams.pc1.video=await navigator.mediaDevices.getUserMedia({audio:true,video:true});
document.getElementById('local_video_pc1').srcObject = streams.pc1.video;
let update_tranceivers=false;
streams.pc1.video.getTracks().forEach(function(track) {
let media=track.kind;
if (transceivers.pc1[media]){
transceivers.pc1[media].sender.replaceTrack(track);
transceivers.pc1[media].direction = "sendonly";
}else{
//the first time use addTrack, not addTransceiver...
pcs.pc1.addTrack(track,streams.pc1.video);
update_tranceivers=true;
//the next commented code doesn't work:
// transceivers.pc1[media]=pcs.pc1.addTransceiver(track, {
// direction:'sendonly',
// streams:[streams.pc1.video]
// });
}
});
//...but after you have to get tranceivers in order to store their mids
//...and be carefull because when you restart the video you will not have the track associated to the transceiver in this phase, then update transceivers only the first time
if(update_tranceivers){
pcs.pc1.getTransceivers().forEach(function(transceiver){
transceivers.pc1[transceiver.sender.track.kind]=transceiver;
});
}
updateButtons('video',true);
}
catch(error){
streams.pc1.video=null;
console.error('startVideo error=',error);
};
}