1. Produk
  2.   Audio
  3.   Python
  4.   gstreamer

gstreamer

 
 

Perpustakaan Python Sumber Terbuka untuk Pemprosesan Multimedia

Bina Aplikasi Media Penstriman dengan GStreamer: Paip Audio/Video, Pengendalian Format & Pemprosesan Masa Nyata.

Apakah gstreamer?

GStreamer ialah kerangka kerja multimedia sumber terbuka yang kuat yang membolehkan pembangun mencipta aplikasi media penstriman yang canggih. Ia menyediakan seni bina berasaskan paip yang fleksibel untuk mengendalikan aliran audio dan video, menyokong pelbagai format, protokol, dan plugin. Dengan ikatan Python, pembangun dapat dengan cepat membuat prototaip dan menyebarkan aliran kerja pemprosesan media, termasuk penstriman langsung, rakaman, penukaran format, dan kesan masa nyata. Kerangka kerja ini banyak digunakan dalam sistem terbenam, aplikasi desktop, dan perkhidmatan media berasaskan awan.

Pada dasarnya, GStreamer menggunakan sistem plugin modular yang membolehkan integrasi lancar codec khusus, penapis, dan sumber. Sokongan lintas platformnya meliputi Linux, Windows, macOS, dan persekitaran mudah alih, menjadikannya ideal untuk penyelesaian media mudah alih. Pembangun boleh memanfaatkan Python untuk mengawal pembinaan pipeline, konfigurasi elemen, dan pengendalian acara, sambil mendapat manfaat daripada pemprosesan peringkat C yang berprestasi tinggi di bawahnya. Projek ini diselenggarakan secara aktif oleh komuniti freedesktop.org dan menyertakan dokumentasi komprehensif, tutorial, serta contoh untuk mempercepat pembangunan.

Previous Next

Mula Menggunakan gstreamer

Untuk mula menggunakan GStreamer dengan Python, pasang perpustakaan teras dan ikatan Python. Kaedah paling mudah ialah melalui pip: `pip install pygobject` dan pastikan pakej sistem seperti `gstreamer1.0` dipasang. Untuk pembangunan, klon repositori rasmi dari [gstreamer GitHub](https://github.com/GStreamer/gstreamer) dan bina dari sumber menggunakan Meson. GStreamer menyokong Python 3.8+ dan berintegrasi dengan pengedaran Linux utama, Windows, dan macOS. Setelah dipasang, anda boleh membina saluran media secara programatik menggunakan objek dan kaedah Python, membolehkan prototaip pantas aplikasi multimedia.

Pasang GStreamer melalui Pip (Ikatan Python)

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

Bina Saluran Media dengan Python

Arkitektur paip GStreamer membolehkan pembangun menyambungkan elemen seperti sumber, penapis, dan sink untuk memproses aliran media. Dengan menggunakan Python, anda boleh secara programatik mencipta, mengkonfigurasi, dan mengawal paip ini. Elemen berkomunikasi melalui pad dan menyokong pautan dinamik, membolehkan aliran kerja kompleks seperti penukaran format, rakaman, atau penstriman langsung. Ikatan Python mendedahkan API GStreamer penuh, termasuk pengurusan mesej bas, perubahan keadaan, dan manipulasi sifat. Ini menjadikan ia mungkin untuk membina aplikasi responsif yang bertindak balas kepada peristiwa media, ralat, atau keadaan akhir aliran dalam masa nyata. Paip boleh ditakrifkan menggunakan fungsi `gst_parse_launch` atau dibina elemen-demi-elemen untuk kawalan terperinci.

Cipta Saluran Video Ringkas melalui Python

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)

Penstriman Masa Nyata & Sokongan Rangkaian

GStreamer cemerlang dalam penstriman masa nyata dengan sokongan kukuh untuk protokol seperti RTSP, RTP, HLS, dan DASH. Pembangun boleh membina pelayan atau klien penstriman langsung menggunakan Python untuk mengurus sumber, pengekod, dan sink rangkaian. Kerangka kerja mengendalikan penyelarasan, penampungan jitter, dan penyembunyian kehilangan paket secara telus. Dengan elemen seperti `tcpserversink`, `udpsink`, dan `rtspclientsink`, anda boleh menstrim video dari kamera atau fail melalui rangkaian tempatan atau internet. Skrip Python boleh menyesuaikan kadar bit, resolusi, atau parameter pengekodan secara dinamik berdasarkan keadaan rangkaian atau input pengguna, membolehkan penyelesaian penstriman adaptif. Reka bentuk modular GStreamer juga menyokong plugin protokol khusus untuk kes penggunaan khusus.

Strim Video melalui RTSP menggunakan Python

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)

Pecutan Perkakasan & Kebolehsuaian Plugin

GStreamer menyediakan integrasi lancar dengan pemecut perkakasan seperti NVIDIA CUDA, Intel Quick Sync, dan ARM Mali melalui plugin khusus. Pembangun boleh memanfaatkan pemecut GPU untuk penyahkodan video, pengekodan, dan komposit tanpa menulis semula logik teras. Sistem plugin membenarkan elemen khusus ditulis dalam C, Python, atau bahasa lain dan dimuatkan secara dinamik. Plugin Python boleh dicipta menggunakan `Gst.ElementFactory` dan didaftarkan pada masa jalan, membolehkan percubaan pantas. Fleksibiliti ini menyokong kes penggunaan seperti penapis khusus, saluran inferens AI, atau codec proprietari. Plugin ditemui secara automatik melalui `gst-inspect-1.0`, dan kebolehannya boleh dipertanyakan secara programatik dalam Python untuk membina paip adaptif.

Dayakan Penyahkodan Dipercepatkan Perkakasan melalui Python

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...

Pemprosesan Media & Saluran Kesan

GStreamer termasuk satu set elemen terbina dalam yang kaya untuk pemprosesan audio/video, seperti penskalaan, penukaran warna, pemotongan, penggabungan, dan pencampuran audio. Pembangun boleh menyambungkan elemen-elemen ini untuk mencipta rantaian kesan yang canggih—seperti menerapkan penapis, lapisan, atau transformasi berasaskan masa—sepenuhnya dalam Python. Elemen seperti `videoscale`, `videoconvert`, `textoverlay`, dan `audioresample` menyediakan pemprosesan berkualiti tinggi dengan konfigurasi minimum. Kesan khusus boleh dilaksanakan menggunakan `GstBase.BaseTransform` atau `GstBase.BaseAggregator` dalam Python, membolehkan manipulasi masa nyata aliran media. Ini menjadikan GStreamer ideal untuk aplikasi seperti persidangan video, siaran langsung, atau alat penciptaan kandungan di mana pemprosesan latensi rendah adalah kritikal.

Gunakan Tindihan Teks & Saiz Semula Video melalui Python

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...
 Melayu