Personal tools

Difference between revisions of "GStreamer Tips & Tricks"

From linux360

Jump to: navigation, search
m (GStreamer Tips & Tricks)
(GStreamer Tips & Tricks)
Line 3: Line 3:
 
[http://gstreamer.freedesktop.org/ GStreamer] este o librărie multimedia open-source construită folosind celebra [http://www.gtk.org/ GLib] şi are un API care se ghidează după multe dintre principiile librăriei GTK+.
 
[http://gstreamer.freedesktop.org/ GStreamer] este o librărie multimedia open-source construită folosind celebra [http://www.gtk.org/ GLib] şi are un API care se ghidează după multe dintre principiile librăriei GTK+.
 
Nu o să vorbesc despre cum să programaţi cu GStreamer, ci voi prezenta aici modalităţi inedite de a face lucruri de zi cu zi cum ar fi convertirea fişierelor audio dintr-un format în altul, redarea lor, redarea fişierelor video, redarea fişierelor video prin reţea, etc.
 
Nu o să vorbesc despre cum să programaţi cu GStreamer, ci voi prezenta aici modalităţi inedite de a face lucruri de zi cu zi cum ar fi convertirea fişierelor audio dintr-un format în altul, redarea lor, redarea fişierelor video, redarea fişierelor video prin reţea, etc.
 +
 +
GStreamer defineşte următoarele:
 +
 +
<pre>
 +
- element - obiectul de bază
 +
- bin - container pentru obiecte
 +
- pipeline - un bin specializat
 +
- pad - poate fi privit ca un port (sursa/destinatie in functie de cum sunt legate)
 +
</pre>
 +
 +
În principiu mai multe elemente sunt plasate pe un pipe şi apoi pad-urile acestora sunt legate astfel încât, când un stream va traversa acel pipe, acesta va fi modificat în funcţie de natura elementelor pe care le traverseaza. De exemplu un element poate să crească volumul, un altul poate să codeze un stream într-un anumit format, să citească dintr-un fişier, să trimită stream-ul la placa de sunet, etc.
 +
 +
Pentru a vedea toate elementele instalate in sistem putem folos utilitarul gst-inspect.
 +
 +
Însă utilitarul pe care-l vom folosi este gst-launch. Acesta ştie să construiască un pipe şi să o pună în starea de play. Este un tool făcut în principiu pentru depanarea elementelor în momentul în care scrii aplicaţii GStreamer dar se poate dovedi foarte util în foarte multe cazuri.
 +
 +
<code>gst-launch filesrc location=fisier.mp3 ! decodebin ! autoaudiosink</code>
 +
 +
Am folosit utilitarul gst-launch pentru a construi un pipe cu trei elemente. Primul element deschide un fişier si trimite totul mai departe la decodebin. Decodebin este un element foarte important. Acesta ştie să construiască în mod dinamic un pipe care să ştie să citească ceea ce primeşte de la sursă (de la filesrc) şi ştie să trimită la destinaţie (autoaudiosink) într-un format acceptat de destinaţie. În mod normal nu ne interesează ce se foloseşte dar unde ar mai fi distracţia dacă nu încercăm să construim singuri pipe-ul folosind mai multe codec-uri care fac acelaşi lucru.
 +
 +
În final autoaudiosink reprezintă adaptorul de sunet (driverul în principiu). GStreamer ştie să trimită mai departe la driver-ul implicit din sistem care poate fi alsa, oss sau un server de sunet cum ar fi esd.
 +
 +
Este bine de amintit aici că există elemente speciale numite elemente sursă (source elements) şi elemente destinaţie (sink elements) care nu pot fi puse decât ca primele sau ultimele elemente într-un pipe. Am văzut deja câte un element din fiecare categorie: filesrc (elemente sursă) şi audiosink (elemente destinaţie). De obicei acestea poartă sufix-ul sink sau respectiv src.
 +
 +
Ca să vedeţi ce astfel de elemente ştie să folosească GStreamer puteţi folosi gst-inspect.
 +
<code>gst-inspect | grep sink</code>
 +
 +
Orice element poate avea proprietăţi şi semnale. Cu semnalele nu vom avea tangenţă prea mult. Am văzut deja o proprietate a elementului filesrc, numită location. Acestea pot fi setate folosind grupuri de forma (nume proprietate)=(valoare) despărţite între ele prin virgule.
 +
 +
Pentru a afla detalii despre un element şi proprietăţile acestuia putem folosi gst-inspect.
 +
<code>gst-inspect <nume-element></code>

Revision as of 05:25, 8 March 2007

GStreamer Tips & Tricks

GStreamer este o librărie multimedia open-source construită folosind celebra GLib şi are un API care se ghidează după multe dintre principiile librăriei GTK+. Nu o să vorbesc despre cum să programaţi cu GStreamer, ci voi prezenta aici modalităţi inedite de a face lucruri de zi cu zi cum ar fi convertirea fişierelor audio dintr-un format în altul, redarea lor, redarea fişierelor video, redarea fişierelor video prin reţea, etc.

GStreamer defineşte următoarele:

- element - obiectul de bază
- bin - container pentru obiecte
- pipeline - un bin specializat
- pad - poate fi privit ca un port (sursa/destinatie in functie de cum sunt legate)

În principiu mai multe elemente sunt plasate pe un pipe şi apoi pad-urile acestora sunt legate astfel încât, când un stream va traversa acel pipe, acesta va fi modificat în funcţie de natura elementelor pe care le traverseaza. De exemplu un element poate să crească volumul, un altul poate să codeze un stream într-un anumit format, să citească dintr-un fişier, să trimită stream-ul la placa de sunet, etc.

Pentru a vedea toate elementele instalate in sistem putem folos utilitarul gst-inspect.

Însă utilitarul pe care-l vom folosi este gst-launch. Acesta ştie să construiască un pipe şi să o pună în starea de play. Este un tool făcut în principiu pentru depanarea elementelor în momentul în care scrii aplicaţii GStreamer dar se poate dovedi foarte util în foarte multe cazuri.

gst-launch filesrc location=fisier.mp3 ! decodebin ! autoaudiosink

Am folosit utilitarul gst-launch pentru a construi un pipe cu trei elemente. Primul element deschide un fişier si trimite totul mai departe la decodebin. Decodebin este un element foarte important. Acesta ştie să construiască în mod dinamic un pipe care să ştie să citească ceea ce primeşte de la sursă (de la filesrc) şi ştie să trimită la destinaţie (autoaudiosink) într-un format acceptat de destinaţie. În mod normal nu ne interesează ce se foloseşte dar unde ar mai fi distracţia dacă nu încercăm să construim singuri pipe-ul folosind mai multe codec-uri care fac acelaşi lucru.

În final autoaudiosink reprezintă adaptorul de sunet (driverul în principiu). GStreamer ştie să trimită mai departe la driver-ul implicit din sistem care poate fi alsa, oss sau un server de sunet cum ar fi esd.

Este bine de amintit aici că există elemente speciale numite elemente sursă (source elements) şi elemente destinaţie (sink elements) care nu pot fi puse decât ca primele sau ultimele elemente într-un pipe. Am văzut deja câte un element din fiecare categorie: filesrc (elemente sursă) şi audiosink (elemente destinaţie). De obicei acestea poartă sufix-ul sink sau respectiv src.

Ca să vedeţi ce astfel de elemente ştie să folosească GStreamer puteţi folosi gst-inspect. gst-inspect | grep sink

Orice element poate avea proprietăţi şi semnale. Cu semnalele nu vom avea tangenţă prea mult. Am văzut deja o proprietate a elementului filesrc, numită location. Acestea pot fi setate folosind grupuri de forma (nume proprietate)=(valoare) despărţite între ele prin virgule.

Pentru a afla detalii despre un element şi proprietăţile acestuia putem folosi gst-inspect. gst-inspect <nume-element>