Get to know MDN better
Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.
WebRTC (Web Real-Time Communications) é uma tecnologia que permite aplicativos e sites da Web a capturarem e opcionalmente transmitirem mídia de áudio e/ou vídeo, assim como trocar informação arbitrária entre navegadores sem a necessidade de um intermediador. O conjunto de padrões que abrangem WebRTC possibilita o compartilhamento de informação e a realização de teleconferência peer-to-peer, dispensando a instalação de plug-ins ou quaisquer softwares de terceiros.
WebRTC consiste em diversas APIs e protocolos interrelacionados que trabalham juntos. A documentação que você encontrará aqui o ajudará a entender os fundamentos de WebRTC, como configurar e usar, tanto informação, quanto conexões de mídia e mais.
WebRTC serve à diversas propostas; junto com a Media Capture and Streams API, eles fornecem poder multimídia para a Web, incluindo suporte para áudio e vídeo conferência, troca de arquivos, compartilhamento de tela, gerenciamento de identidade e interface com sistemas telefônicos legados, incluindo suporte para envio de sinais DTMF (touch-tone dialing). As conexões entre pares podem ser feitas sem a necessidade de drivers ou plug-ins especiais e, muitas vezes, sem servidores intermediários.
As conexões entre dois pares são representadas pela interface RTCPeerConnection. Uma vez que uma conexão foi estabelecida e aberta usando RTCPeerConnection, streams de mídia (MediaStreams) e/ou canais de dados (RTCDataChannels) podem ser adicionados à conexão.
Dados de mídia podem consistir em qualquer número de tracks(faixas) de dados de mídia; tracks, que são representados por objetos baseados na interface MediaStreamTrack , que podem conter um número dentre tipos de dados de mídia, incluíndo áudio, vídeo e texto (como legendas ou até mesmo nomes de capítulos). A maioria das transmissões consiste de ao menos uma faixa de áudio e comumente também uma faixa de vídeo, e podem ser usadas para enviar e receber ambas as mídias ao vivo ou dados salvos de mídia (como um filme transmitido).
Você também pode usar a conexão entre dois peers para trocar dados arbitrários binários usando a interface RTCDataChannel. Isto pode ser usado para informação de back-channel (canal de volta), troca de metadata, pacotes de status de games, transferência de arquivos, ou até mesmo como um canal primário para transferir dados.
O WebRTC é geralmente bem suportado em navegadores modernos, mas algumas incompatibilidades permanecem. A biblioteca adapter.js é um calço para isolar aplicativos dessas incompatibilidades.
WebRTC provê interfaces que trabalham em conjunto para realizar uma variedade de tarefas, nós dividimos as interfaces na listagem abaixo por categoria. Por favor, atente-se a sidebar para uma listagem em ordem alfabética.
Essas interfaces, dicionários e tipos são usados para configurar, abrir e gerenciar conexões WebRTC. Estão inclusas as interfaces que representam conexões de mídia de mesmo nível, canais de dados e interfaces usadas ao trocar informações sobre as capacidades de cada par para selecionar a melhor configuração possível para uma conexão de mídia bidirecional.
Representa uma conexão WebRTC entre o computador local e um ponto remoto. Ele é usado para lidar com o streaming eficiente de dados entre os dois pares.
RTCDataChannelRepresenta um canal de dados bidirecional entre dois pares de uma conexão.
RTCDataChannelEventRepresenta eventos que ocorrem ao anexar um RTCDataChannel a um RTCPeerConnection. O único evento enviado com esta interface é datachannel.
RTCSessionDescriptionRepresenta os parâmetros de uma sessão. Cada RTCSessionDescription consiste em uma descrição type indicando qual parte do processo de negociação de oferta/resposta ela descreve e do descritor SDP da sessão.
RTCStatsReportFornece estatísticas detalhadas de informações para uma conexão ou para uma track individual na conexão; o relatório pode ser obtido chamando RTCPeerConnection.getStats(). Detalhes sobre o uso de estatísticas WebRTC podem ser encontrados em WebRTC Statistics API.
RTCIceCandidateRepresenta um servidor Interactive Connectivity Establishment (Estabelecimento de Conectividade Interativa) candidato (ICE) para estabelecer um RTCPeerConnection.
RTCIceTransportRepresenta informações sobre um transporte ICE.
RTCPeerConnectionIceEventRepresenta eventos que ocorrem em relação aos candidatos ICE com o destino, geralmente um RTCPeerConnection. Apenas um evento é deste tipo: icecandidate.
RTCRtpSenderGerencia a codificação e a transmissão de dados para um MediaStreamTrack em um RTCPeerConnection.
RTCRtpReceiverGerencia a recepção e decodificação de dados para um MediaStreamTrack em um RTCPeerConnection.
RTCTrackEventA interface usada para representar um evento track, que indica que um objeto RTCRtpReceiver foi adicionado ao RTCPeerConnection, indicando que um novo MediaStreamTrack de entrada foi criado e adicionado ao RTCPeerConnection.
RTCSctpTransportFornece informações que descrevem um transporte de Stream Control Transmission Protocol ou SCTP (Protocolo de Transmissão de Controle de Fluxo) e também fornece uma maneira de acessar a segurança da Datagram Transport Layer Security ou DTLS (Camada de Transporte de Datagrama Subjacente) através do qual os pacotes SCTP para todos os canais de dados de uma RTCPeerConnection são enviados e recebidos.
Define como se conectar a um único servidor ICE (como um servidor STUN ou TURN).
RTCRtpContributingSourceContém informações sobre uma determinada fonte de contribuição (CSRC), incluindo a hora mais recente em que um pacote para o qual a fonte contribuiu foi reproduzido.
A quantidade de dados atualmente armazenados em buffer pelo canal de dados — conforme indicado por sua propriedade bufferedAmount — diminuiu para ficar igual ou inferior ao tamanho mínimo de dados em buffer do canal, conforme especificado por bufferedAmountLowThreshold.
closeO canal de dados concluiu o processo de fechamento e agora está no estado 'fechado'. Seu transporte de dados subjacente está completamente fechado neste ponto. Você pode ser notificado antes do fechamento, observando o evento closing.
closingO RTCDataChannel fez a transição para o estado closing, indicando que será fechado em breve. Você pode detectar a conclusão do processo de fechamento observando o evento close.
connectionstatechangeO estado da conexão foi alterado, pode ser acessada em connectionState.
datachannelUm novo RTCDataChannel está disponível após o peer remoto abrir um novo canal de dados. O tipo deste evento é RTCDataChannelEvent.
errorUm RTCErrorEvent indicando que ocorreu um erro no canal de dados.
errorUm RTCErrorEvent indicando que ocorreu um erro no RTCDtlsTransport. Este erro será dtls-failure ou fingerprint-failure.
gatheringstatechangeO estado de coleta do RTCIceTransport mudou.
icecandidateUm RTCPeerConnectionIceEvent que é enviado sempre que o dispositivo local identifica um novo candidato ICE que precisa ser adicionado ao par local chamando setLocalDescription().
icecandidateerrorUm RTCPeerConnectionIceErrorEvent indicando que ocorreu um erro durante a coleta de candidatos ICE.
iceconnectionstatechangeEnviado para um RTCPeerConnection quando o estado de sua conexão ICE - encontrado na propriedade iceconnectionstate - muda.
icegatheringstatechangeEnviado para um RTCPeerConnection quando seu estado de coleta de ICE - encontrado na propriedade icegatheringstate - muda.
messageUma mensagem foi recebida no canal de dados. O evento é do tipo MessageEvent.
negotiationneededInforma ao RTCPeerConnection que ele precisa realizar negociação de sessão chamando createOffer() seguido por setLocalDescription().
openO transporte de dados subjacente para o RTCDataChannel foi aberto ou reaberto com sucesso.
selectedcandidatepairchangeO par atualmente selecionado de candidatos ICE foi alterado para o RTCIceTransport no qual o evento é disparado.
trackO evento track, do tipo RTCTrackevent é enviado para um RTCPeerConnection quando uma nova trilha é adicionada à conexão após a negociação bem-sucedida da mídia transmissão.
signalingstatechangeEnviado para a conexão de mesmo nível quando seu signalingstate foi alterado. Isso acontece como resultado de uma chamada para setLocalDescription() ou setRemoteDescription().
statechangeO estado do RTCDtlsTransport mudou.
statechangeO estado do RTCIceTransport mudou.
statechangeO estado do RTCSctpTransport mudou.
Indica o estado de uma instância RTCSctpTransport.
A API WebRTC inclui várias interfaces para gerenciar segurança e identidade.
RTCIdentityProviderPermite que um agente de usuário possa solicitar que uma declaração de identidade seja gerada ou validada.
RTCIdentityAssertionRepresenta a identidade de um ponto remoto da conexão atual. Se nenhum par ainda foi definido e verificado, esta interface retorna null. Uma vez definido, não pode ser alterado.
RTCIdentityProviderRegistrarRegistra um provedor de identidade (idP).
RTCCertificateRepresenta um certificado que um RTCPeerConnection usa para autenticar.
Essas interfaces e eventos estão relacionadas à interatividade com redes telefônicas públicas comutadas (PTSNs) Elas são primariamente usadas para enviar sons de discagem por tom - ou pacotes que representam esses tons - pela rede para um par remoto.
Gerencia a codificação e a transmissão da sinalização de multifrequência de tom duplo (DTMF) para um RTCPeerConnection.
RTCDTMFToneChangeEventUsado pelo evento tonechange para indicar que um tom DTMF começou ou terminou. Este evento não propaga "bolhas" (exceto onde indicado de outra forma) e não é cancelável (exceto onde indicado de outra forma).
Um novo tom DTMF começou a tocar na conexão, ou o último tom no toneBuffer do RTCDTMFSender foi enviado e o buffer agora está vazio. O tipo do evento é RTCDTMFToneChangeEvent.
Este artigo apresenta os protocolos sobre os quais a API WebRTC é construída.
Conectividade WebRTCUm guia de como as conexões WebRTC funcionam e como os vários protocolos e interfaces podem ser usados juntos para criar aplicativos de comunicação poderosos.
Vida útil de uma sessão WebRTCWebRTC permite criar comunicação peer-to-peer de dados arbitrários, áudio ou vídeo — ou qualquer combinação deles — em um aplicativo de navegador. Neste artigo, veremos o tempo de vida de uma sessão WebRTC, desde o estabelecimento da conexão até o fechamento da conexão quando ela não for mais necessária.
Estabelecendo uma conexão: O padrão de negociação perfeitoNegociação perfeita é um padrão de design recomendado para o seu processo de sinalização, que fornece transparência na negociação enquanto permite que ambos os lados sejam o offerer (ofertante) ou o answerer (respondente), sem necessidade de muito código para diferenciar os dois.
Sinalização e chamada de vídeo bidirecionalUm tutorial e exemplo que transforma um sistema de chat baseado em WebSocket criado para um exemplo anterior e adiciona suporte para abertura de chamadas de vídeo entre os participantes. A conexão WebSocket do servidor de bate-papo é usada para sinalização WebRTC.
Codecs usados pelo WebRTCUm guia para os codecs que o WebRTC exige que os navegadores suportem, bem como os opcionais suportados por vários navegadores populares. Está incluído um guia para ajudá-lo a escolher os melhores codecs para suas necessidades.
Usando canais de dados WebRTCEste guia aborda como você pode usar uma conexão de mesmo nível e um RTCDataChannel associado para trocar dados arbitrários entre dois pares.
Usando DTMF com WebRTCO suporte do WebRTC para interagir com gateways que se conectam a sistemas telefônicos antigos inclui suporte para enviar tons DTMF usando a interface RTCDTMFSender. Este guia mostra como fazer isso.
A organização WebRTC fornece no GitHub o adaptador WebRTC para solucionar problemas de compatibilidade em implementações WebRTC de diferentes navegadores. O adaptador é um shim JavaScript que permite que seu código seja escrito de acordo com a especificação para que "simplesmente funcione" em todos os navegadores com suporte a WebRTC.
Uma simples amostra de RTCDataChannelA interface RTCDataChannel é um recurso que permite abrir um canal entre dois pares através do qual você pode enviar e receber dados arbitrários. A API é intencionalmente semelhante à API WebSocket, para que o mesmo modelo de programação possa ser usado para cada uma.
Construindo um telefone conectado à Internet com Peer.jsEste tutorial é um guia passo a passo sobre como construir um telefone usando Peer.js
| WebRTC: Real-Time Communication in Browsers |
| Media Capture and Streams |
| Media Capture from DOM Elements |
This page was last modified on 17 de dez. de 2024 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.