Matriz de Recursos do sgcWebRTC — Áudio, Vídeo, Canais de Dados | eSeGeCe

sgcWebRTC Matriz de Recursos

Tudo o que o sgcWebRTC adiciona ao TsgcRTCPeerConnection, agrupado por capacidade. A sinalização e a conectividade vêm do componente base no sgcWebSockets Enterprise; este pacote desbloqueia o mecanismo de mídia sobre ele — áudio, vídeo, captura de tela, canais de dados, criptografia e estimativa de largura de banda. Toda capacidade funciona da mesma forma em Delphi e C++ Builder, e toda licença inclui código-fonte completo.

Sinalização

Base Enterprise & SDP

Áudio

Opus / G.711

Vídeo

VP8 / H.264 / MJPEG

Canais de Dados

RFC 8831 / 8832

Compartilhamento de Tela

Captura & renderização

SRTP / DTLS

Mídia criptografada

Estimativa de Largura de Banda

Controle de congestionamento

O que o Enterprise Já Traz, o que o sgcWebRTC Adiciona

A conectividade base já está no sgcWebSockets. O sgcWebRTC desbloqueia a superfície de SDP, canais de dados e mídia no mesmo componente.

CapacidadeVem comNotas
Cliente STUN (TsgcSTUNClient)sgcWebSockets StandardDescoberta de candidatos server-reflexive, disponível abaixo do Enterprise.
Cliente e servidor TURN, cliente ICE (TsgcTURNClient, TsgcICEClient)sgcWebSockets EnterpriseCandidatos retransmitidos e coleta/nomeação completa de candidatos ICE.
TsgcRTCPeerConnection base, sinalização legada por relay WebSocketsgcWebSockets EnterpriseGatherCandidates, WriteData e os eventos OnRTCWebSocket… / OnRTCCandidatePairNominated / OnRTCConnect controlam a conectividade ICE e um transporte DTLS através do servidor de protocolo RTCPeerConnection embutido, sem SDP, canais de dados ou mídia.
Sinalização manual de oferta/resposta SDPsgcWebRTCCreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, RestartIce — a máquina de estados JSEP (RFC 8829) que um navegador espera.
Renegociação & resolução de glaresgcWebRTCNovas ofertas após AddTrack / RemoveTrack, OnNegotiationNeeded, rollback, e a regra de perfect-negotiation do W3C via Polite.
ICE TricklesgcWebRTCTrickleICE e RTCOptions.TrickleICEAuto transmitem os candidatos assim que são encontrados, em vez de esperar o timeout completo de coleta.
Estado de conexão & sinalizaçãosgcWebRTCConnectionState (subconjunto de RTCPeerConnectionState do W3C) e SignalingState (subconjunto de RTCSignalingState), além de OnConnectionStateChange e OnError.
Canais de dados SCTP, áudio/vídeo RTP, criptografia SRTPsgcWebRTCVeja as seções abaixo — os três exigem este pacote sobre a base Enterprise.

Faixas de Áudio Opus & G.711

Uma única chamada a AddTrack anexa uma faixa de áudio à peer connection; PCM entra, RTP sai, e o mesmo caminho roda no sentido inverso para a faixa remota.

CapacidadeMembroNotas
Anexar uma faixa de áudioAddTrack(rtctkAudio, aCodec)Retorna um TsgcRTCTrack; RemoveTrack interrompe o envio.
Codec OpuscctAudioOpus48 kHz / estéreo via um binding para libopus carregado dinamicamente.
Codec G.711cctAudioPCMU / cctAudioPCMA8 kHz / mono μ-law e A-law, sempre disponível, sem biblioteca externa.
Enviar áudio capturadoTsgcRTCTrack.SendPCM(aPCM, aSamplesPerChannel)PCM intercalado de 16 bits com sinal, na taxa de amostragem e quantidade de canais do codificador.
Receber áudio decodificadoOnAudio(aPCM, aSampleRate, aChannels, aSamplesPerChannel)Disparado na faixa remota à medida que o RTP chega e é decodificado.
Acesso ao codificador / decodificadorAudioEncoder / AudioDecoderO objeto subjacente TsgcAudioEncoderBase / TsgcAudioDecoderBase, substituível por faixa.
Ciclo de vida da faixaEnabled, Ended, OnEndedEnabled := False silencia sem renegociar; Ended reflete uma faixa descartada pelo lado remoto ou por uma nova oferta.
Captura de microfoneDescendentes de TsgcMediaCaptureSourceCaptura nativa por plataforma (waveIn no Windows, além de backends Linux, Apple e Android) alimenta SendPCM diretamente.

