GStreamer - GStreamer

GStreamer
Gstreamer-logo.svg
Gst-launch ile basit bir ardışık düzen
Basit bir ardışık düzen gst-launch
Geliştirici (ler)GStreamer Ekibi
İlk sürüm11 Ocak 2001; 19 yıl önce (2001-01-11)[1]
Kararlı sürüm1.18.1[2] (26 Ekim 2020; 28 gün önce (2020-10-26)) [±]
Önizleme sürümü1.17.90[3] (21 Ağustos 2020; 3 ay önce (2020-08-21)) [±]
Depo Bunu Vikiveri'de düzenleyin
YazılmışC[4]
İşletim sistemiBSD'ler, Linux, OpenSolaris, Android, Mac os işletim sistemi, iOS, pencereler, OS / 400
TürMultimedya çerçevesi
LisansGNU LGPL[5]
İnternet sitesigstreamer.freedesktop.org

GStreamer bir boru hattı tabanlı multimedya çerçevesi karmaşık iş akışlarını tamamlamak için çok çeşitli medya işleme sistemlerini birbirine bağlayan. Örneğin, GStreamer dosyaları bir formatta okuyan, işleyen ve başka bir formatta dışa aktaran bir sistem oluşturmak için kullanılabilir. Biçimler ve süreçler tak ve çalıştır tarzında değiştirilebilir.

GStreamer, çok çeşitli ortam işleme bileşenlerini destekler: ses oynatma, ses ve video oynatma, kayıt, yayın Akışı ve düzenleme. Boru hattı tasarımı, birçok türde oluşturmak için bir temel görevi görür. multimedya Gibi uygulamalar video editörleri, kod dönüştürücüler, akışlı medya yayıncıları ve medya oynatıcılar.

Çeşitli işletim sistemlerinde çalışmak üzere tasarlanmıştır, ör. Linux çekirdeği tabanlı işletim sistemleri, BSD'ler, OpenSolaris, Android, Mac os işletim sistemi, iOS, pencereler, OS / 400.

GStreamer ücretsiz ve açık kaynaklı yazılım şartlarına tabi GNU Daha Az Genel Kamu Lisansı (LGPL)[5] ve şurada barındırılıyor: freedesktop.org.

Dağıtım ve benimseme

GNOME masaüstü ortamı GStreamer'ın yoğun bir kullanıcısı olan GNOME sürüm 2.2'den beri GStreamer'ı dahil etmiştir ve GNOME'u ve GTK kullanmak için uygulamalar. Diğer projeler de kullanıyor veya destekliyor, örneğin Fonon medya çerçevesi ve Songbird Medya oynatıcı.

GStreamer ayrıca aşağıdaki gibi gömülü cihazlarda da çalışır Jolla Telefon, Palm Pre,[6] Tizen ve Nokia 770, N800, N810, N900 ve N9 Çalıştıran İnternet Tabletleri Maemo işletim sistemi.

GStreamer projesi, kaynak kod sürümlerine ek olarak Android, iOS, OSX ve Windows için ikili yapılar sağlar.[7]

LIGO Laboratuvar, yerçekimi dalgası verilerini simüle etmek ve analiz etmek için GStreamer'ı kullanır. GStreamer arayüzüne GstLAL denir.[8]

Yazılım mimarisi

Genel Bakış
Üç farklı eklenti türüne sahip GStreamer çekirdeği.
GStreamer bir Boru hattı.

GStreamer, C programlama dili ile tip sistemi dayalı GObject ve GLib 2.0 nesne modeli.

Dil bağlamaları

Bir programlama dilinde yazılmış bir kütüphane, aşağıdaki durumlarda başka bir dilde kullanılabilir: bağlamalar yazılır; GStreamer, aşağıdaki gibi çeşitli diller için bir dizi bağlamaya sahiptir: Python, Pas, Vala, C ++, Perl, GNU Guile, C # ve Yakut.

Genel Bakış

GStreamer, medyayı bir dizi işleme bağlayarak işler elementler içine boru hattı. Her öğe bir Eklenti. Öğeler şu şekilde gruplanabilir: çöp kutuları, daha fazla toplanarak hiyerarşik bir grafik oluşturabilir. Bu bir örnektir filtre grafiği.

