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

gstreamer

 
 

Open Source Python-bibliotek til multimediebehandling

Byg streamingmedieapplikationer med GStreamer: Audio/Video-pipelines, formatbehandling og real-time behandling.

Hvad er gstreamer?

GStreamer er en kraftfuld open‑source multimedieramme, der gør det muligt for udviklere at skabe avancerede streaming‑medieapplikationer. Den tilbyder en fleksibel pipeline‑baseret arkitektur til håndtering af lyd‑ og videostrømme og understøtter et bredt udvalg af formater, protokoller og plugins. Med Python‑bindinger kan udviklere hurtigt prototype og implementere mediebehandlings‑arbejdsgange, herunder live‑streaming, optagelse, transkodning og realtids‑effekter. Rammen er udbredt i indlejrede systemer, desktop‑applikationer og cloud‑baserede medietjenester.

Grundlæggende bruger GStreamer et modulært plugin-system, der muliggør problemfri integration af brugerdefinerede codecs, filtre og kilder. Dets tværplatformsupport dækker Linux, Windows, macOS og mobile miljøer, hvilket gør det ideelt til bærbare medieløsninger. Udviklere kan udnytte Python til at styre pipeline-opbygning, elementkonfiguration og hændelseshåndtering, mens de drager fordel af højtydende C-niveau behandling i baggrunden. Projektet vedligeholdes aktivt af freedesktop.org-fællesskabet og indeholder omfattende dokumentation, vejledninger og eksempler for at fremskynde udviklingen.

Previous Next

Kom i gang med gstreamer

Begynd at bruge GStreamer med Python ved at installere kernebiblioteket og Python-bindingerne. Den nemmeste metode er via pip: `pip install pygobject` og sørg for, at systempakker som `gstreamer1.0` er installeret. Til udvikling kan du klone det officielle repository fra [gstreamer GitHub](https://github.com/GStreamer/gstreamer) og bygge fra kilde ved hjælp af Meson. GStreamer understøtter Python 3.8+ og integreres med de største Linux-distributioner, Windows og macOS. Når det er installeret, kan du konstruere medie‑pipelines programmatisk ved hjælp af Python‑objekter og -metoder, hvilket muliggør hurtig prototyping af multimedie‑applikationer.

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

Byg medie‑pipeline med Python

GStreamers pipeline-arkitektur tillader udviklere at kæde elementer som kilder, filtre og sinks sammen for at behandle mediestrømme. Ved at bruge Python kan du programmatisk oprette, konfigurere og styre disse pipelines. Elementerne kommunikerer via pads og understøtter dynamisk linking, hvilket muliggør komplekse arbejdsgange såsom transkodning, optagelse eller live streaming. Python-bindingerne eksponerer den fulde GStreamer API, inklusive håndtering af busbeskeder, tilstandsskift og egenskabsmanipulation. Dette gør det muligt at bygge responsive applikationer, der reagerer på mediebegivenheder, fejl eller slut-på-strøm betingelser i realtid. Pipelines kan defineres ved hjælp af `gst_parse_launch` funktionen eller bygges element for element for finjusteret kontrol.

Opret en simpel 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)

Real‑tids‑streaming og netværksunderstøttelse

GStreamer excellerer i realtidsstreaming med robust support for protokoller som RTSP, RTP, HLS og DASH. Udviklere kan bygge live streaming‑servere eller -klienter ved hjælp af Python til at håndtere kilder, kodere og netværkssink. Frameworket håndterer synkronisering, jitterbuffering og pakke‑tab skjulning transparent. Med elementer som `tcpserversink`, `udpsink` og `rtspclientsink` kan du streame video fra kameraer eller filer over lokale netværk eller internettet. Python‑scripts kan dynamisk justere bitrate, opløsning eller kodningsparametre baseret på netværksforhold eller brugerinput, hvilket muliggør adaptive streamingløsninger. GStreamers modulære design understøtter også brugerdefinerede protokol‑plugins til specialiserede anvendelsestilfælde.

Stream 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)

Hardwareacceleration og plugin‑udvidelsesmuligheder

GStreamer giver problemfri integration med hardwareacceleratorer som NVIDIA CUDA, Intel Quick Sync og ARM Mali gennem dedikerede plugins. Udviklere kan udnytte GPU-acceleration til videodekodning, -kodning og sammensætning uden at skulle omskrive kerne‑logikken. Pluginsystemet tillader, at brugerdefinerede elementer skrives i C, Python eller andre sprog og indlæses dynamisk. Python‑plugins kan oprettes ved hjælp af `Gst.ElementFactory` og registreres ved kørselstid, hvilket muliggør hurtig eksperimentering. Denne fleksibilitet understøtter anvendelsestilfælde som brugerdefinerede filtre, AI‑inference‑pipelines eller proprietære codecs. Plugins opdages automatisk via `gst-inspect-1.0`, og deres funktioner kan forespørges programmatisk i Python for at bygge adaptive pipelines.

Aktiver hardwareaccelereret afkodning 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 rigt sæt af indbyggede elementer til lyd-/videobehandling, såsom skalering, farvekonvertering, beskæring, blanding og lydmixning. Udviklere kan kæde disse elementer sammen for at skabe sofistikerede effektkæder — som at anvende filtre, overlejringer eller tidsbaserede transformationer — udelukkende i Python. Elementer som `videoscale`, `videoconvert`, `textoverlay` og `audioresample` leverer høj kvalitet behandling med minimal konfiguration. Tilpassede effekter kan implementeres ved hjælp af `GstBase.BaseTransform` eller `GstBase.BaseAggregator` i Python, hvilket muliggør realtidsmanipulation af mediestrømme. Dette gør GStreamer ideel til applikationer såsom videokonferencer, live‑udsendelser eller indholdsskabelsesværktøjer, hvor lav latensbehandling er kritisk.

Tilføj tekstoverlejring & ændr videoens stø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...
 Dansk