Faixas de Vídeo VP8, H.264 & Motion JPEG

O vídeo funciona no mesmo formato do áudio — frames entram, RTP sai — com o codec escolhido por faixa e, no caso do H.264, o próprio codificador de hardware da plataforma por baixo.

CapacidadeMembroNotas
Anexar uma faixa de vídeoAddTrack(rtctkVideo, aCodec)Mesma chamada do áudio, com um TsgcCodecType de vídeo.
Codec VP8cctVideoVP8Binding para libvpx, carregado dinamicamente, disponível no Windows e Linux.
Codec H.264cctVideoH264Codificador de hardware nativo por plataforma: Media Foundation (Windows), VideoToolbox (iOS/macOS), MediaCodec (Android). Stream Annex-B, payloading conforme RFC 6184, SPS/PPS transportados in-band em cada keyframe.
Codec Motion JPEGcctVideoJPEGBaseado em GDI+, Windows e Delphi XE ou posterior.
Enviar um frame brutoTsgcRTCTrack.SendVideoFrame(aFrame, aForceKeyFrame)Codifica e envia um TsgcVideoFrame (família I420/NV12/RGB/BGR).
Enviar um frame pré-codificadoSendEncodedFrame(aData, aIsKeyFrame)Ignora o codificador da própria faixa para um frame codificado externamente.
Receber frames decodificados / brutosOnVideoFrame / OnEncodedFrameTsgcVideoFrame decodificado, ou o bitstream codificado bruto com sua flag de keyframe.
Solicitar um keyframeRequestKeyFrameEnvia um RTCP PLI ao emissor remoto.
Acesso ao codificador / decodificadorVideoEncoder / VideoDecoderO objeto subjacente TsgcVideoEncoderBase / TsgcVideoDecoderBase.
Captura de câmeraDescendentes de TsgcMediaCaptureSourceBackends de captura por plataforma (Windows, Linux, Apple, Android) alimentam SendVideoFrame diretamente.
RenderizaçãoDescendentes de TsgcMediaRendererBackends de renderização por plataforma (Windows, Linux, Apple, Android) para o vídeo remoto decodificado.

Canais de Dados SCTP (RFC 8831 / 8832)

Ordenados ou não ordenados, totalmente confiáveis ou limitados por uma contagem de retransmissão ou por um tempo de vida, sobre SCTP-over-DTLS.

CapacidadeMembroNotas
Abrir um canalCreateDataChannel(aLabel, aOrdered, aMaxRetransmits, aMaxPacketLifeTime, aProtocol)Retorna um TsgcRTCDataChannel; força RTCOptions.DTLS a ligado.
Canal aberto pelo remotoOnDataChannel(aChannel)Disparado quando o par abre um canal nesta conexão.
Enviar texto / binárioSend(aText) / SendBytes(aBytes)Retorna False se o canal ainda não estiver aberto.
ReceberOnMessage(aText) / OnMessageBinary(aBytes)Disparado na thread que conduz o SCTP.
Eventos de ciclo de vidaOnOpen, OnClose, OnError(aError)Corresponde ao ciclo de vida do RTCDataChannel do W3C.
Estado do canalState, HasId, IdO stream id do SCTP só é definitivo depois que o papel DTLS é resolvido (paridade da RFC 8832).
Controle de fluxoBufferedAmount, MaxMessageSizeMaxMessageSize acompanha o próprio a=max-message-size do par e recusa localmente um envio acima do tamanho.
Introspecção de confiabilidadeReliability, ReliabilityParam, Ordered, MaxRetransmits, MaxPacketLifeTimeLê de volta exatamente o que o canal negociou.
FecharCloseFechamento baseado em RE-CONFIG; State passa para closing, depois closed com OnClose.
Nível da peer connectionDataChannelCount, DataChannels[i]Enumera todos os canais abertos na conexão.

Captura de Área de Trabalho, Monitor, Janela & Região

Uma fonte de captura alimenta o mesmo caminho SendVideoFrame de uma câmera — o conteúdo da tela é apenas mais uma faixa de vídeo.

