multimedia integrat de prelucrare folosind gstreamer

Soluția la această problemă este de a utiliza GStreamer. Prin combinarea o varietate de instrumente și biblioteci, precum și punerea în aplicare a conceptului de conducte media generalizată (multimediakonveyer), GStreamer vă permite să lucrați cu diferite tipuri de media, folosind o abordare comună. Acest lucru vă permite să se concentreze direct asupra mass-media, în loc să arunce toate forțele pentru a verifica și de a asigura compatibilitatea formatelor de fișiere.

GStreamer poate rezolva multe probleme, cum ar fi transcodarea fișiere de diferite formate audio într-un format comun. Deoarece toate formatele sunt tratate în același mod, este necesar doar un instrument pentru acest lucru. Acest lucru economisește timp și face soluția cea mai integrată și sprijinită. În plus, după învățare principiile de bază ale GStreamer pot găsi noi oportunități de aplicare a acesteia. Pentru audio de streaming de rețea trebuie să aibă grijă de doar despre conectarea la rețea, deoarece API-interfețele vor rămâne neschimbate pentru redare audio și sarcinile de bază.

principii de bază

Deoarece funcționalitatea GStreamer este deasupra biblioteca normală, este important să înțelegem exact ce se poate face acest lucru este dincolo de sfera de aplicare a capacităților sale, și modul în care sunt puse în aplicare aceste caracteristici.

GStreamer - o bibliotecă de prelucrare a datelor multimedia. Acest lucru înseamnă că este necesar să se opereze cu o conversie model abstract (transformare), constând dintr-o intrare de date / ieșire și diferite etape intermediare. Această soluție permite să se dezvolte o realizare specifică transformarea cu tipul de date de intrare și formatul de ieșire dorit. Exemple de astfel de transformări:

Pentru a realiza un astfel de soi rezultate GStreamer operează pe o conductă notiune abstracta (conducte). Pipeline - un grafic direcționat în care fluxul de date media într-o anumită direcție - de la intrare la ieșire. Conducta este format din element'ov (elemente), iar acest lucru este un alt concept cheie. Element - este un obiect care este plasat în conductă, și vă permite să efectuați o transformare specifică a presei. Este posibil de a lega elementele împreună, ele sunt aranjate împreună pentru proces care convertește datele de intrare în formatul de ieșire dorit. Pentru claritate, se crede că fluxul de date prin conducta trece pe stânga (în aval) spre dreapta (efluent). Aceeași abordare este utilizată pentru descrierea transportorului prin instrument gst-lansare. Așa cum va fi prezentat mai jos.

GStreamer în sine nu conține elemente, principalul său obiectiv - crearea transportorului din elementele prevăzute. Probleme specifice sunt rezolvate cu ajutorul plug-in-uri. Fiecare mufă circulat într-un fișier compilat (.so pentru UNIX® sau .dll pentru Microsoft® Windows®), conține unul sau mai multe elemente. Când porniți GStreamer interoghează toate plug-in-uri instalate pentru a aduna o listă de elemente disponibile. De obicei, plugin-ul nu se efectuează procesarea multimedia și interacționează cu alte biblioteci pentru aceste sarcini: de exemplu, decodor MPEG2 este o bibliotecă existentă pentru lucrul cu MPEG-format. Cu toate acestea, această delegare se face în mod transparent la cererea introductivă, și interacționează numai cu elementele cu o interfață comună.

Unele plug-in-uri pentru a extinde pachetele de bază și constituie o singură bibliotecă compusă din elemente diferite. Alte plugin-uri de bază sunt distribuite în pachetul gst-plugins-base. Acestea sunt disponibile la cele mai multe opțiuni de instalare GStreamer. Există, de asemenea, pachete de GST-plugins-bun, -Bad și -ugly în cazul în care plugin-uri diferite, selectate în funcție de nivelul de sprijin și propagarea principiului. În cele din urmă, există plugin-uri distribuite de către părți terțe și destinate utilizării limitate doar o singură aplicație.

Exemplu de utilizare GStreamer

Acum, după ce se explică conceptele de bază ale gstreamer, a fost rândul să examineze punerea în aplicare a acestora. Pentru a face acest lucru, trebuie să introduceți un număr de noi concepte.

