Matrice des fonctionnalités sgcWebRTC — Audio, vidéo, canaux de données | eSeGeCe

sgcWebRTC Matrice des fonctionnalités

Tout ce que sgcWebRTC ajoute à TsgcRTCPeerConnection, réparti par capacité. La signalisation et la connectivité viennent du composant de base dans sgcWebSockets Enterprise ; ce pack débloque le moteur média par-dessus — audio, vidéo, capture d'écran, canaux de données, chiffrement et estimation de bande passante. Chaque capacité fonctionne de la même façon en Delphi et C++ Builder, et chaque licence inclut le code source complet.

Signalisation

Base Enterprise & SDP

Audio

Opus / G.711

Vidéo

VP8 / H.264 / MJPEG

Canaux de données

RFC 8831 / 8832

Partage d'écran

Capture & rendu

SRTP / DTLS

Média chiffré

Estimation de bande passante

Contrôle de congestion

Ce qu'Enterprise livre, ce que sgcWebRTC ajoute

La connectivité de base est déjà dans sgcWebSockets. sgcWebRTC débloque la surface SDP, canaux de données et média sur le même composant.

CapacitéLivré avecNotes
Client STUN (TsgcSTUNClient)sgcWebSockets StandardDécouverte de candidats server-reflexive, disponible en dessous d'Enterprise.
Client et serveur TURN, client ICE (TsgcTURNClient, TsgcICEClient)sgcWebSockets EnterpriseCandidats relayés et collecte / nomination complète des candidats ICE.
Base TsgcRTCPeerConnection, signalisation historique par relais WebSocketsgcWebSockets EnterpriseGatherCandidates, WriteData et les événements OnRTCWebSocket… / OnRTCCandidatePairNominated / OnRTCConnect pilotent la connectivité ICE et un transport DTLS via le serveur de protocole RTCPeerConnection intégré, sans SDP, canaux de données ni média.
Signalisation SDP manuelle offre/réponsesgcWebRTCCreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, RestartIce — la machine à états JSEP (RFC 8829) qu'attend un navigateur.
Renégociation & résolution des conflitssgcWebRTCRé-offres après AddTrack / RemoveTrack, OnNegotiationNeeded, rollback, et la règle de perfect-negotiation du W3C via Polite.
Trickle ICEsgcWebRTCTrickleICE et RTCOptions.TrickleICEAuto transmettent les candidats au fil de l'eau plutôt que d'attendre le délai complet de collecte.
État de connexion & de signalisationsgcWebRTCConnectionState (sous-ensemble RTCPeerConnectionState du W3C) et SignalingState (sous-ensemble RTCSignalingState), plus OnConnectionStateChange et OnError.
Canaux de données SCTP, audio/vidéo RTP, chiffrement SRTPsgcWebRTCVoir les sections ci-dessous — les trois nécessitent ce pack au-dessus de la base Enterprise.

Pistes audio Opus & G.711

Un seul appel à AddTrack attache une piste audio à la connexion ; le PCM entre, le RTP sort, et le même chemin fonctionne en sens inverse pour la piste distante.

CapacitéMembreNotes
Attacher une piste audioAddTrack(rtctkAudio, aCodec)Renvoie un TsgcRTCTrack ; RemoveTrack arrête son envoi.
Codec OpuscctAudioOpus48 kHz / stéréo via un binding libopus chargé dynamiquement.
Codec G.711cctAudioPCMU / cctAudioPCMA8 kHz / mono μ-law et A-law, toujours disponible, aucune bibliothèque externe.
Envoyer de l'audio capturéTsgcRTCTrack.SendPCM(aPCM, aSamplesPerChannel)PCM entrelacé signé 16 bits, au taux d'échantillonnage et au nombre de canaux de l'encodeur.
Recevoir de l'audio décodéOnAudio(aPCM, aSampleRate, aChannels, aSamplesPerChannel)Se déclenche sur la piste distante à l'arrivée et au décodage du RTP.
Accès encodeur / décodeurAudioEncoder / AudioDecoderL'objet TsgcAudioEncoderBase / TsgcAudioDecoderBase sous-jacent, remplaçable par piste.
Cycle de vie de la pisteEnabled, Ended, OnEndedEnabled := False coupe le son sans renégocier ; Ended reflète une piste abandonnée par le côté distant ou une nouvelle offre.
Capture microphoneDescendants de TsgcMediaCaptureSourceCapture native par plateforme (waveIn sous Windows, plus les backends Linux, Apple et Android) alimente directement SendPCM.