Öğeler aracılığıyla iletişim pedler. Bir kaynak pedi bir elemanda bir lavabo pedi diğerinde. Ardışık düzen içinde olduğunda oynama durum, veri tamponlar kaynak pedinden lavabo pedine akış. Pedler, kullanılarak gönderilecek veri türünü görüşür yetenekler.

Sağdaki diyagram, bir MP3 GStreamer kullanarak dosya. Dosya kaynağı, bir bilgisayarın sabit sürücüsünden bir MP3 dosyasını okur ve bunu MP3 kod çözücüye gönderir. Kod çözücü, dosya verilerinin kodunu çözer ve bunları PCM daha sonra geçen örnekler ALSA ses sürücüsü. ALSA ses sürücüsü, PCM ses örneklerini bilgisayarın hoparlörlerine gönderir.

Eklentiler

GStreamer bir Eklenti GStreamer'ın işlevselliğinin çoğunu şu şekilde uygulayan mimari paylaşılan kitaplıklar.[9] GStreamer'ın temel işlevi, eklentilerin kaydedilmesi ve yüklenmesi için ve tüm sınıfların temellerini şu şekilde sağlamak için işlevler içerir: temel sınıflar. Eklenti kitaplıkları, geniş bir yelpazeyi desteklemek için dinamik olarak yüklenir. codec bileşenleri, kapsayıcı formatları, giriş / çıkış sürücüleri ve efektler.

Eklentiler, ilk ihtiyaç duyulduğunda yarı otomatik olarak kurulabilir. Bu amaçla dağıtımlar, özellik açıklamalarını paket adlarına çözen bir arka uç kaydedebilir.

0.9 sürümünden bu yana, eklentiler üç set halinde gruplandırılmıştır (isimlerini filmin İyi, kötü ve çirkin ).[10]

Eklenti seti adıAçıklama
İyiBu paket, LGPL lisansı altında bir dizi yüksek kaliteli eklenti olan "iyi" setten GStreamer eklentilerini içerir.[11]
KötüGStreamer Hatalı Eklentiler, diğerleriyle karşılaştırıldığında eşit olmayan bir dizi eklenti içerir. İyi kaliteli eklentilere yakından yaklaşabilirler, ancak bir şeyleri eksik: belki de iyi kod incelemesi, bazı belgeler, bir dizi test, gerçek bir canlı bakımcı veya bazı gerçek geniş kullanım.[12]
ÇirkinBu paket, dağıtım sorunları oluşturabilecek bir dizi kaliteli eklenti olan "çirkin" kümeden eklentiler içerir.[13]

Bireysel dağıtımlar bu eklentileri daha da alt sınıflandırabilir: örneğin Ubuntu "kötü" ve "çirkin" kümeleri "Evren" ya da "Çoklu Evren" bileşenleri.

Ayrıca ayrı bir GStreamer FFmpeg eklentisi, hangisi bir FFmpeg birçok ek medya formatını destekleyen eklenti tabanlı eklenti. İlk olarak 26 Şubat 2004 tarihinde 0.7.1 sürüm numarasıyla piyasaya sürüldü.[14][15] Şeffaf olarak kullanabilir Libav ve bu nedenle genellikle GStreamer Libav eklentisi son Linux dağıtımlarında.

Video hızlandırma

Texas Instruments tarafından sağlanan özel eklentiler aracılığıyla GStreamer, örn. Texas Instruments DaVinci.

Çeşitli var SIP blokları belirli video codec bileşenlerinin kodunu çözmek için hesaplamalar yapabilen PureVideo, UVD, QuickSync Videosu, TI Ducati ve dahası. Bu tür ihtiyaçlar tarafından desteklenmelidir aygıt sürücüsü, bu da bir veya birden fazla arayüzler, sevmek VDPAU, VAAPI, Dağıtılmış Codec Motoru veya DXVA bu donanıma erişmek ve hesaplamayı ona aktarmak için MPlayer gibi son kullanıcı yazılımlarına.

Medya formatları

