1. Produkter
  2.   Lyd
  3.   Python
  4.   gstreamer

gstreamer

 
 

Open Source Python-bibliotek for multimediebehandling

Bygg strømme medieapplikasjoner med GStreamer: lyd-/videopipelines, formatbehandling og sanntidsbehandling.

Hva er gstreamer?

GStreamer er et kraftig åpen kildekode-multimedierammeverk som gjør det mulig for utviklere å lage avanserte strømmeapplikasjoner for media. Det gir en fleksibel pipeline-basert arkitektur for håndtering av lyd- og videostrømmer, og støtter et bredt spekter av formater, protokoller og plugins. Med Python-bindinger kan utviklere raskt prototype og distribuere mediebehandlingsarbeidsflyter, inkludert live‑strømming, opptak, transkoding og sanntidseffekter. Rammverket brukes mye i innebygde systemer, skrivebordsapplikasjoner og skybaserte medietjenester.

På sitt grunnlag bruker GStreamer et modulært plugin-system som gjør det mulig med sømløs integrering av tilpassede kodeker, filtre og kilder. Den tverrplattformstøtten dekker Linux, Windows, macOS og mobile miljøer, noe som gjør den ideell for bærbare medieløsninger. Utviklere kan utnytte Python til å kontrollere pipeline‑konstruksjon, elementkonfigurasjon og hendelseshåndtering, samtidig som de drar nytte av høyytelses C‑nivå prosessering underliggende. Prosjektet vedlikeholdes aktivt av freedesktop.org‑fellesskapet og inkluderer omfattende dokumentasjon, veiledninger og eksempler for å akselerere utviklingen.

Previous Next

Kom i gang med gstreamer

For å begynne å bruke GStreamer med Python, installer kjernebiblioteket og Python-bindingene. Den enkleste metoden er via pip: `pip install pygobject` og sørg for at systempakker som `gstreamer1.0` er installert. For utvikling, klon det offisielle depotet fra [gstreamer GitHub](https://github.com/GStreamer/gstreamer) og bygg fra kildekode ved hjelp av Meson. GStreamer støtter Python 3.8+ og integreres med de viktigste Linux-distribusjonene, Windows og macOS. Når det er installert, kan du konstruere medie‑pipelines programmatisk ved å bruke Python‑objekter og -metoder, noe som muliggjør rask prototyping av multimedieapplikasjoner.

Installer GStreamer via Pip (Python‑bindinger)

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

Bygg medie‑pipelines med Python

GStreamers pipeline‑arkitektur gjør det mulig for utviklere å koble sammen elementer som kilder, filtre og mål for å behandle mediestrømmer. Ved å bruke Python kan du programmatisk opprette, konfigurere og kontrollere disse pipeline‑ene. Elementer kommuniserer via pads og støtter dynamisk kobling, noe som muliggjør komplekse arbeidsflyter som transkoding, opptak eller direktestrømming. Python‑bindingene eksponerer hele GStreamer‑API‑et, inkludert håndtering av bussmeldinger, tilstandsendringer og egenskapsmanipulering. Dette gjør det mulig å bygge responsive applikasjoner som reagerer på mediehendinger, feil eller slutt‑på‑strøm‑forhold i sanntid. Pipelines kan defineres ved hjelp av `gst_parse_launch`‑funksjonen eller bygges element‑for‑element for finjustert kontroll.

Opprett en enkel videopipeline via 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)

Sanntids‑streaming og nettverksstøtte

GStreamer utmerker seg i sanntidsstrømming med robust støtte for protokoller som RTSP, RTP, HLS og DASH. Utviklere kan bygge live‑strømmingsservere eller -klienter ved hjelp av Python for å håndtere kilder, kodere og nettverkssink. Rammeverket håndterer synkronisering, jitter‑buffering og skjuling av pakketap transparent. Med elementer som `tcpserversink`, `udpsink` og `rtspclientsink` kan du strømme video fra kameraer eller filer over lokale nettverk eller internett. Python‑skript kan dynamisk justere bitrate, oppløsning eller kodingsparametere basert på nettverksforhold eller brukerinput, og muliggjør adaptive strømmingsløsninger. GStreamers modulære design støtter også tilpassede protokoll‑plugins for spesialiserte bruksområder.

Strøm video over RTSP med 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)

Maskinvareakselerasjon og plugin‑utvidbarhet

GStreamer gir sømløs integrasjon med maskinvareakseleratorer som NVIDIA CUDA, Intel Quick Sync og ARM Mali gjennom dedikerte plugins. Utviklere kan utnytte GPU‑akselerasjon for videodekoding, -koding og sammensetting uten å måtte skrive om kjernelogikken. Pluginsystemet tillater at egendefinerte elementer skrives i C, Python eller andre språk og lastes dynamisk. Python‑plugins kan opprettes ved hjelp av `Gst.ElementFactory` og registreres ved kjøretid, noe som muliggjør rask eksperimentering. Denne fleksibiliteten støtter brukstilfeller som egendefinerte filtre, AI‑infernspipelines eller proprietære kodeker. Plugins oppdages automatisk via `gst‑inspect‑1.0`, og deres egenskaper kan forespørres programmatisk i Python for å bygge adaptive pipelines.

Aktiver maskinvareakselerert dekoding via 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...

Mediebehandling og effekt‑pipeline

GStreamer inkluderer et rikt sett med innebygde elementer for lyd-/videobehandling, som skalering, fargekonvertering, beskjæring, blanding og lydmiksing. Utviklere kan koble disse elementene sammen for å lage sofistikerte effektkjeder—som å bruke filtre, overlegg eller tidsbaserte transformasjoner—helt i Python. Elementer som `videoscale`, `videoconvert`, `textoverlay` og `audioresample` gir høy kvalitet på behandlingen med minimal konfigurasjon. Tilpassede effekter kan implementeres ved hjelp av `GstBase.BaseTransform` eller `GstBase.BaseAggregator` i Python, noe som muliggjør sanntidsmanipulering av mediestrømmer. Dette gjør GStreamer ideelt for applikasjoner som videokonferanser, direktesending eller innholdsskaperverktøy hvor lav latensbehandling er kritisk.

Legg til tekstoverlegg og endre videostørrelse via 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...
 Norsk