Confuzia în numele - chiuveta (ieșire Engl.) - este o intrare, și sursa (sursa Eng.) - randament?!

De fapt, nu există nici o confuzie. După pad chiuveta (punct de intrare), în articolul de date primite și o sursă de tampon (punctul randament) al celuilalt Elementa ei încep. Prin urmare, elementul de doar puncte de ieșire numit sursă (sursa), iar elementul cu doar punctele de intrare numite chiuveta (chiuveta). Atât de simplu, în ciuda aberație logică aparentă.

După cum sa menționat, conceptul principal este un element de procesare, prezentat de clasă GstElement. GStreamer este scris în C, dar folosește biblioteca GObject de GTK + pentru caracteristici suplimentare de OOP (a se vedea. Resurse). Acest GstElement are două tampoane (punctul de andocare) cu alte elemente GStreamer. Există două tipuri de tampoane:

  • chiuveta pad. punctul de intrare pentru mass-media.
  • sursa pad. date punct de ieșire element de prelucrat.

I pad are parametri numite capace (duze), determină formatul datelor pot trece prin pad. De exemplu, codul 1 este listarea la vorbisdec elementului. care decodează formatul liber Vorbis. $ Un semn dolar la începutul liniei indică faptul că aceasta este o comandă comună UNIX shell.

Listarea 1. Detaliu element de descriere vorbisdec

După cum se poate vedea, într-un fragment a anunțat două șabloane pad: una pentru date de ieșire (src), o altă intrare (chiuveta). Pad pentru ieșire este întotdeauna disponibil (întotdeauna) și acceptă următoarele modelul reprodus date: frecvența audio nemanipulabilă 8-50 kHz de la șase-canal pentru un singur canal, endian și probele pe 32 de biți. Alte tipuri posibile de acces: uneori (uneori) și întotdeauna (cerere). șablon de intrare pad oferă, de asemenea, acces instant si pot primi audio în format Vorbis.

Aceste modele sunt esențiale pentru funcționarea corectă a transportorului. La încercarea de a lega două elemente împreună pentru a forma conductei, GStreamer verifică dacă pad'ov elemente șabloane compatibile se pot conecta. Acest proces se numește negociere (negociere). Pe parcursul negocierilor, elementele sunt încercarea de a alege cel mai bun format de cele pe care le pot ambele sprijin. În cazul în care acest lucru nu reușește, elementul de legătură nu este realizată. În cazul în care alege un format comun, atunci acest format nu este unul dintre șabloanele disponibile și capace fixe - a aprobat în mod neechivoc formatul de schimb de date. Acum, datele pot fi transferate de la un element la altul.

Informația prezentată este suficientă pentru a începe cu GStreamer. Acest lucru va necesita un instrument versatil pentru GStreamer - lansare-GST.

Lucrul cu lansare-gst

Alte utilitati GStreamer

În plus față de lansarea GStreamer-GST oferă alte instrumente foarte utile, cum ar fi GST-inspecta și GST-typefind.

Atunci când nu știu cum să folosească orice element, utilizați GST-inspecta. În numele Elementa solicitate sau plug-gst-inspectează va afișa toate informațiile pe care GStreamer poate oferi pentru el.

Utilizarea GST-typefind. GStreamer-analog al fișierului (1) -utility UNIX, puteți găsi tipul de fișier cu mai multă precizie, ce tip de fișier în sine GStreamer.

gst-lansare - este un program universal, cu multe caracteristici. instrument GStreamer pentru lansare-gst - este același ca shell shell pentru UNIX. Cu el puteți crea conducte complexe folosind o sintaxă specială de lansare-gst. așa cum se arată în Listarea 2.

Listarea 2. Folosind utilitarul gst-lansare

Codul din Listarea 2 este un player audio simplu de utilizat pentru a reda concept.mp3 fișierul. Tabelul 1 prezintă o analiză detaliată a codului.

Tabelul 1. Analiza codului listare pentru 2 fragmente

Element creează o clasă filesink (receptor fișiere) și setați proprietatea locație (locație) pe concept.mp3 dosar. Acest articol poate citi fișierele specificate în locația respectivă. și să lanseze programul de citire fișier concept.mp3 în directorul curent.

