Skip to content

Cum să folosești elementul tee pentru a distribui date în multiple căi în GStreamer

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să folosești elementul tee pentru a distribui date în multiple căi în GStreamer. We cover key concepts, practical examples, and best practices.

În acest ghid vei învăța cum să folosești elementul tee în GStreamer pentru a distribui datele către multiple căi de procesare. Tee permite duplicarea streamului media în mai multe branch-uri, fiecare putând procesa datele independent.

The Wrong Way

Conectarea directă a două elemente la aceeași sursă fără tee:

gst-launch-1.0 videotestsrc ! autovideosink videotestsrc ! filesink location=out.raw

Nu poți conecta două elemente la aceeași sursă deoarece un pad poate avea o singură conexiune.

The Right Way

Folosirea tee pentru a distribui streamul în două căi:

gst-launch-1.0 videotestsrc ! tee name=t ! queue ! videoconvert ! autovideosink t. ! queue ! videoconvert ! x264enc ! mp4mux ! filesink location=output.mp4

Output:

Setting pipeline to PAUSED ...
Setting pipeline to PLAYING ...
Streamul este duplicat: un branch către display, altul către fișier.

Pentru audio și video:

gst-launch-1.0 videotestsrc ! tee name=video ! queue ! autovideosink video. ! queue ! filesink location=video.raw audiotestsrc ! tee name=audio ! queue ! autoaudiosink audio. ! queue ! filesink location=audio.raw

Prevenție

  • Plasează întotdeauna queue după fiecare ieșire a tee-ului pentru a decupla branch-urile
  • Fără queue, blocarea unui branch blochează întreg pipeline-ul
  • Tee poate avea oricâte pad-uri de ieșire — creează câte sunt necesare
  • Pentru performanță, tee face copii ale buffer-elor doar când este necesar

Greșeli Comune

  1. Fără queue după tee — cauza principală a blocării pipeline-urilor cu branch-uri
  2. Queue înainte de tee — inutil, queue ar trebui plasat după tee
  3. Branch-uri neprocesate — un branch tee neconectat blochează pipeline-ul
  4. Copiere inutilă — tee nu copiază buffer-ele fizic decât dacă un branch modifică datele

FAQ

### Câte ieșiri poate avea un tee?

Nelimitat. Fiecare pad de ieșire este creat dinamic pe măsură ce conectezi elemente.

Tee copiază buffer-ele fizic?

Nu imediat. Tee folosește copierea la scriere (copy-on-write). Buffer-ele sunt copiate fizic doar când un branch le modifică.

Cum se numesc pad-urile unui tee?

Pad-urile de ieșire se numesc src_0, src_1, src_2, etc. Le poți accesa cu t. sau tee_name. în gst-launch.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează perfect cu GStreamer pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro