Skip to content

Cum să scrii în fișiere cu elementul filesink în GStreamer

DodaTech Updated 2025-01-15 1 min read

In this tutorial, you'll learn about Cum să scrii în fișiere cu elementul filesink în GStreamer. We cover key concepts, practical examples, and best practices.

În acest ghid vei învăța cum să scrii date media în fișiere folosind elementul filesink în GStreamer. Filesink este elementul de destinație care salvează streamul media într-un fișier pe disc, fiind esențial pentru captură și înregistrare.

The Wrong Way

Salvarea directă a datelor raw fără codare:

gst-launch-1.0 videotestsrc ! filesink location=output.raw

Fișierul output.raw conține date video necomprimate, ocupând spațiu uriaș pe disc.

The Right Way

Codare și salvare corectă cu filesink:

gst-launch-1.0 videotestsrc num-buffers=100 ! videoconvert ! x264enc ! mp4mux ! filesink location=output.mp4

Output:

Setting pipeline to PAUSED ...
Setting pipeline to PLAYING ...
Got EOS from element "pipeline0".
Fișierul output.mp4 a fost salvat cu succes.

Salvare audio:

gst-launch-1.0 audiotestsrc num-buffers=500 ! audioconvert ! wavenc ! filesink location=test.wav

Prevenție

  • Specifică întotdeauna location cu calea completă sau relativă către fișierul de ieșire
  • Adaugă elemente de codare și muxare înainte de filesink pentru a produce fișiere standard
  • Folosești num-buffers pe sursă pentru a limita durata înregistrării
  • Verifică permisiunile de scriere în directorul destinație

Greșeli Comune

  1. Fără muxer — fără mp4mux, webmmux, etc., fișierul poate fi nevalid
  2. Fără extensie de fișierlocation=output fără extensie poate crea confuzii
  3. Permisiuni insuficiente — GStreamer poate eșua la scriere fără permisiuni
  4. Fără EOS — fără num-buffers sau sinnal EOS, fișierul poate rămâne neterminat
  5. Calea inexistentă — directorul destinație trebuie să existe

FAQ

### Cum suprascriu un fișier existent?

Filesink suprascrie automat fișierul existent. Pentru a adăuga la sfârșit, nu este suportat direct — trebuie să gestionezi manual.

Pot scrie mai multe fișiere simultan?

Da, folosește tee pentru a duplica streamul și conectează multiple filesink-uri.

Ce se întâmplă dacă discul este plin?

Filesink emite o eroare GST_FLOW_ERROR când nu mai poate scrie. Pipeline-ul se oprește cu o eroare.

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