Ridurre la latenza con FFplay per encoder HDMI | Exvist Support

Domande frequenti: Ridurre la latenza con FFplay per Codificatore

Guida passo dopo passo per ridurre la latenza con FFplay

1. Installare FFmpeg e FFplay

Assicurarsi che FFmpeg (che include FFplay) sia installato sul sistema. Puoi verificare se è installato eseguendo:
  1. ffplay -versione
Se non è installato, è possibile scaricare e installare FFmpeg dalsito ufficialeo utilizzare un gestore di pacchetti comeaptobirrabasato sul sistema operativo.

2. Apri FFplay con RTSP Stream

Inizia eseguendo FFplay con l'URL del flusso RTSP:
  1. ffplay rtsp://192.168.1.120:554/live/1_0
Sostituirertsp://192.168.1.120:554/live/1_0con l'URL RTSP effettivo del tuo encoder video.

3. Regolare la dimensione del buffer

Ridurre la dimensione predefinita del buffer per ridurre al minimo i ritardi. Utilizzare il flag -rtsp_transport per selezionare il protocollo di trasporto (TCP o UDP). UDP in genere si traduce in una latenza inferiore.
Comando di esempio:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 rtsp://192.168.1.120:554/live/1_0
Spiegazione:
  1. -rtsp_transport udp: Forza il trasporto UDP, che è generalmente latenza inferiore rispetto al TCP.
  2. -fflags nobuffer: Disattiva il buffering per ridurre la latenza.
  3. 0 -analizedurazione 0: Limita il tempo che FFplay trascorre analizzare il flusso, aiutando ad avviare la riproduzione più velocemente.
  4. -probesizzare 32: Limita la quantità di dati utilizzati per sondare il flusso, riducendo anche la latenza.

4. Regolare il ritardo di uscita video

Utilizzare il flag -sync per regolare la sincronizzazione video. L'impostazione su video costringe FFplay a sincronizzare con il flusso video, che può aiutare a ridurre la latenza.
Comando di esempio:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -sync video rtsp://192.168.1.120:554/live/1_0

5. Ridurre il buffer video e audio

Disattivare o minimizzare la riproduzione audio con -vn (nessun video) o regolare le dimensioni del buffer audio utilizzando -an (nessun audio) se l'audio non è necessario per il test.
Esempio:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -sync video -an rtsp://192.168.1.120:554/live/1_0

6. Ottimizzare le opzioni di decodifica

Aggiungi opzioni per ottimizzare le prestazioni di decodifica e ridurre al minimo la latenza. Ad esempio:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -sync video -an -flags low_delay rtsp://192.168.1.120:554/live/1_0

7. Ottimizzazioni aggiuntive (facoltativo)

È possibile regolare ulteriormente FFplay utilizzando flag -x e -y per specificare le dimensioni della finestra video e -framedrop per scartare i fotogrammi se non possono essere elaborati abbastanza rapidamente:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -sync video -an -framedrop -flags low_delay -x 640 -y 360 rtsp://192.168.1.120:554/live/1_0
Spiegazione:
  1. - incorniciato: Gocce fotogrammi quando il sistema non può tenere il passo con la decodifica, riducendo il buffering.
  2. -x 640 -y 360: Specifica la risoluzione per riprodurre il video, riducendo il carico di lavoro di decodifica.

Esempio di comando finale

  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -sync video -an -framedrop -flags low_delay -x 640 -y 360 rtsp://192.168.1.120:554/live/1_0

8. Monitor latenza

Dopo l'impostazione, monitorare la riproduzione per osservare la riduzione della latenza. È possibile utilizzare strumenti come FFprobe per misurare la latenza in tempo reale ispezionando i dettagli del flusso.
Esempio di comando FFprobe per controllare le statistiche del flusso:
  1. ffprobe -v quiet -print_format json -show_streams rtsp://192.168.1.120:554/live/1_0
Utilizzando i comandi di cui sopra e modificando i vari flag, è possibile ridurre efficacemente la latenza quando si testa il flusso RTSP dall'encoder video.

Guida passo dopo passo per ridurre ulteriormente la latenza con FFplay

Se stai riscontrando una maggiore latenza dopo aver seguito le istruzioni fornite, ci potrebbero essere diversi motivi per cui questo sta accadendo. Ecco alcune potenziali cause e modi per affrontarli:

1. Impostazioni buffering (regolazione corretta del buffer)

The-fflags nobufferflag ha lo scopo di ridurre al minimo il buffering, ma in alcuni casi, questo può portare a instabilità o maggiore latenza, soprattutto se le condizioni di rete non sono ideali. FFplay può lottare per elaborare i frame senza problemi senza abbastanza buffer, causando ulteriori ritardi nella riproduzione.

Soluzione: Prova a regolare la strategia di buffering. Invece di disabilitare completamente il buffering, è possibile utilizzare un'impostazione buffer più conservativa o rimuovere il-fflags nobufferbandiera:

  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 -sync video rtsp://192.168.1.120:554/live/1_0

2. Protocollo di trasporto RTSP (UDP vs TCP)

Passaggio aUdpin genere è più veloce di TCP per lo streaming RTSP, ma può provocare la perdita di pacchetti o jitter in determinate condizioni di rete, causando il decodificatore ritardare l'elaborazione. Se la rete non è stabile, utilizzandoUdppuò inavvertitamente aumentare la latenza poiché FFplay tenta di compensare pacchetti persi o danneggiati.

Soluzione: Test conTcptrasporto e vedere se la latenza migliora. Utilizzare il-rtsp_transport tcpbandiera per forzare TCP:
ffplay -rtsp_transport tcp -analyzeduration 0 -probesize 32 -sync video rtsp://192.168.1.120:554/live/1_0