Daha önce bahsedilen Good, Bad ve Ugly GStreamer eklentileri, her türden işlem öğelerinin / filtrelerinin yanı sıra çok çeşitli dosya formatları, protokoller ve multimedya kodeklerini destekler. Bunlara ek olarak, yüzden fazla sıkıştırma formatını destekler (dahil MPEG-1, MPEG-2, MPEG-4, H.261, H.263, H.264, RealVideo, MP3, WMV, vb.[21][22]) GStreamer FFmpeg / libav eklentisi aracılığıyla şeffaf bir şekilde sağlanır. Bakın Libav ve FFmpeg Bu eklentiler tarafından sağlanan ortam biçimlerinin tam listesi için sayfalar.

Tarih ve gelişme

Erken günler

Erik Walthinsen, 1999 yılında GStreamer projesini kurdu. Temel tasarım fikirlerinin çoğu, Oregon Lisansüstü Enstitüsü.[kaynak belirtilmeli ] Wim Taymans kısa süre sonra projeye katıldı ve sistemin birçok yönü üzerinde büyük ölçüde genişledi. O zamandan beri birçok başka yazılım geliştiricisi katkıda bulundu.

İlk büyük sürüm, 11 Ocak 2001'de açıklanan 0.1.0 idi.[1] Kısa bir süre sonra GStreamer, ilk ticari destekçisini aldı. gömülü Linux RidgeRun adlı şirket. Ocak 2001'in sonlarına doğru, Erik Walthinsen'i GStreamer'ı küçültmek için yöntemler geliştirmek üzere işe aldılar (cep telefonu -sınıf) cihazlar. Başka bir RidgeRun çalışanı Brock A. Frazier, GStreamer logosunu tasarladı. RidgeRun daha sonra maddi olarak mücadele etti ve Erik Walthinsen de dahil olmak üzere personelini işten çıkarmak zorunda kaldı. GStreamer ilerlemesi çoğunlukla etkilenmedi.

Proje, Temmuz 2001'de 0.2.0, Eylül 2002'de 0.4.0 ve Mart 2004'te 0.8.0 olmak üzere bir dizi büyük sürüm yayınladı. Bu dönemde proje sürüm stratejisini de değiştirdi ve ilk sürümler basitçe yeni sürümler, daha sonra ortadaki sayı sürüm serisini belirtmeye başladı. Bu, projenin kalması gereken 0.6.x ve 0.8.x sürümlerinden oluşan bir dizi yayınladığı anlamına geliyordu. ikili uyumlu bu sürüm serileri içinde. Erik Walthinsen, diğer girişimlere odaklanarak bu süre zarfında aşağı yukarı GStreamer gelişimini geride bıraktı.

0.8.x sürüm serisi sırasında proje zorluklarla karşılaştı. 0.8.x serisi, çoğunlukla kararlılık sorunları ve aşağıdaki gibi rakip projelere kıyasla ciddi özellik eksikliği nedeniyle Linux topluluğunda pek popüler değildi. Xine, MPlayer, ve VLC. Erik Walthinsen'in ayrılmasından bu yana proje lideri olan Wim Taymans katılımı büyük ölçüde durdurduğu için proje liderlikten yoksun kaldı.

0.10 serisi

2004 yılında yeni bir şirket kuruldu, Fluendo, bir akış sunucusu yazmak için GStreamer'ı kullanmak isteyen Flumotion ve ayrıca GStreamer için multimedya çözümleri sağlar. Bu süre zarfında Fluendo, Wim Taymans dahil çekirdek geliştiricilerin çoğunu işe aldı ve gibi şirketlerin desteğini aldı. Nokia ve Intel GStreamer'ı profesyonel bir düzeye getirmek ve topluluğun benimsenmesini sağlamak.

Wim Taymans yeniden dümendeyken, GStreamer'ın çekirdeği yeniden tasarlandı ve Aralık 2005'te ilk sürümü (0.10.0) olan mevcut 0.10.x serisi haline geldi.[23] Sürdürdü API ve ABI beri uyumluluk.

Yeni bir kararlı çekirdek ile GStreamer, 2006 yılında popülerlik kazandı ve aşağıdakiler dahil medya oynatıcıları tarafından kullanılmaktadır: Totem, Ritim kutusu ve Banshee daha pek çok şey takip edecek. Aynı zamanda gibi şirketler tarafından da benimsenmiştir. Nokia, Motorola, Texas Instruments, Freescale, Tandberg, ve Intel.

