GStreamer

Gstreamer Informacja
Opracowany przez Freedesktop.org
Pierwsza wersja Czerwiec 1999
Ostatnia wersja 1.18.4 (15 marca 2021 r)
Kaucja gitlab.freedesktop.org/gstreamer/gstreamer.git
Stan projektu W opracowaniu
Napisane w VS
System operacyjny Wieloplatformowy
Czytaj formaty Advanced Systems Format , Audio Video Interleave , 3GPP ( d ) , Quicktime File ( en ) , FLV ( d ) , MPEG Transport Stream , Matroska , WebM , Material Exchange Format i Ogg
Języki Wielojęzyczny
Rodzaj Ramy multimedialne
Polityka dystrybucji Wolny
Licencja GNU Lesser General Public License 2.0 lub nowsza ( d )
Dokumentacja gstreamer.freedesktop.org/documentation/index.html
Stronie internetowej gstreamer.freedesktop.org

GStreamer to biblioteka oprogramowania do obróbki dźwięku i obrazu (zwana także strukturą multimedialną ) napisana w C i rozpowszechniana na wolnej licencji .

Początkowo opracowany, aby zaoferować rozwiązanie zdolne do konkurowania z QuickTime i DirectShow w systemie GNU / Linux , jego pierwsza publiczna wersja pochodzi z31 października 1999.

Praca nad synchronizacją wideo i audio jego autora pozwoliła mu zaimplementować tę część w PipeWire , menedżerze strumieni multimediów dla systemu Linux, który ujednolici interfejsy API menedżerów audio z JACK , niską latencją, profesjonalnym dźwiękiem i bardziej komputerowym. zorientowany na PulseAudio , a także strumienie wideo. W zamian te wkłady umożliwiają odciążenie zarządzania synchronizacją Gstreamera.

Od tego czasu został przeniesiony na wiele różnych systemów operacyjnych innych niż GNU / Linux , takich jak BSD , OpenSolaris , Android , OS X , iOS , Windows , OS / 400 .

Jest to projekt utrzymywany w ramach Freedesktop.org .

Dystrybucja i adopcja

GStreamer został szybko zaadoptowany przez projekt GNOME (od wersji 2.2 tego ostatniego, wydanego wLuty 2003), którego stał się filarem (na przykład Totem , Rhythmbox , Epiphany i Pitivi , czerpią z tego ogromne korzyści).

Jest również używany przez Phonon , multimedialną warstwę abstrakcji w KDE4 .

Następnie zaczęto go używać w systemach Windows i MacOS  : w ten sposób Songbird polegał na oferowaniu wersji działających na tych różnych platformach, podobnie jak Opera polegała na nim do wyświetlania elementu wideo HTML5 w systemach Windows, GNU / Linux i FreeBSD (od wersja 10.5 i, jak się wydaje, do czasu porzucenia silnika renderowania stron internetowych Presto na rzecz Blink).

WebOS również tego używa.

Aby ułatwić komercyjne wykorzystanie GStreamer, Fluendo  (en) i Collabora  (en) pracowały razem nad stworzeniem wieloplatformowego SDK ( GNU / Linux , Windows i Mac OS X dla pierwszej wersji o nazwie Amazon, która została wydana na7 czerwca 2012, a następnie Android z wydaną wersją Brahmaputry28 listopada 2012i iOS z wydaną wersją Congo12 czerwca 2013). Od tego czasu SDK jest nadal aktualizowany wraz z samym GStreamer.

Operacja techniczna

GStreamer opiera się na działaniu rurociągu przypominającym rury pod Unixem: elementy są połączone ze sobą rurami. Ale w przypadku GStreamer typ strumienia przechodzącego przez potok jest znany elementom (format wyjściowy i wejściowy nie musi być określany w każdym elemencie). Za pomocą polecenia można również powielić przepływ tee.

Przykłady

Odtwarzam plik audio

Oto potok, który pozwoli na odtwarzanie pliku audio „my_son.ogg” - składającego się z dźwięku skompresowanego za pomocą kodeka Vorbis i przedstawionego w formacie kontenera Ogg - przy użyciu serwera dźwięku PulseAudio (w tym przykładzie „filesrc” używany do deklarowania pliku źródłowego, „oggdemux” umożliwia demultipleksowanie  (w) pliku, dekodowanie „vorbisdec” i „pulsesink” w celu przesłania wyniku do PulseAudio)