3. Telaio gocciolamento

The- incorniciatoflag dice a FFplay di scartare i frame se non è in grado di decodificarli nel tempo, il che dovrebbe diminuire la latenza. Tuttavia, se troppi fotogrammi vengono abbandonati, questo può portare ad un aumento dei ritardi poiché FFplay potrebbe richiedere più tempo per recuperare e riincronizzare.

Soluzione: Se la caduta del fotogramma è eccessivo, provare a rimuovere il- incorniciatobandiera o ridurre il suo impatto:
  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 -sync video rtsp://192.168.1.120:554/live/1_0
In alternativa, puoi provare a regolare il comportamento -framedrop per vedere se aiuta a ridurre i ritardi:
  1. ffplay -framedrop 0 -rtsp_transport udp -analyzeduration 0 -probesize 32 -sync video rtsp://192.168.1.120:554/live/1_0

4. Condizioni di rete e Jitter

TheUdpil trasporto potrebbe non essere ideale in una rete ad alta latenza o instabile. UDP non garantisce la consegna dei pacchetti, il che può portare a ritardi jitter e buffering sul lato cliente. Sebbene UDP possa ridurre la latenza in perfette condizioni di rete, spesso causa più problemi quando ci sono instabilità di rete o congestione.

Soluzione: Test con una rete stabile e meno congestionata, o tornare aTcpse la rete ha un'elevata perdita di jitter o pacchetti.

5. Sovraccarico decodificatore

Se il-bandiere low_delayflag viene utilizzato insieme a flussi video di grandi dimensioni o risoluzioni più elevate, potrebbe portare a un sovraccarico decodificatore in cui FFplay cerca di decodificare i fotogrammi troppo rapidamente, che può introdurre più ritardi di elaborazione.

Soluzione: Ridurre la risoluzione del video per alleggerire il carico sul decodificatore o spegnere flag a bassa latenza se sta causando problemi:
  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 -sync video -an rtsp://192.168.1.120:554/live/1_0

6. Analisi eccessiva e Probing

Le bandiere0 -analizedurazione 0e-probesizzare 32sono destinati a limitare la quantità di tempo FFplay per analizzare il flusso e le dimensioni della sonda del pacchetto iniziale, che dovrebbe accelerare l'avvio. Tuttavia, se questi valori sono troppo restrittivi, potrebbe costringere FFplay ad operare con informazioni incomplete, portando a ritardi di sincronizzazione o una maggiore latenza in quanto cerca di recuperare dai dati mancanti.

Soluzione: Aumentare il-analizzatourazionee-probesizevalori leggermente per consentire a FFplay di raccogliere più dati durante l'avvio senza aumentare significativamente la latenza:
  1. ffplay -rtsp_transport udp -analyzeduration 5000000 -probesize 5000000 -sync video rtsp://192.168.1.120:554/live/1_0

7. Modalità di sincronizzazione video

The-sincronizzazione videoflag dice a FFplay di sincronizzare con precisione fotogrammi video, il che può causare ritardi quando ha bisogno di attendere il fotogramma successivo. Se il frame rate di output dell'encoder non si allinea bene alle aspettative di sincronizzazione di FFplay, ciò può portare a ritardi inutili.

Soluzione: Puoi sperimentare la sincronizzazione conaudiootimestamp timestamppiuttosto che video:
  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 -sync audio rtsp://192.168.1.120:554/live/1_0
In alternativa, rimuovere completamente il flag -sync potrebbe aiutare:
  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 rtsp://192.168.1.120:554/live/1_0

Conclusione:

Per ridurre la latenza, sperimentare il bilanciamento della strategia di buffering, il protocollo di trasporto e le impostazioni di decodifica. UDP di solito offre una latenza inferiore ma richiede una rete stabile, mentre TCP potrebbe essere più affidabile se la qualità della rete è incoerente. La regolazione delle dimensioni del buffer, del comportamento di sondaggio e delle impostazioni di caduta del fotogramma può anche aiutare a mitigare l'eccessiva latenza. Continua a testare diverse configurazioni per trovare la configurazione ottimale per il tuo caso d'uso specifico.
    • Related Articles

    • Domande frequenti: RTSP di Codificatore

      Cos'è il flusso RTSP? RTSP (Real Time Streaming Protocol) è un protocollo di controllo di rete progettato per controllare la distribuzione di dati multimediali, come audio e video, su una rete. Consente la trasmissione fluida di contenuti audio e ...
    • Domande frequenti: Test di latenza di Codificatore

      Test di latenza di RTSP Stream Come possiamo ottenere una minore latenza tramite VLC durante la riproduzione di video sul tuo iPad? Come possiamo condurre un test di latenza tra encoder e decodificatore? Come possiamo condurre un test di latenza del ...
    • Domande frequenti: NVR di Dahua con Codificatore

      Come collegare questo encoder al NVR di Dahua? In primo luogo, assicurarsi che l'encoder e NVR siano sullo stesso segmento di rete. Quindi attenersi alla seguente procedura per aggiungere il dispositivo: Fare clic con il pulsante destro del mouseil ...
    • Domande frequenti: NVR di Hikvision con Codificatore

      Come collegare questo encoder al NVR di Hikvision? In primo luogo, assicurarsi che l'encoder e NVR (Network Video Recorder) siano nello stesso segmento di rete. Ciò significa che entrambi i dispositivi dovrebbero avere indirizzi IP all'interno della ...
    • Domande frequenti: Audio di Codificatore

      Ingresso audio Quali sono le opzioni di ingresso audio disponibili per gli encoder HDMI? Gli encoder HDMI in genere offrono tre opzioni di ingresso audio, include: Ingresso audio HDMI- Ciò consente all'encoder di estrarre l'audio direttamente dal ...