Pistes vidéo VP8, H.264 & Motion JPEG

La vidéo suit la même forme que l'audio — des trames en entrée, du RTP en sortie — avec le codec choisi par piste et, pour H.264, l'encodeur matériel propre à la plateforme en dessous.

CapacitéMembreNotes
Attacher une piste vidéoAddTrack(rtctkVideo, aCodec)Même appel que pour l'audio, avec un TsgcCodecType vidéo.
Codec VP8cctVideoVP8Binding libvpx, chargé dynamiquement, disponible sous Windows et Linux.
Codec H.264cctVideoH264Encodeur matériel natif par plateforme : Media Foundation (Windows), VideoToolbox (iOS/macOS), MediaCodec (Android). Flux Annex-B, payload RFC 6184, SPS/PPS transportés en bande sur chaque image clé.
Codec Motion JPEGcctVideoJPEGBasé sur GDI+, Windows et Delphi XE ou ultérieur.
Envoyer une trame bruteTsgcRTCTrack.SendVideoFrame(aFrame, aForceKeyFrame)Encode et envoie un TsgcVideoFrame (famille I420/NV12/RGB/BGR).
Envoyer une trame pré-encodéeSendEncodedFrame(aData, aIsKeyFrame)Contourne l'encodeur propre à la piste pour une trame encodée en externe.
Recevoir des trames décodées / brutesOnVideoFrame / OnEncodedFrameTsgcVideoFrame décodé, ou le flux binaire brut encodé avec son indicateur d'image clé.
Demander une image cléRequestKeyFrameEnvoie un PLI RTCP à l'émetteur distant.
Accès encodeur / décodeurVideoEncoder / VideoDecoderL'objet TsgcVideoEncoderBase / TsgcVideoDecoderBase sous-jacent.
Capture caméraDescendants de TsgcMediaCaptureSourceBackends de capture par plateforme (Windows, Linux, Apple, Android) alimentent directement SendVideoFrame.
RenduDescendants de TsgcMediaRendererBackends de rendu par plateforme (Windows, Linux, Apple, Android) pour la vidéo distante décodée.

Canaux de données SCTP (RFC 8831 / 8832)

Ordonnés ou non, entièrement fiables ou bornés par un nombre de retransmissions ou une durée de vie, sur SCTP-over-DTLS.

CapacitéMembreNotes
Ouvrir un canalCreateDataChannel(aLabel, aOrdered, aMaxRetransmits, aMaxPacketLifeTime, aProtocol)Renvoie un TsgcRTCDataChannel ; force RTCOptions.DTLS à vrai.
Canal ouvert par le distantOnDataChannel(aChannel)Se déclenche quand le pair ouvre un canal sur cette connexion.
Envoyer texte / binaireSend(aText) / SendBytes(aBytes)Renvoie False si le canal n'est pas encore ouvert.
RecevoirOnMessage(aText) / OnMessageBinary(aBytes)Se déclenche sur le thread qui pilote SCTP.
Événements de cycle de vieOnOpen, OnClose, OnError(aError)Correspond au cycle de vie RTCDataChannel du W3C.
État du canalState, HasId, IdL'id de stream SCTP n'est final qu'une fois le rôle DTLS résolu (parité RFC 8832).
Contrôle de fluxBufferedAmount, MaxMessageSizeMaxMessageSize suit le a=max-message-size du pair et refuse localement un envoi trop volumineux.
Introspection de fiabilitéReliability, ReliabilityParam, Ordered, MaxRetransmits, MaxPacketLifeTimeRelit exactement ce que le canal a négocié.
FermetureCloseFermeture basée sur RE-CONFIG ; State passe à closing, puis closed avec OnClose.
Niveau connexionDataChannelCount, DataChannels[i]Énumère chaque canal ouvert sur la connexion.

Capture de bureau, moniteur, fenêtre & région

Une source de capture alimente le même chemin SendVideoFrame qu'une caméra — le contenu écran n'est qu'une piste vidéo de plus.

