GStreamer-1.28.4

Introduksjon til GStreamer

GStreamer er et multimediarammeverk som lar applikasjoner dele et felles sett med programtillegg for oppgaver som videokoding og dekoding, lydkoding og dekoding, lyd- og videofiltre, lydvisualisering, nettstrømming og alt annet som strømmer i sanntid eller på annen måte. Denne siden inneholder mesteparten av pakkesettet for enkel installasjon, ettersom de stort sett har de samme instruksjonene.

Notat

Dette kan ta litt tid å bygge. Gjør gjerne noe annet mens dette bygges.

Viktig

Installasjonsinstruksjonene for lib32 krever de nye Meson kryssfiler fra MLFS, noen --libdir=/usr/lib32 har blitt flyttet til kryssfilene og vises ikke lenger i instruksjonene. Installer de nye kryssfilene slik at 32-bits biblioteker ikke blir installert i /usr/lib.

GStreamer Avhengigheter

Required
FFmpeg-8.1.1 og GLib-2.88.1

Recommended
alsa-lib-1.2.16, CDParanoia-III (for bygging av CDDA programtillegget), Cairo, FLAC-1.5.0, gdk-pixbuf, GLib-2.88.1 (med GObject Introspection), ISO Codes, LAME-3.100, liba53 (nødvendig for å spille av DVD-er), libaom-3.14.1, libdvdread, libdvdnav, libgudev, libjpeg-turbo, libsoup-2, libsoup-3, libva-2.23.0, libogg-1.3.6, libpng-1.6.58, libvorbis-1.3.7, libvpx-1.16.0, mpg123, NASM-3.01, libglvnd-1.7.0, Pango, PulseAudio-17.0, SoundTouch, SVT-AV1-4.1.0, Wayland-Protocols-1.49, x264-20250815, Xorg Biblioteker, og yasm

Optional
AAlib, CUDA (CUDA-13.3.0 or CUDA-13.0.3) (for GPU akselerasjon med NVIDIA GPU-er), graphene, GTK-3 (for eksempler), libcdio (for CD-ROM stasjonstilgang), libdv, libvpl (for GPU akselerasjon med Intel GPU-er), libmpeg2, libnsl, libunwind-1.8.3, Opus-1.6.1, Qt-5, Qt-6, Rustc-1.96.0 (for IEEE 1588:2008 PTP clock støtte), sdl2-compat-2.32.70, Speex-1.2.1, taglib, Valgrind, v4l-utils, Wayland-1.25.0, alsa-oss, bash-completion, hotdoc, JACK, libavc1394, libcaca, libdw, libiec61883, libraw1394, libshout, libsidplay, libtheora, libvisual, Orc, Tremor, TwoLame, og WavPack

Notat

Den valgfrie listen er ikke fullstendig. Se BLFS' gst-plugins-bad for avhengigheter som mangler fra listen.

BLFS ekvivalente pakker

Denne kombinerte siden installerer det som i BLFS ville vært:

Denne siden inkluderer ikke gst-plugins-rs. Den tilbyr en GTK-4 binding og et dav1d programtillegg. Hvis du trenger dem, se den lenkede siden i BLFS.

Laste ned GStreamer

Først opprett en liste over filer som skal lastes ned:

cat > gstreamer-1.28.4-list << EOF
gstreamer/gstreamer-1.28.4.tar.xz
gst-plugins-base/gst-plugins-base-1.28.4.tar.xz
gst-plugins-good/gst-plugins-good-1.28.4.tar.xz
gst-plugins-bad/gst-plugins-bad-1.28.4.tar.xz
gst-plugins-ugly/gst-plugins-ugly-1.28.4.tar.xz
gst-libav/gst-libav-1.28.4.tar.xz
EOF

For å laste ned de nødvendige filene ved hjelp av Wget-1.25.0, bruk følgende kommandoer:

mkdir gstreamer &&
cd    gstreamer &&
grep -v '^#' ../gstreamer-1.28.4-list | wget -i- -c \
    -B https://gstreamer.freedesktop.org/src/

Installasjon av GStreamer

Notat

Når du installerer flere pakker i et skript, må installasjonen gjøres som root bruker. Det finnes tre generelle alternativer som kan brukes til å gjøre dette:

  1. Kjør hele skriptet som root bruker (ikke anbefalt).

  2. Bruk sudo kommandoen fra sudo pakken.

  3. Use su -c "command arguments" (anførselstegn kreves) som vil be om root passordet for hver iterasjon av løkken.

En måte å håndtere denne situasjonen på er å lage en kort bash funksjon som automatisk velger riktig metode. Når kommandoen er satt i miljøet, trenger den ikke å settes på nytt.

