Matriz de características de sgcWebRTC — Audio, vídeo, canales de datos | eSeGeCe

sgcWebRTC Matriz de características

Todo lo que sgcWebRTC añade a TsgcRTCPeerConnection, agrupado por capacidad. La señalización y la conectividad vienen del componente base en sgcWebSockets Enterprise; este paquete desbloquea el motor de medios sobre él — audio, vídeo, captura de pantalla, canales de datos, cifrado y estimación de ancho de banda. Cada capacidad funciona igual en Delphi y C++ Builder, y cada licencia incluye código fuente completo.

Señalización

Base Enterprise y SDP

Audio

Opus / G.711

Vídeo

VP8 / H.264 / MJPEG

Canales de datos

RFC 8831 / 8832

Uso compartido de pantalla

Captura y renderizado

SRTP / DTLS

Medios cifrados

Estimación de ancho de banda

Control de congestión

Lo que incluye Enterprise, lo que añade sgcWebRTC

La conectividad base ya está en sgcWebSockets. sgcWebRTC desbloquea la superficie de SDP, canales de datos y medios en el mismo componente.

CapacidadIncluido enNotas
Cliente STUN (TsgcSTUNClient)sgcWebSockets StandardDescubrimiento de candidatos server-reflexive, disponible por debajo de Enterprise.
Cliente y servidor TURN, cliente ICE (TsgcTURNClient, TsgcICEClient)sgcWebSockets EnterpriseCandidatos retransmitidos y recopilación / nominación completa de candidatos ICE.
TsgcRTCPeerConnection base, señalización heredada por relé WebSocketsgcWebSockets EnterpriseGatherCandidates, WriteData y los eventos OnRTCWebSocket… / OnRTCCandidatePairNominated / OnRTCConnect gobiernan la conectividad ICE y un transporte DTLS a través del servidor de protocolo RTCPeerConnection integrado, sin SDP, canales de datos ni medios.
Señalización manual de oferta/respuesta SDPsgcWebRTCCreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, RestartIce — la máquina de estados JSEP (RFC 8829) que espera un navegador.
Renegociación y resolución de glaresgcWebRTCNuevas ofertas tras AddTrack / RemoveTrack, OnNegotiationNeeded, rollback, y la regla de perfect-negotiation de W3C mediante Polite.
Trickle ICEsgcWebRTCTrickleICE y RTCOptions.TrickleICEAuto transmiten los candidatos a medida que se encuentran, en lugar de esperar al tiempo de espera completo de la recopilación.
Estado de conexión y de señalizaciónsgcWebRTCConnectionState (subconjunto de RTCPeerConnectionState de W3C) y SignalingState (subconjunto de RTCSignalingState), además de OnConnectionStateChange y OnError.
Canales de datos SCTP, audio/vídeo RTP, cifrado SRTPsgcWebRTCVer las secciones siguientes — las tres requieren este paquete sobre la base Enterprise.

Pistas de audio Opus y G.711

Una sola llamada a AddTrack adjunta una pista de audio a la conexión de pares; entra PCM, sale RTP, y la misma ruta funciona a la inversa para la pista remota.

CapacidadMiembroNotas
Adjuntar una pista de audioAddTrack(rtctkAudio, aCodec)Devuelve un TsgcRTCTrack; RemoveTrack detiene su envío.
Códec OpuscctAudioOpus48 kHz / estéreo mediante un binding a libopus cargado dinámicamente.
Códec G.711cctAudioPCMU / cctAudioPCMA8 kHz / mono μ-law y A-law, siempre disponible, sin biblioteca externa.
Enviar audio capturadoTsgcRTCTrack.SendPCM(aPCM, aSamplesPerChannel)PCM entrelazado de 16 bits con signo, a la frecuencia de muestreo y número de canales del codificador.
Recibir audio decodificadoOnAudio(aPCM, aSampleRate, aChannels, aSamplesPerChannel)Se dispara en la pista remota a medida que llega y se decodifica el RTP.
Acceso al codificador / decodificadorAudioEncoder / AudioDecoderEl objeto subyacente TsgcAudioEncoderBase / TsgcAudioDecoderBase, reemplazable por pista.
Ciclo de vida de la pistaEnabled, Ended, OnEndedEnabled := False silencia sin renegociar; Ended refleja una pista descartada por el lado remoto o por una nueva oferta.
Captura de micrófonoDescendientes de TsgcMediaCaptureSourceLa captura nativa por plataforma (waveIn en Windows, además de los backends de Linux, Apple y Android) alimenta directamente SendPCM.

