1. Məhsullar
  2.   Audio
  3.   Python
  4.   gstreamer

gstreamer

 
 

Çoxmedia Emalı üçün Açıq Mənbəli Python Kitabxanası

GStreamer ilə Axın Media Tətbiqləri Qurun: Audio/Video Boru Kəmərləri, Formatların İdarə Edilməsi və Real‑time Emal.

gstreamer nədir?

GStreamer güclü açıq mənbəli multimedia çərçivəsidir və inkişafçılara mürəkkəb axın media tətbiqləri yaratmağa imkan verir. O, audio və video axınlarını idarə etmək üçün elastik boru kəməri əsaslı memarlıq təqdim edir, geniş format, protokol və plagin dəstəyi ilə. Python bağlamaları sayəsində inkişafçılar canlı axın, qeyd, kodlaşdırma və real‑vaxt effektləri daxil olmaqla media emalı iş axınlarını sürətlə prototipləşdirib yerləşdirə bilərlər. Bu çərçivə gömülü sistemlərdə, masaüstü tətbiqlərdə və bulud əsaslı media xidmətlərində geniş istifadə olunur.

Əsasən, GStreamer modul əsaslı plagin sistemindən istifadə edir ki, bu da xüsusi kodeklərin, filtrlərin və mənbələrin problemsiz inteqrasiyasına imkan verir. Onun çoxplatformalı dəstəyi Linux, Windows, macOS və mobil mühitləri əhatə edir, bu da onu daşınabilir media həlləri üçün ideal edir. İnkişafçılar Python-dan istifadə edərək boru kəmərinin qurulmasını, elementlərin konfiqurasiyasını və hadisə idarəçiliyini nəzarət edə bilərlər, eyni zamanda aşağı səviyyəli C performanslı emalın üstünlüklərindən yararlana bilərlər. Layihə freedesktop.org icması tərəfindən aktiv şəkildə saxlanılır və inkişafı sürətləndirmək üçün geniş sənədləşmə, təlimatlar və nümunələr daxildir.

Previous Next

gstreamer ilə Başlamaq

Python ilə GStreamer istifadə etməyə başlamaq üçün əsas kitabxana və Python bağlamalarını quraşdırın. Ən asan üsul pip vasitəsilədir: `pip install pygobject` və `gstreamer1.0` kimi sistem paketlərinin quraşdırıldığından əmin olun. İnkişaf üçün rəsmi repozitoriyanı [gstreamer GitHub](https://github.com/GStreamer/gstreamer) ünvanından klonlayın və Meson istifadə edərək mənbə kodundan qurun. GStreamer Python 3.8+ dəstəkləyir və əsas Linux paylamaları, Windows və macOS ilə inteqrasiya olunur. Quraşdırıldıqdan sonra, multimedia tətbiqlərinin sürətli prototipləşdirilməsini təmin edən Python obyektləri və metodları ilə proqramlı şəkildə media boru kəmərləri yarada bilərsiniz.

GStreamer-i Pip vasitəsilə quraşdırın (Python Bağlantıları)

pip install pygobject
# On Ubuntu/Debian: sudo apt install gir1.2-gstreamer-1.0 gstreamer1.0-plugins-base
# On macOS: brew install gstreamer pygobject3

Python ilə Media Boru Kəmərləri Qurun

GStreamer-in boru kəməri arxitekturası, tərtibatçılara mənbələr, filtrlər və sinklər kimi elementləri birləşdirərək media axınlarını emal etməyə imkan verir. Python istifadə edərək, bu boru kəmərlərini proqramlı şəkildə yarada, konfiqurasiya edə və idarə edə bilərsiniz. Elementlər padlər vasitəsilə ünsiyyət qurur və dinamik bağlamanı dəstəkləyir, bu da transcoding, qeydiyyat və ya canlı yayım kimi mürəkkəb iş axınlarını mümkün edir. Python bağlamaları tam GStreamer API‑ni, o cümlədən avtobus mesajlarının idarə olunması, vəziyyət dəyişiklikləri və xüsusiyyət manipulyasiyasını təqdim edir. Bu, media hadisələrinə, səhvlərə və ya axının sonuna real vaxtda reaksiya verən cavabdeh tətbiqlər yaratmağa imkan verir. Boru kəmərləri `gst_parse_launch` funksiyasından istifadə edərək təyin oluna bilər və ya incə nəzarət üçün element‑by‑element qurula bilər.

Python vasitəsilə Sadə Video Boru Kəməri yaradın

import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst

Gst.init(None)

pipeline = Gst.parse_launch("videotestsrc ! autovideosink")
pipeline.set_state(Gst.State.PLAYING)

# Wait for EOS or error
bus = pipeline.get_bus()
msg = bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.EOS | Gst.MessageType.ERROR)

pipeline.set_state(Gst.State.NULL)