2007'de GStreamer geliştiricilerinin çoğu Fluendo'dan ayrıldı ve aralarında GStreamer'ın kurucu ortağı olan Wim Taymans da var. Collabora Multimedya diğer GStreamer gazileri ile birlikte, diğerleri katıldı Sun Microsystems, Dikdörtgen Endüstriler, ve Songbird.

Haziran 2012 ile Ağustos 2014 arasında, GStreamer 0.10 da dağıtıldı İşbirliği ve Fluendo çoklu platform olarak SDK,[24] üçüncü şahıs gstreamer.com web sitesi (yerine gstreamer.freedesktop.org yukarı akım topluluk projesi için). Amaç, uygulama geliştiricilerine Windows'ta işlevsel olarak aynı olacak bir SDK sağlamaktı. Mac OS X, iOS, Android ve desteklenen tüm Linux platformları. SDK girişimi, tüm platformu tek başına inşa etmeye gerek kalmadan GStreamer ile multimedya uygulamaları geliştirmek için standartlaştırılmış bir giriş noktası sağladığı için GStreamer projesinin ticari olarak benimsenmesini kolaylaştırmayı amaçladı. SDK kullanıcıları da yararlandı dokümantasyon, söz konusu SDK'ya özel eğitimler ve talimatlar.

1.x serisi

