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

gstreamer

 
 

Atvērtā koda Python bibliotēka multivides apstrādei

Izveidojiet straumējošu mediju lietojumprogrammas ar GStreamer: audio/video cauruļvadi, formātu apstrāde un reāllaika apstrāde.

Kas ir gstreamer?

GStreamer ir spēcīgs atvērtā koda multimediju ietvars, kas ļauj izstrādātājiem izveidot sarežģītas straumēšanas mediju lietojumprogrammas. Tas nodrošina elastīgu cauruļu balstītu arhitektūru audio un video straumju apstrādei, atbalstot plašu formātu, protokolu un spraudņu klāstu. Ar Python saistībām izstrādātāji var ātri izveidot prototipus un izvietot mediju apstrādes darbplūsmas, tostarp tiešraides straumēšanu, ierakstīšanu, pārkodēšanu un reāllaika efektus. Ietvars plaši tiek izmantots iegultajās sistēmās, darbvirsmas lietojumprogrammās un mākoņpakalpojumu mediju pakalpojumos.

Pamatā GStreamer izmanto modulāru spraudņu sistēmu, kas ļauj nevainojami integrēt pielāgotus kodekus, filtrus un avotus. Tā krustplatformas atbalsts aptver Linux, Windows, macOS un mobilās vides, padarot to ideālu portatīvām multivides risinājumiem. Izstrādātāji var izmantot Python, lai kontrolētu cauruļvadu būvēšanu, elementu konfigurēšanu un notikumu apstrādi, vienlaikus gūstot labumu no augstas veiktspējas C līmeņa apstrādes zemāk. Projekts tiek aktīvi uzturēts freedesktop.org kopienas, un tas ietver plašu dokumentāciju, pamācības un piemērus, lai paātrinātu izstrādi.

Previous Next

Sākšana ar gstreamer

Lai sāktu izmantot GStreamer ar Python, instalējiet pamatbibliotēku un Python saistības. Visvienkāršākais veids ir caur pip: `pip install pygobject` un pārliecinieties, ka ir instalēti sistēmas pakotnes, piemēram, `gstreamer1.0`. Izstrādei klonējiet oficiālo repozitoriju no [gstreamer GitHub](https://github.com/GStreamer/gstreamer) un veidojiet no avota, izmantojot Meson. GStreamer atbalsta Python 3.8+ un integrējas ar galvenajām Linux izplatēm, Windows un macOS. Pēc instalēšanas varat programmatiski izveidot multivides cauruļvādus, izmantojot Python objektus un metodes, ļaujot veikt ātru multivides lietojumprogrammu prototipēšanu.

Instalējiet GStreamer, izmantojot Pip (Python saistības)

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

Izveidojiet multivides cauruļvadu ar Python

GStreamer's cauruļvadu arhitektūra ļauj izstrādātājiem savienot elementus, piemēram, avotus, filtrus un izvadus, lai apstrādātu multivides plūsmas. Izmantojot Python, jūs varat programmatiski izveidot, konfigurēt un kontrolēt šos cauruļvadus. Elementi sazinās caur padēm un atbalsta dinamisku savienošanu, ļaujot izveidot sarežģītus darba plūsmas, piemēram, transkodēšanu, ierakstīšanu vai tiešraides straumēšanu. Python saistījumi atklāj pilnu GStreamer API, ieskaitot ziņojumu apstrādi uz kopnes, stāvokļa izmaiņas un īpašību manipulāciju. Tas ļauj izveidot reaģējošas lietojumprogrammas, kas reaģē uz multivides notikumiem, kļūdām vai plūsmas beigām reāllaikā. Cauruļvadi var definēt, izmantojot `gst_parse_launch` funkciju, vai izveidot elementu pa elementam, lai iegūtu smalku kontroli.

Izveidojiet vienkāršu video cauruļvadu, izmantojot 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)

Reāllaika straumēšana un tīkla atbalsts

GStreamer izcili darbojas reāllaika straumēšanā, nodrošinot spēcīgu atbalstu protokoliem, piemēram, RTSP, RTP, HLS un DASH. Izstrādātāji var izveidot tiešraides straumēšanas serverus vai klientus, izmantojot Python, lai pārvaldītu avotus, kodētājus un tīkla izvadus. Rāmis pārvalda sinhronizāciju, trīcēšanas buferēšanu un paketes zuduma maskēšanu caurspīdīgi. Ar elementiem, piemēram, `tcpserversink`, `udpsink` un `rtspclientsink`, var straumēt video no kamerām vai failiem pāri lokālajiem tīkliem vai internetam. Python skripti var dinamiski pielāgot bitreitu, izšķirtspēju vai kodēšanas parametrus atkarībā no tīkla apstākļiem vai lietotāja ievades, ļaujot izveidot adaptīvus straumēšanas risinājumus. GStreamer modulārais dizains arī atbalsta pielāgotus protokola spraudņus specializētām lietojumgabalām.

Straumējiet video caur RTSP, izmantojot 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)

Aparatūras paātrinājums un spraudņu paplašināmība

GStreamer nodrošina nevainojamu integrāciju ar aparatūras paātrinātājiem, piemēram, NVIDIA CUDA, Intel Quick Sync un ARM Mali, izmantojot īpašus spraudņus. Izstrādātāji var izmantot GPU paātrinājumu video atkodēšanai, kodēšanai un kompozīcijai, nepārrakstot pamata loģiku. Spraudņu sistēma ļauj izveidot pielāgotus elementus C, Python vai citās valodās un tos dinamiski ielādēt. Python spraudņus var izveidot, izmantojot `Gst.ElementFactory` un reģistrēt izpildlaikā, ļaujot veikt ātru eksperimentēšanu. Šī elastība atbalsta tādus lietošanas gadījumu piemērus kā pielāgoti filtri, AI inferenču cauruļvadi vai īpašnieka kodeki. Spraudņi tiek automātiski atklāti, izmantojot `gst-inspect-1.0`, un to iespējas var programmatiski vaicāt Python, lai izveidotu adaptīvas cauruļvades.

Iespējiet aparatūras paātrinātu atkodēšanu, izmantojot 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...

Multivides apstrāde un efektu cauruļvads

GStreamer ietver plašu iebūvēto elementu kopumu audio/video apstrādei, piemēram, mērogošanai, krāsu pārveidei, apgriešanai, sapludināšanai un audio maisīšanai. Izstrādātāji var savienot šos elementus, lai izveidotu sarežģītas efekta ķēdes — piemēram, filtrēšanas, pārklājumu vai laika balstītu pārveidojumu piemērošanu — pilnīgi Python valodā. Elementi kā `videoscale`, `videoconvert`, `textoverlay` un `audioresample` nodrošina augstas kvalitātes apstrādi ar minimālu konfigurāciju. Pielāgoti efekti var tikt īstenoti, izmantojot `GstBase.BaseTransform` vai `GstBase.BaseAggregator` Python valodā, ļaujot reāllaikā manipulēt ar mediju plūsmām. Tas padara GStreamer par ideālu risinājumu tādām lietojumprogrammām kā video konferencēšana, tiešraides pārraidīšana vai satura veidošanas rīki, kur zemas latentuma apstrāde ir kritiska.

Pielietojiet teksta pārklājumu un mainiet video izmēru, izmantojot 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...
 Latviski