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

gstreamer

 
 

Open Source Python-bibliotek för multimedia-bearbetning

Bygg streamingmedieapplikationer med GStreamer: ljud-/videopipelines, formatshantering och realtidsbearbetning.

Vad är gstreamer?

GStreamer är ett kraftfullt open-source multimedia‑ramverk som möjliggör för utvecklare att skapa sofistikerade strömningsmedieapplikationer. Det erbjuder en flexibel pipeline‑baserad arkitektur för hantering av ljud‑ och videoströmmar, och stödjer ett brett spektrum av format, protokoll och plugins. Med Python‑bindningar kan utvecklare snabbt prototypa och distribuera arbetsflöden för mediabehandling, inklusive live‑strömning, inspelning, transkodning och realtids‑effekter. Ramverket används i stor utsträckning i inbyggda system, skrivbordsapplikationer och molnbaserade medietjänster.

I sin kärna använder GStreamer ett modulärt plugin‑system som möjliggör sömlös integration av anpassade codecs, filter och källor. Dess plattformsoberoende stöd omfattar Linux, Windows, macOS och mobila miljöer, vilket gör det idealiskt för portabla medielösningar. Utvecklare kan utnyttja Python för att styra pipeline‑konstruktion, elementkonfiguration och händelsehantering, samtidigt som de drar nytta av högpresterande C‑nivåbehandling under huven. Projektet underhålls aktivt av freedesktop.org‑gemenskapen och innehåller omfattande dokumentation, handledningar och exempel för att påskynda utvecklingen.

Previous Next

Komma igång med gstreamer

För att börja använda GStreamer med Python, installera kärnbiblioteket och Python‑bindningarna. Den enklaste metoden är via pip: `pip install pygobject` och se till att systempaket som `gstreamer1.0` är installerade. För utveckling, klona det officiella repot från [gstreamer GitHub](https://github.com/GStreamer/gstreamer) och bygg från källkod med Meson. GStreamer stödjer Python 3.8+ och integreras med de största Linux-distributionerna, Windows och macOS. När det är installerat kan du konstruera mediapipelines programatiskt med Python‑objekt och -metoder, vilket möjliggör snabb prototypframtagning av multimediaapplikationer.

Installera GStreamer via Pip (Python-bindningar)

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 mediapipelines med Python

GStreamers pipeline-arkitektur tillåter utvecklare att kedja ihop element som källor, filter och mottagare för att bearbeta mediastreams. Med Python kan du programatiskt skapa, konfigurera och kontrollera dessa pipelines. Element kommunicerar via pads och stödjer dynamisk länkning, vilket möjliggör komplexa arbetsflöden såsom transkodning, inspelning eller liveströmning. Python-bindningarna exponerar hela GStreamer‑API:et, inklusive hantering av bussmeddelanden, tillståndsändringar och egenskapsmanipulation. Detta gör det möjligt att bygga responsiva applikationer som reagerar på mediehändelser, fel eller slut‑på‑ström‑förhållanden i realtid. Pipelines kan definieras med funktionen `gst_parse_launch` eller byggas element‑för‑element för finjusterad kontroll.

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

Strömning i realtid & nätverksstöd

GStreamer utmärker sig på realtidsströmning med robust stöd för protokoll som RTSP, RTP, HLS och DASH. Utvecklare kan bygga live‑strömningsservrar eller klienter med Python för att hantera källor, kodare och nätverkssänkor. Ramverket hanterar synkronisering, jitterbuffring och dölja paketförlust transparent. Med element som `tcpserversink`, `udpsink` och `rtspclientsink` kan du strömma video från kameror eller filer över lokala nätverk eller internet. Python‑skript kan dynamiskt justera bithastighet, upplösning eller kodningsparametrar baserat på nätverksförhållanden eller användarinmatning, vilket möjliggör adaptiva strömningslösningar. GStreamers modulära design stöder också anpassade protokoll‑plugins för specialiserade användningsfall.

Strömma video via 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)

Hårdvaruacceleration & pluginutbyggbarhet

GStreamer erbjuder sömlös integration med hårdvaruacceleratorer som NVIDIA CUDA, Intel Quick Sync och ARM Mali genom dedikerade plugins. Utvecklare kan utnyttja GPU-acceleration för videodekodning, kodning och sammansättning utan att skriva om kärnlogiken. Pluginsystemet tillåter anpassade element att skrivas i C, Python eller andra språk och laddas dynamiskt. Python‑plugins kan skapas med `Gst.ElementFactory` och registreras vid körning, vilket möjliggör snabb experimentering. Denna flexibilitet stödjer användningsfall som anpassade filter, AI‑inferenspipelines eller proprietära codecs. Plugins upptäcks automatiskt via `gst-inspect-1.0`, och deras funktioner kan frågas programatiskt i Python för att bygga adaptiva pipelines.

Aktivera hårdvaruaccelererad avkodning 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...

Mediabehandling & effektpipeline

GStreamer inkluderar ett rikt urval av inbyggda element för ljud-/videobearbetning, såsom skalning, färgkonvertering, beskärning, blandning och ljudmixning. Utvecklare kan kedja ihop dessa element för att skapa sofistikerade effektkedjor — som att applicera filter, överlägg eller tidsbaserade transformationer — helt i Python. Element som `videoscale`, `videoconvert`, `textoverlay` och `audioresample` erbjuder högkvalitativ bearbetning med minimal konfiguration. Anpassade effekter kan implementeras med `GstBase.BaseTransform` eller `GstBase.BaseAggregator` i Python, vilket möjliggör realtidsmanipulation av mediastreams. Detta gör GStreamer idealiskt för applikationer såsom videokonferenser, live‑sändning eller verktyg för innehållsskapande där låg latens är kritisk.

Applicera textöverlagring & ändra videostorlek med 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...
 Svenska