Découvrez les causes de la latence dans Real-Time Streaming (RTS) et comment la réduire.
Causes courantes de la latence RTS
|
Étape |
Causes courantes |
|
|
|
Transmission réseau |
|
|
|
|
Ingestion de flux
Paramètres OBS Studio
Configurez OBS Studio comme suit :
Dans OBS Studio, accédez à la page Settings > Output. Définissez Output Mode sur Advanced et sélectionnez l'onglet Streaming. Définissez Encoder sur x264, Rate Control sur CBR et Bitrate sur 2500 Kbps. Définissez Keyframe Interval sur 1 seconde, CPU Usage Preset sur ultrafast, Profile sur baseline et Tune sur zerolatency.
Paramètres vMix
Configurez vMix comme suit :
Dans la boîte de dialogue Streaming Quality, définissez Video Bit Rates sur 1500, Encode Size sur 1920 x 1080 et Audio Bit Rate sur 128. Dans la section Video, définissez Profile sur Baseline, Level sur 3,1 et Preset sur ultrafast. Ensuite, définissez Keyframe Frequency sur 1 seconde, Threads sur 4 et Network Buffer sur 20 secondes. Paramètres clés : Level, Preset, Threads et Network Buffer.
Configuration du SDK Push
Définissez le GOP vidéo sur 1 et conservez les autres paramètres par défaut :
Android
mAlivcLivePushConfig = new AlivcLivePushConfig();
mAlivcLivePushConfig.setVideoEncodeGop(AlivcVideoEncodeGopEnum.GOP_ONE);
iOS
AlivcLivePushConfig *pushConfig = [[AlivcLivePushConfig alloc] init];
pushConfig.videoEncodeGop = AlivcLivePushVideoEncodeGOP_1;
Web
Le SDK Push pour Web est optimisé par défaut.
Réseau d'ingestion
Un réseau d'ingestion stable est essentiel. Pour isoler les problèmes réseau, changez de réseau et réingérez le flux depuis le même appareil. Si la latence diminue, le réseau d'origine était la cause.
Charge de l'appareil
Une utilisation élevée du processeur ou de la mémoire sur l'appareil d'ingestion réduit l'efficacité de la capture et de l'encodage, ce qui augmente la latence. Pour isoler ce problème, testez avec un autre appareil en utilisant le même réseau et la même configuration.
Lecture
Configuration du SDK Native Player
RTS utilise le protocole WebRTC, qui gère bien la perte de paquets et la gigue. Pour réduire davantage la latence, optimisez la stratégie de mise en tampon du lecteur.
ApsaraVideo Player SDK v5.5.6.0 et versions ultérieures, ou la démo du lecteur, applique la configuration de latence optimale par défaut. Aucun ajustement n'est nécessaire.
Si la latence persiste, analysez les journaux du SDK RTS :
-
Latence du flux : activez la journalisation pour le SDK ApsaraVideo Player pour Android ou le SDK ApsaraVideo Player pour iOS. Recherchez l'entrée
code=154pour vérifier la latence de bout en bout (ms) :gd (globalDelayMS) : la latence de bout en bout.
td (transDelayMS) : somme de la latence d'ingestion et de transmission CDN. Des valeurs supérieures à 800 ms suggèrent une latence d'ingestion ou CDN élevée.
nd (network delay) : latence réseau du CDN au lecteur. Des valeurs supérieures à 800 ms suggèrent un problème réseau.
jd (jitterDelayMS) : latence du tampon anti-gigue. Des valeurs supérieures à 800 ms suggèrent un problème réseau.
ud (user buffer length) : longueur du tampon utilisateur. Généralement 0 ; peut être ignoré.
dd (decoder delay) : latence de décodage. Des valeurs supérieures à 800 ms suggèrent un problème de décodage du lecteur.
rd (render delay) : latence de rendu. Des valeurs supérieures à 800 ms suggèrent un problème de rendu du lecteur.
ut : ce champ peut être ignoré.
-
Latence de la première image : recherchez l'entrée
code=161dans le journal du SDK :st:0,init:1,sdns:0,rdns:2,sc:0,ced:12,sub:5,frsp:309,si:8,fp:13,ffc:5,ffo:416,sum:763Si
sumdiffère considérablement de la latence mesurée de la première image, suspectez un problème de décodage ou de rendu. Sisumest proche de la valeur mesurée, vérifiez les champs individuels pour trouver le goulot d'étranglement. Des valeurs élevées deced,frspouffcindiquent généralement un problème réseau.
Configuration du SDK Web Player
Le SDK ApsaraVideo Player pour Web s'appuie sur la politique de tampon par défaut du navigateur et ne nécessite aucune configuration supplémentaire. Pour diagnostiquer une latence élevée, ouvrez chrome://webrtc-internals dans Chrome.

Métriques clés :
inbound-rtp (kind=audio) et inbound-rtp (kind=video) : affiche l'état de réception et de décodage des données en temps réel. Une valeur élevée de
framesDroppedou des valeurs inattendues deframesDecoded/sindiquent un problème de décodage — vérifiez les paramètres d'ingestion et de transcodage.candidate-pair : affiche l'état de la connexion. Une valeur élevée de
currentRoundTripTimeou un nombre élevé depacketsLostdansinbound-rtpindique un problème réseau.
Latence des flux audio uniquement et vidéo uniquement
Si un flux source est audio uniquement ou vidéo uniquement, Alibaba Cloud attend par défaut 5 secondes pour la piste manquante. Ce délai peut provoquer un écran noir ou un silence au début de la lecture. Pour éviter ce délai, désabonnez-vous de la piste manquante en ajoutant @subvideo=no ou @subaudio=no à l'URL de streaming.
Pour un flux vidéo uniquement avec l'URL
artc://example.aliyundoc.com/app/stream?auth_key={your_auth_key}, modifiez l'URL enartc://example.aliyundoc.com/app/stream?auth_key={your_auth_key}@subaudio=no.Pour un flux audio uniquement avec l'URL
artc://example.aliyundoc.com/app/stream?auth_key={your_auth_key}, modifiez l'URL enartc://example.aliyundoc.com/app/stream?auth_key={your_auth_key}@subvideo=no.
Réseau de lecture
Assurez-vous que le réseau de lecture est stable. Sur les réseaux instables, le SDK ApsaraVideo Player augmente le tampon local pour maintenir une lecture fluide, ce qui ajoute de la latence.
Transcodage
Le transcodage ajoute 300 à 500 ms de latence à votre flux en direct. RTS prend en charge deux types de transcodage :
Transcodage automatique H5 : s'applique lorsqu'un flux RTMP est ingéré pour la lecture web. La latence ajoutée est minime et inévitable.
-
Modèles de transcodage personnalisés : la lecture d'un flux transcodé peut introduire de la latence de deux manières :
Latence de traitement : ajoute 300 à 500 ms de latence inévitable aux flux transcodés.
Latence d'initialisation : avec le triggered transcoding activé, le transcodage ne démarre que lorsque le premier spectateur demande le flux, ajoutant environ 200 ms de latence de démarrage.
RemarqueLe transcodage déclenché est configuré lors de la création d'un modèle de transcodage. Pour le désactiver, créez un nouveau modèle, redémarrez l'ingestion du flux et retestez la latence.
Nous contacter
Si une latence élevée persiste après ces étapes de dépannage, soumettez un ticket. Incluez les informations suivantes :
Les URL d'ingestion et de streaming utilisées pour les tests.
Les outils d'ingestion et de lecture utilisés (par exemple, OBS Studio et SDK ApsaraVideo Player pour Web).
Un résumé des étapes de dépannage que vous avez effectuées.