gst-launch filesrc location=mon_son.ogg ! oggdemux ! vorbisdec ! pulsesink

Poprzedni przykład można uprościć, pozwalając samemu GStreamerowi wykryć naturę kontenera i kodeka za pomocą wtyczki „decodebin”:

gst-launch filesrc location=mon_son.ogg ! decodebin ! pulsesink

Można nawet pozwolić GStreamerowi wykryć sam serwer dźwięku za pomocą wtyczki „autoaudiosink”:

gst-launch filesrc location=mon_son.ogg ! decodebin ! autoaudiosink Odtwarzanie pliku audio-wideo

Oto potok, który pozwoli na odtwarzanie pliku audio-wideo WebM "my_video.webm" (w tym przykładzie wtyczce "decodebin" nadawana jest dowolna nazwa - tutaj "foo" - aby móc ponownie użyć każdego potoku - jeden do przetwarzania strumienia wideo, drugi do przetwarzania strumienia audio - który jest zawieszany za pomocą wtyczki „queue”, aby obie części były odtwarzane w tym samym czasie):

gst-launch filesrc location=ma_vidéo.webm ! decodebin name=foo \ foo. ! queue ! autovideosink \ foo. ! queue ! autoaudiosink Transkodowanie pliku audio-wideo

Oto potok, który pozwoli na transkodowanie pliku MP4 (zwykle zawierającego część wideo skompresowaną za pomocą kodeka H.264 i część audio skompresowaną za pomocą kodeka AAC , ale nie ma to znaczenia w tym przykładzie, w którym zostawiamy wtyczkę „Decodebin „ zajmij się tym wszystkim, jak widzieliśmy wcześniej) w pliku ogv kojarzącym kodeki Vorbis i Theora odpowiednio dla audio i wideo (wtyczce„ decodebin ”ponownie nadano nazwę„ foo ”, aby można ją było ponownie wykorzystać w każdym z potoki audio i wideo, a także wtyczka „oggmux”, której nazwa pochodzi od okazji „bar” i która umożliwia multipleksowanie części audio i wideo):

gst-launch filesrc location=ma_vidéo.mp4 ! decodebin name=foo \ foo. ! queue ! vorbisenc ! oggmux name=bar \ foo. ! queue ! theoraenc ! bar. \ bar. ! filesink location=ma_vidéo.ogv

Przeszczepy

GStreamer przyjmuje system wtyczek zgrupowanych razem pod nazwami „Good”, „Bad” i „Ugly” zgodnie z udzielonym im wsparciem, wsparciem, które jest definiowane na podstawie jakości samej wtyczki, jej licencji i innych. rzeczy:

  • „Dobre” wtyczki są dobrej jakości i bardzo dobrze obsługiwane,
  • „Złe” wtyczki to te, których jakość nie jest gwarantowana, ponieważ są albo rzadko używane, słabo testowane, słabo utrzymywane lub po prostu dlatego, że ich obsługa nie jest priorytetem,
  • Przeszczepy „brzydkie” są przeszczepami dobrej jakości, ale ich redystrybucja jest problematyczna.

Dla przypomnienia, to nazewnictwo w „Dobry”, „Zły” i „Brzydki” jest inspirowane angielskim tytułem słynnego filmu Sergio Leone: The Good, the Bad and the Ugly ( The Good, the Bad and the Ugly ).

Usługi edycji GStreamer (GES) i mechanizm nieliniowy (NLE)

Biblioteka GStreamer Editing Services została opracowana na podstawie GStreamer, aby zapewnić uproszczony interfejs programowania do operacji edycji multimediów, w szczególności edycji nieliniowej, w tym nieliniowej edycji wideo.

Aby być precyzyjnym, GStreamer Editing Services opiera się na nieliniowym silniku (następcy GNonLin), który sam w tym celu opiera się na GStreamer.

Non-Linear Engine jest niezależny od mediów i nie ma koncepcji edycji wideo. Non-Linear Engine składa się w zasadzie z kilku bezpiecznych wątków wtyczek do GStreamer, które umożliwiają komponowanie i miksowanie, a także dynamiczne przekształcanie ścieżki edycji projektu w potok dla GStreamer.

Od wersji 0.91, Pitivi bazuje na GES.

Historyczny