CapacidadeMembroNotas
Backend de capturaTsgcScreenCapture_WinCaptura de área de trabalho, monitor, janela e região baseada em GDI. Atualmente somente Windows.
Enumerar monitoresGetMonitors / MonitorIndexUma linha por monitor (resolução, posição, flag de primário); -1 captura toda a área de trabalho virtual.
Captura de regiãoRegionRetângulo em coordenadas de tela; um retângulo vazio desativa o modo de região.
Janelas em camadas / transparentesCaptureLayeredUsa CAPTUREBLT para que janelas em camadas e transparentes sejam incluídas.
CursorIncludeCursorDesenha o cursor do mouse no frame capturado.
Redução de escalaMaxWidth0 desativa a redução de escala; caso contrário, frames mais largos são reduzidos antes da codificação.
Taxa de quadrosFonte de captura FrameRate5 fps por padrão, até 30 fps para conteúdo de tela.
Codificar & enviarTsgcRTCTrack.SendVideoFrameFrames BGRA32 capturados alimentam o codificador de vídeo da faixa como qualquer outra fonte.

Criptografia de Mídia Obrigatória

Todo pacote RTP, RTCP e SCTP na conexão é criptografado a partir do handshake DTLS — não existe modo em texto plano.

CapacidadeDetalhe
Troca de chavesHandshake DTLS sobre o par de candidatos ICE nomeado (RFC 5764 DTLS-SRTP), derivando o material de chaveamento SRTP.
Papel DTLSNa sinalização manual, o papel vem de a=setup (ofertante passivo, respondente ativo); IsDTLSClient o reporta assim que resolvido.
Perfis de proteção SRTPSRTP_AES128_CM_SHA1_80, SRTP_AES128_CM_SHA1_32, SRTP_AEAD_AES_128_GCM, SRTP_AEAD_AES_256_GCM, negociados durante o handshake DTLS.
Estado criptográfico por SSRCUm contexto criptográfico (contador de rollover, janela de replay) por SSRC, como exige a seção 3.2.3 da RFC 3711, mesmo quando o BUNDLE coloca todas as m-lines em um único transporte DTLS-SRTP.
EscopoCobre a mídia RTP/RTCP e a associação SCTP que carrega os canais de dados — a conexão inteira, não apenas uma m-line.
BackendImplementação de SRTP baseada em OpenSSL.

Controle de Congestionamento & Resiliência a Perdas

Um estimador baseado em atraso, no estilo do Google Congestion Control, acompanha o enlace e controla a taxa de bits alvo do codificador de vídeo.

CapacidadeMembroNotas
Estimador baseado em atrasoTsgcBWE_EstimatorAgrupa pacotes em rajadas de envio de 5 ms, executa um filtro de tendência sobre o atraso entre grupos, e classifica o enlace como normal, overuse ou underuse.
Controle de taxaControlador AIMDOveruse reduz para 85% da taxa reconhecida, underuse mantém, normal aumenta (multiplicativo quando longe do último teto conhecido, aditivo perto dele).
Teto de perdasAcompanhamento da taxa de perdaAcima de 10% de perda o teto cai; abaixo de 2% ele se recupera 8% por segundo até MaxBitrate.
Feedback em nível de transporteTWCC (RTCP)BuildRTCP_TWCC / ParseRTCP_TWCC geram feedback de controle de congestionamento em nível de transporte, com REMB como teto de reserva para pares que só suportam ele.
Como ativarRTCOptions.Media.CongestionControlSó tem efeito quando a descrição remota também negocia a extensão de cabeçalho / feedback correspondente.
Recuperação de perdasRTCOptions.Media.RTXRetransmissão do stream de vídeo conforme RFC 4588 mediante RTCP NACK.
Correção de erros adianteRTCOptions.Media.FECProteção RED / ULPFEC no stream de vídeo de saída.
PacingRTCOptions.Media.PacingEspaça os pacotes de vídeo de saída na taxa de bits estimada, em vez de enviá-los em rajada.
Recuperação de keyframeRTCP PLIRequestKeyFrame na faixa receptora solicita ao emissor um novo keyframe após perda.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Construa com o sgcWebRTC

Baixe a versão de avaliação gratuita e abra uma peer connection real a partir do Delphi ou C++ Builder.