GStreamer Pakken 1.26.5

Introduksjon til GStreamer Pakken

GStreamer er et rammeverk for strømming av medier 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]

Notat

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

GStreamer Pakken Avhengigheter

Påkrevd

FFmpeg-7.1.1 (for libav støtte), GLib-2.84.4 (GObject Introspection påkrevd for GNOME), og Meson Verktøykjedefiler (for lib32)

Anbefalt

Valgfri

AAlib, CUDA (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.2, Opus-1.5.2, Qt-5, Qt-6, rustc-1.89.0 (for IEEE 1588:2008 PTP clock støtte), SDL2 (SDL2-2.32.8 eller sdl2-compat), Speex-1.2.1, taglib, Valgrind, v4l-utils, Wayland-1.24.0, alsa-oss, bash-completion, hotdoc, JACK, libavc1394, libcaca, libdw, libiec61883, libraw1394, libshout, libsidplay, libtheora, libvisual, Orc, Tremor, TwoLame, og WavPack

[Notat]

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:

Laste ned GStreamer Pakken

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

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

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

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

Installasjon av GStreamer Pakken

[Notat]

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 pakken er installert, og hvis den er det, fjern den forrige installasjonen [15]:

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-suite-1.26.5-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 Pakken

Først må du teste om pakken 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-suite-1.26.5-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       \
                --libdir=/usr/lib32 \
                --cross-file=lib32  \
                --buildtype=release \
                $(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]

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



[15] 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.