Oferta WebRTC - análise de processo sdp de troca de respostas

Aprendizagem reimpressa:
quando ambas as extremidades abrem a comunicação de áudio e vídeo, uma das partes envia ativamente um convite como uma oferta e a outra parte espera passivamente pelo convite da oferta para responder como uma resposta.
Fluxo no código:

Oferecer:

  1. offerForConstraints, retorno de chamada <etapa 1.1> após obter sdp.
  • 1.1. didCreateSessionDescription
  • 1.1.1. Se houver um erro, retorne o erro diretamente para a camada superior, se sim, continue na <etapa 1.1.2>.
  • 1.1.2. setLocalDescription set sdp, retorno de chamada <etapa 1.1.2.1>.
  • 1.1.2.1 didSetSessionDescriptionWithError Se houver um erro, retorne o erro diretamente para a camada superior.

1.2 Gerar msg de acordo com RTCSdpType do sdp, chamar sendSignalingMessage para enviar para atendimento remoto através do servidor de sinalização.
1.3. setMaxBitrateForPeerConnectionVideoSender define a taxa de bits máxima para envio de vídeo.
Responder:

  1. Depois de receber o sdp de Offer, chame setRemoteDescription e, em seguida, chame de volta <Etapa 1.1>.
  • 1.1. didSetSessionDescriptionWithError

  • 1.1.1. Se houver um erro, retorne o erro diretamente para a camada superior, se sim, continue na <etapa 1.1.2>.

  • 1.1.2. callback answerForConstraints <etapa 1.1.2.1>, passe o sdp obtido por answerForConstraints.

  • 1.1.2.1 didCreateSessionDescription

  • 1.1.2.1.1 Se houver um erro, retorne o erro diretamente para a camada superior, se sim, continue na <etapa 1.1.2.1.2>.

  • 1.1.2.1.2 setLocalDescription Define o sdp obtido de answerForConstraints, callback <etapa 1.1.2.1.2.1>.

  • 1.1.2.1.2.1 didSetSessionDescriptionWithError Se houver um erro, retorne o erro diretamente para a camada superior. Isso mesmo, nenhum outro processamento é feito porque localDescription foi definido.

 **1.1.2.2** 根据sdp的RTCSdpType生产msg,调用sendSignalingMessage通过信令服务器发送给远程offer。
 - **1.1.2.3** setMaxBitrateForPeerConnectionVideoSender设置视频发送最大码率。

1
2
Oferta:

  1. Depois de receber o sdp de Offer, chame setRemoteDescription e, em seguida, chame de volta <Etapa 1.1>.
  • 1.1 didSetSessionDescriptionWithError Se houver um erro, retorne o erro diretamente para a camada superior.

Resumo
Do que foi dito acima, podemos ver como o código é tonto. O principal motivo é que didSetSessionDescriptionWithError é reutilizado em vários lugares em retornos de chamada. Então, o nojento código oc é fedido e longo, e cada nome de método é tão longo que assusta as pessoas.
Estou cansado de escrever acima 1.1, 1.2 e assim por diante.

Resuma o processo:
offer first chama offerForConstraints para obter seu próprio offerSdp, setLocalDescription(offerSdp), envia o offerSdp para a resposta remota e define a taxa de bits máxima do vídeo que ele envia.

answerDepois de receber a ofertaSdp, setRemoteDescription(offerSdp). answerForConstraints obtém seu próprio answerSdp, setLocalDescription(answerSdp), envia o answerSdp para a oferta e, ao mesmo tempo, define a taxa de bits máxima do vídeo que ele envia.

Após a oferta receber o answerSdp, setRemoteDescription(answerSdp).

Muitas das chamadas de API WebRTC mencionadas acima geram retornos de chamada, e os retornos de chamada podem retornar erros. Neste momento, os erros devem ser tratados. Geralmente, os erros são passados ​​para a camada superior e, em seguida, toda a sessão é fechada.

Guess you like

Origin blog.csdn.net/hmwz0001/article/details/130657387