Pistas de vídeo VP8, H.264 y Motion JPEG

El vídeo funciona con la misma forma que el audio — entran fotogramas, sale RTP — con el códec elegido por pista y, para H.264, el propio codificador por hardware de la plataforma debajo.

CapacidadMiembroNotas
Adjuntar una pista de vídeoAddTrack(rtctkVideo, aCodec)La misma llamada que para audio, con un TsgcCodecType de vídeo.
Códec VP8cctVideoVP8Binding a libvpx, cargado dinámicamente, disponible en Windows y Linux.
Códec H.264cctVideoH264Codificador nativo por hardware según la plataforma: Media Foundation (Windows), VideoToolbox (iOS/macOS), MediaCodec (Android). Stream Annex-B, empaquetado según RFC 6184, SPS/PPS transportados en banda en cada keyframe.
Códec Motion JPEGcctVideoJPEGBasado en GDI+, Windows y Delphi XE o posterior.
Enviar un fotograma sin codificarTsgcRTCTrack.SendVideoFrame(aFrame, aForceKeyFrame)Codifica y envía un TsgcVideoFrame (familia I420/NV12/RGB/BGR).
Enviar un fotograma precodificadoSendEncodedFrame(aData, aIsKeyFrame)Evita el codificador propio de la pista para un fotograma codificado externamente.
Recibir fotogramas decodificados / sin codificarOnVideoFrame / OnEncodedFrameUn TsgcVideoFrame decodificado, o el flujo de bits codificado en bruto con su indicador de keyframe.
Solicitar un keyframeRequestKeyFrameEnvía un RTCP PLI al emisor remoto.
Acceso al codificador / decodificadorVideoEncoder / VideoDecoderEl objeto subyacente TsgcVideoEncoderBase / TsgcVideoDecoderBase.
Captura de cámaraDescendientes de TsgcMediaCaptureSourceLos backends de captura por plataforma (Windows, Linux, Apple, Android) alimentan directamente SendVideoFrame.
RenderizadoDescendientes de TsgcMediaRendererLos backends de renderizado por plataforma (Windows, Linux, Apple, Android) para el vídeo remoto decodificado.

Canales de datos SCTP (RFC 8831 / 8832)

Ordenados o desordenados, totalmente fiables o acotados por un número de retransmisiones o una vida útil, sobre SCTP-sobre-DTLS.

CapacidadMiembroNotas
Abrir un canalCreateDataChannel(aLabel, aOrdered, aMaxRetransmits, aMaxPacketLifeTime, aProtocol)Devuelve un TsgcRTCDataChannel; fuerza la activación de RTCOptions.DTLS.
Canal abierto por el remotoOnDataChannel(aChannel)Se dispara cuando el par abre un canal en esta conexión.
Enviar texto / binarioSend(aText) / SendBytes(aBytes)Devuelve False si el canal todavía no está abierto.
RecibirOnMessage(aText) / OnMessageBinary(aBytes)Se dispara en el hilo que gobierna SCTP.
Eventos del ciclo de vidaOnOpen, OnClose, OnError(aError)Coincide con el ciclo de vida de RTCDataChannel de W3C.
Estado del canalState, HasId, IdEl id de stream SCTP solo es definitivo una vez que se resuelve el rol DTLS (paridad de RFC 8832).
Control de flujoBufferedAmount, MaxMessageSizeMaxMessageSize sigue el propio a=max-message-size del par y rechaza localmente un envío de tamaño excesivo.
Introspección de fiabilidadReliability, ReliabilityParam, Ordered, MaxRetransmits, MaxPacketLifeTimePermite leer exactamente lo que el canal negoció.
CerrarCloseCierre basado en RE-CONFIG; State pasa a closing y luego a closed con OnClose.
A nivel de la conexión de paresDataChannelCount, DataChannels[i]Enumera todos los canales abiertos en la conexión.

Captura de escritorio, monitor, ventana y región

Una fuente de captura alimenta la misma ruta SendVideoFrame que una cámara — el contenido de pantalla es simplemente otra pista de vídeo.