CapacitéMembreNotes
Backend de captureTsgcScreenCapture_WinCapture bureau, moniteur, fenêtre et région basée sur GDI. Actuellement Windows uniquement.
Énumérer les moniteursGetMonitors / MonitorIndexUne ligne par moniteur (résolution, position, indicateur principal) ; -1 capture tout le bureau virtuel.
Capture de régionRegionRectangle en coordonnées écran ; un rectangle vide désactive le mode région.
Fenêtres en couches / transparentesCaptureLayeredUtilise CAPTUREBLT pour inclure les fenêtres en couches et transparentes.
CurseurIncludeCursorDessine le curseur de la souris dans la trame capturée.
Réduction d'échelleMaxWidth0 désactive la réduction ; sinon les trames plus larges sont réduites avant encodage.
Fréquence d'imagesFrameRate de la source de capture5 fps par défaut, jusqu'à 30 fps pour du contenu écran.
Encoder & envoyerTsgcRTCTrack.SendVideoFrameLes trames BGRA32 capturées alimentent l'encodeur vidéo de la piste comme toute autre source.

Chiffrement obligatoire du média

Chaque paquet RTP, RTCP et SCTP sur la connexion est chiffré dès le handshake DTLS — il n'y a pas de mode en clair.

CapacitéDétail
Échange de clésHandshake DTLS sur la paire de candidats ICE nommée (RFC 5764 DTLS-SRTP), dérivant le matériel de clé SRTP.
Rôle DTLSEn signalisation manuelle, le rôle vient de a=setup (offreur passif, répondeur actif) ; IsDTLSClient le rapporte une fois résolu.
Profils de protection SRTPSRTP_AES128_CM_SHA1_80, SRTP_AES128_CM_SHA1_32, SRTP_AEAD_AES_128_GCM, SRTP_AEAD_AES_256_GCM, négociés pendant le handshake DTLS.
État cryptographique par SSRCUn contexte cryptographique (compteur de rollover, fenêtre anti-rejeu) par SSRC, comme l'exige la RFC 3711 section 3.2.3, même quand BUNDLE place toutes les lignes m sur un seul transport DTLS-SRTP.
PortéeCouvre le média RTP/RTCP et l'association SCTP portant les canaux de données — toute la connexion, pas une seule ligne m.
BackendImplémentation SRTP adossée à OpenSSL.

Contrôle de congestion & résilience aux pertes

Un estimateur basé sur le délai, dans l'esprit du Google Congestion Control, suit le lien et pilote le débit cible de l'encodeur vidéo.

CapacitéMembreNotes
Estimateur basé sur le délaiTsgcBWE_EstimatorGroupe les paquets en rafales d'envoi de 5 ms, applique un filtre de tendance sur le délai inter-groupe, et classe le lien comme normal, en surutilisation ou en sous-utilisation.
Contrôle de débitContrôleur AIMDLa surutilisation réduit à 85% du débit acquitté, la sous-utilisation maintient, le normal augmente (multiplicatif loin du dernier plafond connu, additif près de celui-ci).
Plafond de pertesSuivi du taux de perteAu-delà de 10% de pertes le plafond baisse ; en dessous de 2% il récupère 8% par seconde jusqu'à MaxBitrate.
Feedback transport-wideTWCC (RTCP)BuildRTCP_TWCC / ParseRTCP_TWCC feedback de contrôle de congestion transport-wide, avec REMB comme plafond de repli pour les pairs qui ne supportent que celui-ci.
L'activerRTCOptions.Media.CongestionControlNe prend effet que si la description distante négocie aussi l'extension d'en-tête / le feedback correspondant.
Récupération de pertesRTCOptions.Media.RTXRetransmission RFC 4588 du flux vidéo sur NACK RTCP.
Correction d'erreur en avantRTCOptions.Media.FECProtection RED / ULPFEC sur le flux vidéo sortant.
LissageRTCOptions.Media.PacingLisse les paquets vidéo sortants au débit estimé plutôt que de les envoyer en rafale.
Récupération d'image cléPLI RTCPRequestKeyFrame sur la piste réceptrice demande à l'émetteur une nouvelle image clé après une perte.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Développe avec sgcWebRTC

Télécharge l'essai gratuit et ouvre une vraie connexion pair à pair depuis Delphi ou C++ Builder.