as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root

Først må du teste om GStreamer er installert, og hvis den er det, fjern den forrige installasjonen [10]:

pkgconf gstreamer-1.0
if test x"$?" = x"0"; then
  as_root rm -rvf /usr/bin/gst-* /usr/{lib,libexec}/gstreamer-1.0
fi

Nå start et underskall som avsluttes ved feil:

bash -e

Installer alle pakkene ved å kjøre følgende kommandoer:

for package in $(grep -v '^#' ../gstreamer-1.28.4-list)
do
  package=$(basename "$package")
  packagedir=${package%.tar.?z*}
  echo "Building $packagedir"
  tar -xf $package
  pushd $packagedir

  case $packagedir in
    gstreamer-[0-9]* )
      extraflags="-D gst_debug=false"
    ;;
    gst-plugins-base-[0-9]* )
      extraflags="--wrap-mode=nodownload"
    ;;
    gst-plugins-bad-[0-9]* )
      extraflags="-D gpl=enabled -D gsm=disabled"
    ;;
    gst-plugins-ugly-[0-9]* )
      extraflags="-D gpl=enabled"
    ;;
    * )
      extraflags=
    ;;
  esac

  mkdir build
  cd    build
    meson setup --prefix=/usr       \
                --buildtype=release \
                $(echo $extraflags) \
                ..
    ninja
    as_root ninja install
  popd
  rm -rf $packagedir
done

Til slutt, avslutt skallet som ble startet tidligere:

exit

lib32 Installasjon av GStreamer

Først må du teste om GStreamer er installert, og hvis den er det, fjern den forrige installasjonen:

i686-pc-linux-gnu-pkg-config gstreamer-1.0
if test x"$?" = x"0"; then
  as_root rm -rvf /usr/lib32/gstreamer-1.0
fi

Nå start et underskall som avsluttes ved feil:

bash -e

Installer alle pakkene ved å kjøre følgende kommandoer:

