Alterando um MediaStream de RTCPeerConnection

Quero mudar de um fluxo de áudio / vídeo para um fluxo de "compartilhamento de tela":
peerConnection.removeStream(streamA) // __o_j_sep... in Screenshots below
peerConnection.addStream(streamB)  // SSTREAM in Screenshots below
streamA é um fluxo de vídeo / áudio proveniente da minha câmera e microfone.streamB é a captura de tela que recebo da minha extensão.Eles são ambosMediaStream objetos que se parecem com isso:

* 1 Observação

Mas se eu removerstreamA depeerConnection eaddStream(streamB) como acima, nada parece acontecer.

O seguinte funciona como esperado (o fluxo nas duas extremidades é removido e adicionado novamente)

peerConnection.removeStream(streamA) // __o_j_sep...
peerConnection.addStream(streamA) // __o_j_sep...
Mais detalhes

eu encontreieste exemplo que faz "o inverso" (alterne da captura de tela para áudio / vídeo com a câmera), mas não consegue identificar uma diferença significativa.

opeerConnection RTCPeerConnection objeto é realmente criado por esteBiblioteca SIPML código fonte disponível aqui. E eu acesso assim:

var peerConnection = stack.o_stack.o_layer_dialog.ao_dialogs[1].o_msession_mgr.ao_sessions[0].o_pc

(Sim, isso não parece correto, mas não existe uma maneira oficial de obter acesso à conexão entre paresveja a discussão aqui) eaqui.

Originalmente, tentei apenas (ex) alterar o vídeostreamA com o videoTrack destreamB. Veja a pergunta aqui. Foi-me sugerido que eu deveria tentar renegociar a Conexão entre Pares (removendo / adicionando Streams a ela), porque o addTrack não aciona umrenegociação.

Eu também pedi ajuda aqui mas o mantenedor parece muito ocupado e ainda não teve chance de responder.

* 1Observação: PorquestreamB não tem umvideoTracks propriedade? O fluxo é reproduzido em um HTML<video> elemento e parece "funcionar". Aqui está como eu entendi:

navigator.webkitGetUserMedia({
  audio: false,
  video: {
    mandatory: {
      chromeMediaSource:  'desktop',
      chromeMediaSourceId: streamId,
      maxWidth: window.screen.width,
      maxHeight: window.screen.height
      //,   maxFrameRate: 3
    }
  }
  // success callback
}, function(localMediaStream) {
  SSTREAM = localMediaStream; //streamB

  // fail callback
}, function(error) {
  console.log(error);
});

também parece ter umvideoTrack:

Estou correndo:

OS X 10.9.3Versão do Chrome 35.0.1916.153

questionAnswers(2)

yourAnswerToTheQuestion