Real-Time Streaming & Şəbəkə Dəstəyi

GStreamer real‑zamanlı yayımda RTSP, RTP, HLS və DASH kimi protokollara güclü dəstək ilə üstünlük göstərir. İnkişafçılar Python istifadə edərək mənbələri, kodlayıcıları və şəbəkə sinklərini idarə edən canlı yayım serverləri və ya müştəriləri qura bilərlər. Çərçivə sinxronizasiyanı, jitter tamponlamasını və paket itkisinin gizlədilməsini şəffaf şəkildə idarə edir. `tcpserversink`, `udpsink` və `rtspclientsink` kimi elementlərlə kameralar və ya fayllardan video yerli şəbəkələrdə və ya internetdə yayıla bilər. Python skriptləri şəbəkə şərtlərinə və ya istifadəçi girişinə əsasən bit dərəcəsini, çözünürlüğü və ya kodlaşdırma parametrlərini dinamik olaraq tənzimləyə bilər, adaptiv yayım həlləri təmin edir. GStreamer‑in modul dizaynı xüsusi istifadə halları üçün xüsusi protokol plaginlərini dəstəkləyir.

Python ilə RTSP üzərindən Video Axını

import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst, GObject

Gst.init(None)

pipeline = Gst.parse_launch("videotestsrc ! x264enc ! rtspclientsink location=rtsp://localhost:8554/stream")
pipeline.set_state(Gst.State.PLAYING)

loop = GObject.MainLoop()
try:
    loop.run()
except KeyboardInterrupt:
    pass

pipeline.set_state(Gst.State.NULL)

Hardware Sürətləndirilməsi və Plugin Genişlənməsi

GStreamer, NVIDIA CUDA, Intel Quick Sync və ARM Mali kimi hardware sürətləndiriciləri ilə xüsusi plaginlər vasitəsilə problemsiz inteqrasiya təmin edir. İnkişafçılar video dekodlaşdırma, kodlaşdırma və kompozisiya üçün nüvə məntiqini yenidən yazmadan GPU sürətləndirilməsindən istifadə edə bilərlər. Plagin sistemi, C, Python və ya digər dillərdə xüsusi elementlərin yazılmasına və dinamik yüklənməsinə imkan verir. Python plaginləri `Gst.ElementFactory` istifadə edərək yaradılıb, iş vaxtında qeydiyyatdan keçirilə bilər, bu da sürətli təcrübə aparmağa şərait yaradır. Bu çeviklik, xüsusi filtrlər, AI inferens boru kəmərləri və ya patentli kodeklər kimi istifadə halları üçün dəstək verir. Plaginlər `gst-inspect-1.0` vasitəsilə avtomatik kəşf edilir və onların imkanları Python‑da proqramlaşdırma yolu ilə sorğulanaraq adaptiv boru kəmərləri qurula bilər.

Python vasitəsilə Avadanlıq Sürətləndirilmiş Dekodlaşdırmanı Aktivləşdirin

import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst

Gst.init(None)

# Example for VAAPI on Linux with Intel GPU
pipeline = Gst.parse_launch("filesrc location=video.mp4 ! qtdemux ! h264parse ! vaapih264dec ! autovideosink")
pipeline.set_state(Gst.State.PLAYING)

# Run pipeline...

Media Emalı və Effektlər Boru Kəməri

GStreamer audio/video emalı üçün miqyaslama, rəng çevrilməsi, kəsilmə, qarışdırma və audio qarışdırma kimi zəngin daxili elementlər dəsti təqdim edir. İnkişafçılar bu elementləri birləşdirərək mürəkkəb effekt zəncirləri yarada bilərlər — filtr tətbiqi, örtük əlavə edilməsi və ya zaman‑əsaslı transformasiyalar kimi — tamamilə Python dilində. `videoscale`, `videoconvert`, `textoverlay` və `audioresample` kimi elementlər minimal konfiqurasiya ilə yüksək keyfiyyətli emal təmin edir. Xüsusi effektlər `GstBase.BaseTransform` və ya `GstBase.BaseAggregator`‑dən istifadə edərək Python‑da həyata keçirilə bilər, bu da media axınlarının real‑vaxtda idarə olunmasını mümkün edir. Bu, GStreamer‑i video konfranslar, canlı yayım və ya aşağı gecikməli emalın vacib olduğu məzmun yaradılması alətləri kimi tətbiqlər üçün ideal edir.

Python ilə Mətn Örtüyü Tətbiq edin və Videonu Yenidən Ölçüləndirin

import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst

Gst.init(None)

pipeline = Gst.parse_launch("videotestsrc ! textoverlay text='Hello GStreamer' font-desc='Sans 24' ! videoscale ! videoconvert ! autovideosink")
pipeline.set_state(Gst.State.PLAYING)

# Run pipeline...
 Azəri