Guide étape par étape pour réduire la latence avec FFplay
1. Installer FFmpeg et FFplay
Assurez-vous que FFmpeg (qui inclut FFplay) est installé sur votre système. Vous pouvez vérifier s'il est installé en exécutant:
- ffplay -version
S'il n'est pas installé, vous pouvez télécharger et installer FFmpeg à partir duSite officielou utiliser un gestionnaire de paquets commeapt
oubrass
basé sur votre système d'exploitation. 2. Ouvrir FFplay avec RTSP Stream
Commencez par exécuter FFplay avec votre URL de flux RTSP:
- ffplay rtsp://192.168.1.120:554/live/1_0
Remplacerrtsp://192.168.1.120:554/live/1_0avec l'URL RTSP réelle de votre encodeur vidéo.
3. Ajuster la taille du tampon
Réduisez la taille du tampon par défaut pour minimiser le délai. Utilisez l'indicateur -rtsp_transport pour sélectionner le protocole de transport (TCP ou UDP). UDP entraîne généralement une latence inférieure.
Exemple de commande:
- ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -sondez 32 rtsp://192.168.1.120:554/live/1_0
Explication:
- -rtsp_transport udp: Force le transport UDP, qui est généralement inférieure à celle du TCP.
- -fflags nobuffer: Désactive la mise en mémoire tampon pour réduire la latence.
- -analyseur 0: Limite le temps que FFplay passe à analyser le flux, aidant à commencer la lecture plus rapidement.
- -sondez 32: Limite la quantité de données utilisées pour sonder le flux, ce qui réduit également la latence.
4. Régler le retard de sortie vidéo
Utilisez l'indicateur -sync pour ajuster la synchronisation vidéo. Le définir sur la vidéo oblige FFplay à synchroniser avec le flux vidéo, ce qui peut aider à réduire la latence.
Exemple de commande:
- ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -sprobesize 32 -sync video rtsp://192.168.1.120:554/live/1_0
5. Réduire Video et Audio Buffering
Désactivez ou minimisez la lecture audio avec -vn (pas de vidéo) ou réglez les tailles de mémoire tampon audio à l'aide de -an (pas d'audio) si l'audio n'est pas nécessaire pour le test.
Exemple:
- ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -sprobesize 32 -synchroniser video -un rtsp://192.168.1.120:554/live/1_0
6. Options de décodage fin-tune
Ajoutez des options pour optimiser les performances de décodage et minimiser la latence. Par exemple :
- ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -sprobesize 32 -synchroniser video -an -drapeaux low_delay rtsp://192.168.1.120:554/live/1_0
7. Optimisations supplémentaires (facultatif)
Vous pouvez accorder davantage FFplay en utilisant des drapeaux -x et -y pour spécifier la taille de la fenêtre vidéo, et -framedrop pour jeter les images si elles ne peuvent pas être traitées assez rapidement :
- ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -sondez 32 -synchroniser la vidéo -an -framedrop -drapeaux bas_delay -x 640 -y 360 rtsp://192.168.1.120:554/live/1_0
Explication:
-cadedrop
: Dépose les trames lorsque le système ne peut pas suivre le décodage, réduisant ainsi la mise en mémoire tampon.
- -x 640 -y 360: Spécifie la résolution pour lire la vidéo, réduisant ainsi la charge de travail de décodage.
Exemple de commande finale
- ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -sondez 32 -synchroniser la vidéo -an -framedrop -drapeaux bas_delay -x 640 -y 360 rtsp://192.168.1.120:554/live/1_0
8. Surveiller la latence
Après avoir configuré, surveillez la lecture pour observer la réduction de la latence. Vous pouvez utiliser des outils comme FFprobe pour mesurer la latence en temps réel en inspectant les détails du flux.
Exemple de commande FFprobe pour vérifier les statistiques du flux:
- ffprobe -v quiet -print_format json -show_streams rtsp://192.168.1.120:554/live/1_0
En utilisant les commandes ci-dessus et en peaufinant les différents drapeaux, vous pouvez réduire efficacement la latence lorsque vous testez le flux RTSP à partir de votre encodeur vidéo.
Guide étape par étape pour réduire davantage la latence avec FFplay
Si vous rencontrez une latence accrue après avoir suivi les instructions fournies, il pourrait y avoir plusieurs raisons pour lesquelles cela se produit. Voici quelques causes potentielles et façons d'y remédier:
1. Paramètres tampon (réglage incorrect du tampon)
Le-fflags nobufferflag est destiné à minimiser la mise en mémoire tampon, mais dans certains cas, cela peut entraîner une instabilité ou une latence accrue, surtout si les conditions réseau ne sont pas idéales. FFplay peut avoir du mal à traiter les images en douceur sans suffisamment de mémoire tampon, provoquant des retards supplémentaires dans la lecture.
Solution: Essayez d'ajuster la stratégie de mise en mémoire tampon. Au lieu de désactiver complètement la mise en mémoire tampon, vous pourriez utiliser un paramètre de mémoire tampon plus conservateur ou supprimer le-fflags nobufferdrapeau :
- ffplay -rtsp_transport udp -analyzeduration 0 -sprobesize 32 -sync video rtsp://192.168.1.120:554/live/1_0
2. Protocole de transport RTSP (UDP vs TCP)
Passer àUdpest généralement plus rapide que TCP pour le streaming RTSP, mais cela peut entraîner une perte de paquets ou une gigue dans certaines conditions réseau, ce qui provoque le retard du traitement du décodeur. Si le réseau n'est pas stable, en utilisantUdppeut augmenter par inadvertance la latence car FFplay tente de compenser les paquets perdus ou corrompus.
Solution: Test avecTcptransport et voir si la latence s'améliore. Utilisez le-rtsp_transport tcpdrapeau pour forcer TCP :
ffplay -rtsp_transport tcp -analyzeduration 0 -sprobesize 32 -sync video rtsp://192.168.1.120:554/live/1_0
3. Goutte de cadre
Le-cadedropflag indique à FFplay de jeter les images s'il n'est pas capable de les décoder à temps, ce qui devrait diminuer la latence. Cependant, si trop d'images sont abandonnées, cela peut entraîner une augmentation des retards car FFplay peut prendre plus de temps à récupérer et à resynchroniser.
Solution: Si la chute de cadre est excessive, essayez de retirer le-cadedropdrapeau ou réduire son impact :
- ffplay -rtsp_transport udp -analyzeduration 0 -sprobesize 32 -sync video rtsp://192.168.1.120:554/live/1_0
Alternativement, vous pouvez essayer d'ajuster le comportement -framedrop pour voir si cela aide à réduire le décalage:
- ffplay -framedrop 0 -rtsp_transport udp -analyzeduration 0 -sprobesize 32 -sync video rtsp://192.168.1.120:554/live/1_0
4. Conditions du réseau et gigue
LeUdple transport peut ne pas être idéal dans un réseau à forte latence ou instable. UDP ne garantit pas la livraison des paquets, ce qui peut entraîner des retards de gigue et de mise en mémoire tampon côté client. Bien que l'UDP puisse réduire la latence dans des conditions réseau parfaites, il cause souvent plus de problèmes lorsqu'il y a instabilités ou congestion du réseau.
Solution: Testez avec un réseau stable et moins encombré, ou revenir àTcpsi votre réseau a une forte gigue ou une perte de paquets.
5. Décodeur Surchargeur
Si le-drapeaux low_delaydrapeau est utilisé avec de grands flux vidéo ou des résolutions supérieures, cela pourrait conduire à une surcharge de décodeur où FFplay essaie de décoder des images trop rapidement, ce qui peut introduire plus de retards de traitement.
Solution: Réduisez la résolution de la vidéo pour alléger la charge sur le décodeur ou éteindre les drapeaux à faible latence si cela cause des problèmes :
- ffplay -rtsp_transport udp -analyzeduration 0 -sprobesize 32 -sync video -an rtsp://192.168.1.120:554/live/1_0
6. Analyse excessive et son approbation
Les drapeaux-analyseur 0et-sondez 32sont destinés à limiter le temps que FFplay passe à analyser le flux et la taille de la sonde de paquets initiale, ce qui devrait accélérer le démarrage. Cependant, si ces valeurs sont trop restrictives, cela pourrait forcer FFplay à fonctionner avec des informations incomplètes, entraînant des retards de synchronisation ou une latence globale accrue alors qu'il tente de récupérer à partir de données manquantes.
Solution: Augmenter le-analyseet-sondervaleurs légèrement pour permettre à FFplay de rassembler plus de données pendant le démarrage sans augmenter considérablement la latence :
- ffplay -rtsp_transport udp -analyzeduration 5000000 -sprobesize 5000000 -synchroniser la vidéo rtsp://192.168.1.120:554/live/1_0
7. Mode de synchronisation vidéo
Le-synchronisation vidéoflag indique à FFplay de synchroniser précisément les images vidéo, ce qui peut causer des retards lorsqu'il doit attendre la image suivante. Si la fréquence d'images de sortie de l'encodeur ne s'aligne pas bien sur les attentes de synchronisation de FFplay, cela peut entraîner des retards inutiles.
Solution: Vous pouvez expérimenter la synchronisation àaudioouHorodatageplutôt que vidéo :
- ffplay -rtsp_transport udp -analyzeduration 0 -sprobesize 32 -sync audio rtsp://192.168.1.120:554/live/1_0
Alternativement, supprimer le drapeau -sync entièrement pourrait aider:
- ffplay -rtsp_transport udp -analyzeduration 0 -sprobesize 32 rtsp://192.168.1.120:554/live/1_0
Conclusion :
Pour réduire la latence, expérimentez l'équilibrage de la stratégie de mise en mémoire tampon, du protocole de transport et des paramètres de décodage. UDP offre généralement une latence plus faible mais nécessite un réseau stable, tandis que TCP pourrait être plus fiable si la qualité du réseau n'est pas cohérente. Le réglage de la taille de la mémoire tampon, du comportement de sonde et des paramètres de chute de trame peuvent également aider à atténuer une latence excessive. Continuez à tester différentes configurations pour trouver la configuration optimale pour votre cas d'utilisation spécifique.
Related Articles
FAQ: NVR de Dahua avec Encodeur
Comment connaître cet encodeur au NVR de Dahua ? Tout d'abord, assurez-vous que l'encodeur et le NVR se trouvent sur le même segment de réseau. Ensuite, procédez comme suit pour ajouter l'appareil: Faites un clic droitla souris et ...
FAQ: Le NVR de Hikvision avec Encodeur
Comment connaître cet encodeur au NVR de Hikvision ? Tout d'abord, assurez-vous que l'encodeur et le NVR (Network Video Recorder) se trouvent dans le même segment de réseau. Cela signifie que les deux appareils devraient avoir des adresses IP au sein ...
FAQ: Test de latence d'encodeur
Test de latence par RTSP Stream Comment pouvons-nous obtenir une latence plus faible via VLC lors de la lecture de vidéo sur votre iPad? Comment mener un test de latence entre le codeur et le décodeur ? Comment effectuer un test de latence de codec ...
FAQ: RTSP de Encodeur
Qu'est-ce que le flux RTSP ? RTSP (Real Time Streaming Protocol) est un protocole de contrôle réseau conçu pour le contrôle de la livraison de données multimédias, telles que l'audio et la vidéo, sur un réseau. Il permet la transmission fluide de ...
FAQ: Vidéo de Encodeur
Vidéo : Main Stream/Sub Stream Quelle est la différence entre le flux principal et le sous flux, et comment dois-je choisir entre eux ? Les paramètres vidéo dans encodeur comprennent généralement deux types de flux:flux principaletsub stream. Stream ...