Projekt rozpoczyna się jako dowód słuszności koncepcji wCzerwiec 1999, wraz z wydaniem wersji 0.0.1. Plik11 stycznia 2001, projekt publikuje swoją pierwszą prawdziwą wersję, 0.1.0.

W Lipiec 2002została wydana wersja 0.4.0, która jest również pierwszą wersją zintegrowaną z projektem GNOME . Wraz z wydaniem wersji 0.6.02 lutego 2003, w projekcie uznano, że obsługa audio jest wreszcie w pełni funkcjonalna.

Seria 0.8 została wydana w Marzec 2004, po którym szybko pojawiła się seria 0.10, wprowadzona w grudzień 2005, co jest prawdziwym znakiem dojrzałości ram .

Wersja 1.0, wydana dnia 24 września 2012, w końcu udaje się wersja 0.10. Ta wersja została zaprojektowana tak, aby mogła współistnieć z poprzednią w tym samym systemie w celu ułatwienia przejścia.

Wersja 1.2, wydana 24 września 2013, W szczególności akceleracji sprzętowej podpory przez procesor graficzny dekodowania lub nawet kodowania wideo dla niektórych kodeków i przetwórców (przez gstreamer- vaapi biblioteki ).

Wersja 1.4, między innymi, naprawia obsługę formatu MPEG-TS .

Od wersji 1.6, wydanej 25 września 2015, Silnik nieliniowy (NLE) zastępuje GNonLin.

Oprogramowanie korzystające z GStreamer

Odniesienie

  1. „  http://lwn.net/Articles/411761/  ”
  2. (en) Tim-Philipp Müller, „  GStreamer 1.18.4 stabilne wydanie poprawki błędów  ” ,15 marca 2021 r(dostęp 15 marca 2021 )
  3. (w) „  GStreamer Past - Present - Future  ” (Wim Taymans, 26 października 2010, oficjalna strona internetowa)
  4. (w) Christian FK Schaller, „  Launching Pipewire!  » , W sprawie Christiana FK Schallera ,19 września 2017 r
  5. (in) „  Funkcje  ” (oficjalna strona)
  6. (w) "  (Re) Wprowadzenie wideo HTML5  " (Kroc Camen, 1 st stycznia 2010, OSNews)
  7. (in) "  Jak szeroko używany jest stos GNOME?  " (Philip Withnall, 8 maja 2014 r., Drboblog)
  8. (w) „  Collabora and Fluendo Launch GStreamer SDK for Multimedia App Development  ” (prasa Fluendo, 7 czerwca 2012 r., Thomson Reuters)
  9. (in) „  GStreamer.com SDK  ” (GStreamer.com)
  10. (in) Informacje o wydaniu dla GStreamer Base Plugins 0.10.0 "Mont-d'Or" (oficjalna strona)
  11. (w) Seria deweloperska GStreamer 0.9 - Hung by a Thread (oficjalna strona)
  12. (in) "  Wersja 0.91" Urocze defekty "  " , Wiki Pitivi
  13. (w) „  GStreamer: Past, present i future  ” (Jake Edge, 26 października 2010, LWN.net)
  14. (in) "  GStreamer" Slipstream "0.1.0 wydany!  " (Erik Walthinsen Wim Taymans i Richard Boulton, 11 stycznia 2001 Lista dystrybucyjna GStreamer)
  15. (in) „  GStreamer” Hottest Pick „0.6.0 wydany  ” ( The GStreamer team , 2 lutego 2003 Lista dystrybucyjna GStreamer)
  16. (w) „  Wydano GStreamer 1.0  ” (oficjalna strona internetowa, 24 września 2012)
  17. (w) RELEASE: GStreamer Core and Plugins 1.2.0 ( The GStreamer team , 24 września 2013, lista mailingowa GStreamer)
  18. (w) GNOME Bugzilla - Błąd 611032 - Wsparcie dla API akceleracji wideo (VA API) VaAPI (GNOME Bugzilla)
  19. (w) GNOME Bugzilla - Bug 675132 - tsdemux: Zaimplementuj prawidłowe wyszukiwanie z wyszukiwaniem binarnym i wykrywaniem klatek kluczowych (GNOME Bugzilla)
  20. (in) „  Informacje o wydaniu GStreamer 1.6  ” (oficjalna strona)

Załączniki

Powiązane artykuły

Linki zewnętrzne