Punctul de exclamare este asociat cu (link la). Similar cu | placare coajă, a fost selectat, din cauza asemănării, și deci poate fi utilizat fără tratament în coajă, dacă este înconjurat de spațiu alb.

Acesta este cel mai important element din compoziția gstreamer - autoplugger (linker). Utilizarea tipurilor de date, setați la intrare și de ieșire, acesta caută toate elementele disponibile pentru a organiza sub-conductei, care va furniza rezultatul dorit. Intrare / formate de ieșire ale tuturor elementelor de GStreamer ar trebui să fie specificate în mod clar, astfel încât punctul de exclamare (.) Furnizează informații despre implicit formatul de elemente care sunt legate de ele. Deoarece filesrc are un tip capac ORICE. prima sarcină este de a determina formatul fluxului decodebin real (typefind). Pentru a face acest lucru, se citește parametrii care determină tipul de date. Toate aceste acțiuni sunt efectuate în mod transparent pentru utilizator.

Acest element este utilizat pentru ieșire audio la Linux®. Acesta interacționează cu o placă de sunet și îl afișează pe materialele audio pregătite. El controlează, de asemenea, capacitatea de a transportorului precum și o placă de sunet poate primi date numai la o anumită viteză.

După apăsarea tastei Enter afișează câteva mesaje de informare până când conducta ajunge la starea JOC (joc). În acest moment, datele încep să se deplaseze prin conducta, și sunetul începe să redea un sunet prin difuzoare.

După cum putem vedea, GStreamer permite simplificarea considerabilă a mass-media de procesare. Nu există nici măcar necesar să se cunoască formatul exact al materialelor care urmează să fie convertite. Cu toate acestea, deoarece jacheta shell nu este în măsură să înlocuiască programele C și gst-lansare nu poate înlocui o aplicație cu drepturi depline GStreamer. De exemplu, gst-lansare nu poate controla funcționarea transportorului după lansare, care nu permite să sări peste porțiunile inutile în fluxul de date. În ciuda acestor limitări,-lansare este gst instrument incredibil de util pentru a rezolva rapid sarcini simple, cum ar fi fișierele de transcodare de la un format la altul.

familiaritate a continuat cu GStreamer

Ghidul complet pentru a-lansare gst pot fi găsite în secțiunea relevantă a omului. Sintaxa vă permite să creați mai multe benzi transportoare complexe și interesante, inclusiv cele care se pot gândi pentru ei înșiși. Puteți crea, de asemenea, propria sa versiune gst_launch. Mai multe detalii despre această oportunitate înțelege secțiunea de documentare a funcției gst_parse_launch ().

În plus, vă puteți înscrie pe lista de discuții sau IRC-canal (#[email protected]). Comunitatea dezvoltator GStreamer poate găsi persoana care te va ajuta sau care te poate ajuta.

  • procesare multimedia multifuncțional cu GStreamer (EN). articolul original
  • Manual de GStreamer Application Development. Informații suplimentare despre GStreamer și capacitățile sale în dezvoltarea de aplicații.
  • Ghidul GStreamer Plugin Writer. ghid pentru a crea propriile plug-in-uri.
  • GStreamer Reference Manual 0.10 Core. Ghid de referință GStreamer.
  • Manual de GObject de referință. acest ghid va lasa sa stii mai multe despre biblioteca orientate-obiect folosit de GStreamer.
  • AIX® și UNIX. Zona AIX și UNIX developerWorks oferă o mulțime de diferite informații cu privire la toate aspectele legate de AIX și tehnici de lucru cu administrarea sistemului UNIX.
  • Seminarii și formare developerWorks România
  • Podcast-uri. prezentari record de experți IBM.

Obțineți produse și tehnologii

  • GStreamer Pagina de start. acest site conține cele mai recente actualizări și distribuțiile GStreamer.
  • Istanbul. aplicatie GStreamer-based pentru sesiunile de înregistrare pe un computer desktop.
  • software-ul de încercare IBM. versiuni de încercare de dezvoltatori de software, care pot fi descărcate de la developerWorks.