for package in $(grep -v '^#' ../gstreamer-1.28.4-list)
do
  package=$(basename "$package")
  packagedir=${package%.tar.?z*}
  echo "Building lib32-$packagedir"
  tar -xf $package
  pushd $packagedir

  case $packagedir in
    gstreamer-[0-9]* )
      extraflags="-D gst_debug=false"
    ;;
    gst-plugins-base-[0-9]* )
      extraflags="--wrap-mode=nodownload -D qt5=disabled"
    ;;
     gst-plugins-good-[0-9]* )
      extraflags="$([ -f /usr/lib32/libmp3lame.so ] || echo "-D lame=disabled")"
      extraflags+=" -D qt5=disabled -D qt6=disabled"
    ;;
    gst-plugins-bad-[0-9]* )
      extraflags="-D gpl=enabled -D gsm=disabled"
    ;;
    gst-plugins-ugly-[0-9]* )
      extraflags="-D gpl=enabled"
    ;;
    * )
      extraflags=
    ;;
  esac

  mkdir build
  cd    build
    meson setup --prefix=/usr       \
                --buildtype=release \
                --cross-file=lib32  \
                $(echo $extraflags) \
                .. 
    ninja
    DESTDIR=$PWD/DESTDIR ninja install
    as_root cp -vR DESTDIR/usr/lib32/* /usr/lib32
    rm -rf DESTDIR
  popd
  rm -rf $packagedir
  as_root /sbin/ldconfig
done

Til slutt, avslutt skallet som ble startet tidligere:

exit

Parameterforklaringer

Notat

Undersøk meson_options.txt eller meson.options for en fullstendig liste over alternativer.

--buildtype=release: Spesifiser en byggetype som er egnet for stabile utgivelser av pakken, da standardtypen kan produsere uoptimaliserte binærfiler.

-D gpl=enabled: Uten denne bryteren bygges ikke programtillegg med avhengigheter av (A)GPL lisensierte biblioteker.

-D gsm=disabled: Denne bryteren deaktiverer kobling til GSM biblioteket hvis det er installert, da det vil føre til byggefeil.

-D qt{5,6}=disabled: På et multilib system, selv om Qt-5 eller Qt-6 kan installeres, er det langt mindre sannsynlig at de blir installert for lib32. meson oppdager feilaktig at de er installert hvis 64-bits installasjoner oppdages, noe som fører til linkerfeil. Hvis du har installert lib32-Qt-{5,6}, fjern disse parameterne.

$([ -f /usr/lib32/libmp3lame.so ] ...: Denne kommandoen søker etter et bibliotek fra en av de anbefalte avhengighetene, og hvis den ikke finner biblioteket, starter kommandoen -D lame=disabled å deaktivere LAME støtte for 32-biters byggingen som meson ikke kan avgjøre om det er riktig arkitektur eller ikke.

Innhold

Installerte Programmer: gst-device-monitor-1.0, gst-discoverer-1.0, gst-inspect-1.0, gst-launch-1.0, gst-play-1.0, gst-stats-1.0, gst-tester-1.0, gst-transcoder-1.0, gst-typefind-1.0, og playout
Installerte Biblioteker: libgstadaptivedemux-1.0, libgstallocators-1.0, libgstanalytics-1.0, libgstapp-1.0, libgstaudio-1.0, libgstbadaudio-1.0, libgstbase-1.0, libgstbasecamerabinsrc-1.0, libgstcheck-1.0, libgstcodecparsers-1.0, libgstcodecs-1.0, libgstcontroller-1.0, libgstcuda-1.0, libgstdxva-1.0, libgstfft-1.0, libgstgl-1.0, libgstinsertbin-1.0, libgstisoff-1.0, libgstmpegts-1.0, libgstmse-1.0, libgstnet-1.0, libgstpbutils-1.0, libgstphotography-1.0, libgstplay-1.0, libgstplayer-1.0, libgstreamer-1.0, libgstriff-1.0, libgstrtp-1.0, libgstrtsp-1.0, libgstsctp-1.0, libgstsdp-1.0, libgsttag-1.0, libgsttranscoder-1.0, libgsturidownloader-1.0, libgstva-1.0, libgstvideo-1.0, libgstwayland-1.0, libgstwebrtc-1.0, og flere programtillegg under /usr/lib{,32}/gstreamer-1.0
Installerte Mapper: /usr/include/gstreamer-1.0/gst/{allocators,app,audio,fft,gl,pbutils}, /usr/include/gstreamer-1.0/gst/{audio,basecamerabinsrc,cuda}, /usr/include/gstreamer-1.0/gst/{codecparsers,insertbin,interfaces}, /usr/include/gstreamer-1.0/gst/{isoff,mpegts,play,player,sctp}, /usr/include/gstreamer-1.0/gst/{riff,rtp,rtsp,sdp,tag,video}, /usr/include/gstreamer-1.0/gst/{transcoder,uridownloader,va}, /usr/include/gstreamer-1.0/gst/{wayland,webrtc}, /usr/share/gst-plugins-base, /usr/share/gstreamer-1.0/presets, og /usr/{include,lib{,32},libexec,share}/gstreamer-1.0

Korte Beskrivelser

gst-device-monitor-1.0

er et kommandolinjeverktøy som kan brukes til å teste GStreamers enhetsovervåkingsfunksjonalitet

gst-discoverer-1.0

er et verktøy som kan brukes til å skrive ut grunnleggende metadata og strømme informasjon om en mediefil

gst-inspect-1.0

er et verktøy som skriver ut informasjon om tilgjengelige GStreamer programtillegg, informasjon om et bestemt programtillegg, eller informasjon om et bestemt element

gst-launch-1.0

er et verktøy som bygger og kjører grunnleggende GStreamer pipeliner

gst-play-1.0

er et kommandolinjeverktøy som kan brukes til å teste grunnleggende avspilling ved hjelp av playbin elementet

gst-stats-1.0

er et verktøy som brukes til å samle inn statistikk om GStreamer operasjoner

gst-tester-1.0

kjører en testplan i TAP kompatibelt format samtidig som den integreres med meson testselen

gst-transcoder-1.0

brukes til å transkode en strøm til et annet format

gst-typefind-1.0

bruker GStreamer typesøkingssystemet for å bestemme den relevante GStreamer programtilleggmodulen for å analysere eller dekode filer, og den tilhørende MIME typen

playout

er et eksempelprogram som brukes til å spille av en liste med lyd og videofiler sekvensielt

libgstbase-1.0

gir noen basisklasser som kan utvides med elementer og verktøyklasser som er mest nyttige for programtillutviklere

libgstcheck-1.0

tilbyr funksjonalitet for å skrive enhetstester som bruker check rammeverket

libgstcontroller-1.0

gir funksjonalitet for å animere elementegenskaper over tid

libgstnet-1.0

tilbyr nettverkselementer og objekter

libgstreamer-1.0

tilbyr alle kjernetjenestene i GStreamer, inkludert initialisering, programtilleggadministrasjon og typer, samt objekthierarkiet som definerer elementer og bins, sammen med noen mer spesialiserte elementer



[10] Fjerning av tidligere installasjon er nødvendig, ellers kan prosesser henge seg opp eller ikke fungere som de skal på grunn av at blandede versjoner er installert.