CapacidadMiembroNotas
Backend de capturaTsgcScreenCapture_WinCaptura de escritorio, monitor, ventana y región basada en GDI. Actualmente solo Windows.
Enumerar monitoresGetMonitors / MonitorIndexUna línea por monitor (resolución, posición, indicador de principal); -1 captura todo el escritorio virtual.
Captura de regiónRegionRectángulo en coordenadas de pantalla; un rectángulo vacío desactiva el modo de región.
Ventanas con capas / transparentesCaptureLayeredUsa CAPTUREBLT para incluir ventanas con capas y transparentes.
CursorIncludeCursorDibuja el cursor del ratón en el fotograma capturado.
Reducción de escalaMaxWidth0 desactiva la reducción de escala; en otro caso, los fotogramas más anchos se reducen antes de codificar.
Tasa de fotogramasFrameRate de la fuente de captura5 fps por defecto, hasta 30 fps para contenido de pantalla.
Codificar y enviarTsgcRTCTrack.SendVideoFrameLos fotogramas BGRA32 capturados alimentan el codificador de vídeo de la pista como cualquier otra fuente.

Cifrado de medios obligatorio

Todos los paquetes RTP, RTCP y SCTP de la conexión van cifrados a partir del handshake DTLS — no existe un modo en texto plano.

CapacidadDetalle
Intercambio de clavesHandshake DTLS sobre el par de candidatos ICE nominado (RFC 5764 DTLS-SRTP), que deriva el material de claves SRTP.
Rol DTLSEn la señalización manual el rol proviene de a=setup (el que ofrece es pasivo, el que responde es activo); IsDTLSClient lo indica una vez resuelto.
Perfiles de protección SRTPSRTP_AES128_CM_SHA1_80, SRTP_AES128_CM_SHA1_32, SRTP_AEAD_AES_128_GCM, SRTP_AEAD_AES_256_GCM, negociados durante el handshake DTLS.
Estado criptográfico por SSRCUn contexto criptográfico (contador de rollover, ventana de repetición) por SSRC, como exige la sección 3.2.3 de RFC 3711, incluso cuando BUNDLE coloca todas las líneas m en un único transporte DTLS-SRTP.
AlcanceCubre los medios RTP/RTCP y la asociación SCTP que transporta los canales de datos — toda la conexión, no solo una línea m.
BackendImplementación de SRTP respaldada por OpenSSL.

Control de congestión y resiliencia frente a pérdidas

Un estimador basado en retardo al estilo de Google Congestion Control monitoriza el enlace y ajusta la tasa de bits objetivo del codificador de vídeo.

CapacidadMiembroNotas
Estimador basado en retardoTsgcBWE_EstimatorAgrupa los paquetes en ráfagas de envío de 5 ms, ejecuta un filtro de tendencia sobre el retardo entre grupos, y clasifica el enlace como normal, sobreuso o infrautilización.
Control de tasaControlador AIMDEl sobreuso reduce al 85% de la tasa confirmada, la infrautilización mantiene, y lo normal incrementa (multiplicativo lejos del último techo conocido, aditivo cerca de él).
Techo por pérdidasSeguimiento de la tasa de pérdidasPor encima del 10% de pérdidas el techo baja; por debajo del 2% se recupera un 8% por segundo hasta MaxBitrate.
Retroalimentación a nivel de transporteTWCC (RTCP)BuildRTCP_TWCC / ParseRTCP_TWCC para la retroalimentación de control de congestión a nivel de transporte, con REMB como techo alternativo para los pares que solo lo admiten a él.
ActivarloRTCOptions.Media.CongestionControlSolo surte efecto cuando la descripción remota negocia también la extensión de cabecera / retroalimentación correspondiente.
Recuperación de pérdidasRTCOptions.Media.RTXRetransmisión según RFC 4588 del stream de vídeo ante un RTCP NACK.
Corrección de errores hacia adelanteRTCOptions.Media.FECProtección RED / ULPFEC en el stream de vídeo saliente.
PacingRTCOptions.Media.PacingRitma los paquetes de vídeo salientes a la tasa de bits estimada en lugar de enviarlos en ráfaga.
Recuperación de keyframeRTCP PLIRequestKeyFrame en la pista receptora solicita al emisor un keyframe nuevo tras una pérdida.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

Desarrolla con sgcWebRTC

Descarga la prueba gratuita y abre una conexión de pares real desde Delphi o C++ Builder.