GStreamer 1.0, 24 Eylül 2012'de piyasaya sürüldü.[25] 1.x serisi, geçişi kolaylaştırmak için GStreamer 0.10'a paralel olarak kurulabilir ve 0.10 serisine göre birçok mimari avantaj sağlar.[26] Genel olarak, GStreamer 1.0 aşağıdakiler için önemli iyileştirmeler getirdi:

  • Yerleşik işlemciler desteği, daha düşük güç tüketimi, özel donanım birimlerine yük boşaltma (örn. DSP'ler )
  • Donanım hızlandırmalı video kod çözme / kodlama kullanarak GPU'lar
  • Daha iyi performans ve daha düşük güç tüketimi için sıfır kopyalı bellek yönetimi (CPU ve GPU arasında gereksiz gidiş-dönüşlerden kaçınma)
  • Dinamik ardışık düzenler
  • API ve kod temizleme

Teknik iyileştirmelerin ötesinde, 1.x serisi ayrıca yeni bir sürüm oluşturma şeması ile tanımlanmıştır. GStreamer yol haritasının açıkladığı gibi,[27] tüm 1.x.y sürümleri -1.0 API sürüm son eki taşır ve kararlı bir API / ABI'ye sahiptir. API / ABI yalnızca yeni bir ana sürüm serisi (yani: 2.x) tarafından kırılabilir; ancak, şu anda bir 2.0 sürüm serisi için plan bulunmamaktadır. O zamana kadar, yeni sürüm numaralandırma şeması, her bir sürümün amaçlanan kullanımını tahmin etmek için kullanılabilir. Yol haritası bazı örnekler verir:

  • 1.0.0, 1.0.1, 1.0.2, 1.0.3 ... kararlı sürüm ve takip eden hata düzeltme sürümleri
  • 1.1.0, 1.1.1, 1.1.2, 1.1.3 ... ön sürümler, 1.2.0'a kadar çıkan geliştirme sürümü
  • 1.2.0, 1.2.1, 1.2.2, 1.2.3 ... kararlı sürüm ve takip eden hata düzeltme sürümleri
  • 1.3.0...
  • 1.4.0...
  • vb.

Mart 2013'te GStreamer proje sorumluları bir bildiri yayınladı[28] 0.10 serisinin artık korunmadığını açıklığa kavuşturmak için. Açıklamada, GStreamer projesinin uygulama ve eklenti geliştiricilerinin yeni teknolojiye geçişine yardımcı olma istekliliğini yeniden vurguladı ve 1.x serisine geçiş yapmanın hala imkansız olduğu düşünülenlerin çeşitli danışmanlık şirketlerinden yardım isteyebileceğini ima etti.

1.2 için destek eklendi DASH uyarlanabilir akış, JPEG2000 Görüntüler, VP9 ve Daala video ve yalnızca kod çözme desteği WebP.

Sürüm 1.14, 19 Mart 2018'de yayınlandı,[29] için destek eklemek WebRTC, AV1, Nvidia NVDEC, ve Güvenli Güvenilir Taşıma, diğer değişikliklerin yanı sıra.

Ayrıca bakınız

  • GStreamer kullanan yazılımların listesi
  • Libvisual
  • OggConvert - basit bir GUI ön ucu
  • SoundConverter - Dijital ses dosyalarını dönüştürmek için GStreamer ve GTK tabanlı bir GUI ön ucu
  • Pitivi - GStreamer tabanlı bir video düzenleyici

Referanslar

  1. ^ a b "GStreamer" Slipstream "0.1.0 yayınlandı". 11 Ocak 2001. Alındı 3 Kasım 2010.
  2. ^ "GStreamer 1.18 Sürüm Notları". Alındı 27 Ekim 2020.
  3. ^ "GStreamer 1.17.90 ön sürüm (1.18.0 rc1)". Alındı 10 Eylül 2020.
  4. ^ "GStreamer", Ohloh Analiz Özeti, Ohloh, alındı 2016-11-06
  5. ^ a b "Uygulamalarınızı ve eklentilerinizi GStreamer ile kullanmak için lisanslama". freedesktop.org. Arşivlenen orijinal 2014-06-15 tarihinde. Alındı 2014-06-07.
  6. ^ "webOS ve GStreamer". webOShelp. Arşivlenen orijinal 22 Mart 2009. Alındı 25 Temmuz 2009.
  7. ^ "GStreamer: İndir". gstreamer.freedesktop.org. Alındı 15 Mayıs 2015.
  8. ^ "GstLAL Proje Sayfası". Wiki.ligo.org. Alındı 6 Mayıs 2019.
  9. ^ Modüllere genel bakış, Gstreamer.freedesktop.org, alındı 8 Şubat 2012
  10. ^ GStreamer 0.9 geliştirme serisi - Bir Başlığa Bağlı, Gstreamer.freedesktop.org, alındı 24 Şubat 2013
  11. ^ "GStreamer İyi Eklentileri".
  12. ^ "GStreamer Hatalı Eklentiler".
  13. ^ "GStreamer Ugly Eklentileri".
  14. ^ Haberler, Gstreamer.freedesktop.org, alındı 7 Şubat 2012
  15. ^ GStreamer FFmpeg eklentisi 0.7.1 "True Colors" için sürüm notları, Gstreamer.freedesktop.org, alındı 7 Şubat 2012
  16. ^ "GStreamer OpenMAX IL sarıcı eklentisi". gstreamer.freedesktop.org. Alındı 2017-07-21.
  17. ^ "Raspbian için Gstreamer 1.0". GRaspberrypi.org. Alındı 2017-07-21.
  18. ^ "TI donanımı için GStreamer Eklentileri". Processors.wiki.ti.com. Alındı 2017-07-21.
  19. ^ "Fluendo Codec Pack Release 11, VDPAU ve VAAPI desteği getiriyor". 2010-03-25. Arşivlenen orijinal 2014-06-24 tarihinde.
  20. ^ Debian Webmaster, [email protected]. "Debian - Wheezy'de gstreamer0.10-crystalhd paketinin ayrıntıları". Packages.debian.org. Alındı 2017-07-21.
  21. ^ FFmpeg eklentisi, Gstreamer.freedesktop.org, alındı 7 Şubat 2012
  22. ^ ext / ffmpeg / gstffmpegcodecmap.c, Cgit.freedesktop.org, alındı 7 Şubat 2012
  23. ^ "GStreamer 0.10.0 kararlı sürüm - 0.10 kararlı serideki ilk sürümün duyurusu". gstreamer.freedesktop.org. Alındı 2017-07-21.
  24. ^ "GStreamer belgeleri". Docs.gstreamer.com. Alındı 2017-07-21.
  25. ^ "GStreamer 1.0 yayınlandı". gstreamer.freedesktop.org. Alındı 2017-07-21.
  26. ^ "GStreamer 1.0 ve 0.10". Lwn.net. Alındı 2017-07-21.
  27. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 2013-08-15 tarihinde. Alındı 2013-09-16.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)
  28. ^ "GStreamer 0.10 artık korunmuyor". Lists.freedesktop.org. Alındı 2017-07-21.
  29. ^ https://gstreamer.freedesktop.org/releases/1.14/

Dış bağlantılar