FFmpeg-7.1

Introduksjon til FFmpeg

FFmpeg er en løsning for å ta opp, konvertere og strømme lyd og video. Det er en veldig rask video og lyd konverterer og den kan også hentes fra en live lyd-/videokilde. Designet for å være intuitivt, kommandolinjegrensesnittet (ffmpeg) prøver å finne ut av alle parametere, når det er mulig. FFmpeg kan også konvertere fra hvilken som helst samplingsfrekvens til en hvilken som helst annen, og endre størrelse på video i farten med et høykvalitets flerfasefilter. FFmpeg kan bruke en Video4Linux kompatibel videokilde og en hvilken som helst Open Sound System lydkilde.

[Notat]

Notat

Utviklingsversjoner av BLFS kan ikke bygge eller kjøre noen pakker riktig hvis LFS eller avhengigheter har blitt oppdatert siden den siste stabile versjonene av bøkene.

Pakkeinformasjon

  • Nedlasting (HTTP): https://ffmpeg.org/releases/ffmpeg-7.1.tar.xz

  • Nedlasting MD5 sum: 623aa63a72139a82ccb99cd6ee477b94

  • Nedlastingsstørrelse: 11 MB

  • Estimert diskplass som kreves: 205 MB (legg til 1.5 GB for FATE pakke/tester, legg til 869 MB for dokumentasjon)

  • Estimert byggetid: 1.2 SBU (bruker parallellisme=4; legg til 3.2 SBU (med THREADS=4) for å kjøre FATE pakken etter at eksempelfiler er lastet ned; legg til 0,2 SBU for doxygen dokumenter)

Ytterligere Nedlastinger

FFmpeg Avhengigheter

Anbefalt

Anbefalt for skrivebordsbruk

Anbefalt for systemer med Intel Video

Valgfri

Doxygen-1.12.0, Fontconfig-2.15.0, FriBidi-1.0.16, frei0r-plugins-1.8.0, libcdio-2.1.0 (å identifisere og spille av CDer), libdrm-2.4.123 (for «kmsgrab» inndata), libwebp-1.4.0, libjxl-0.11.1, opencv-4.10.0, OpenJPEG-2.5.2, GnuTLS-3.8.8, PulseAudio-17.0, Samba-4.21.1, Speex-1.2.1, texlive-20240312 (eller install-tl-unx) for PDF og PS dokumentasjon, v4l-utils-1.28.1, Vulkan-Loader-1.3.301, XviD-1.3.7, et grafiske miljø, dav1d, Flite, GSM, libaacplus, libbluray, libcaca, libcelt, libdc1394, libdca, libiec61883, libilbc, libmodplug, libnut (Git checkout), librtmp, libssh, libtheora, OpenAL, OpenCore AMR, Srt, Schroedinger, TwoLAME, vo-aaenc, vo-amrwbenc, og ZVBI

Installasjon av FFmpeg

Først bruker du en oppdatering som legger til et API som er nødvendig for at noen pakker skal bygge:

patch -Np1 -i ../ffmpeg-7.1-chromium_method-1.patch

Løs nå et problem med den nyeste versjonen av x265-4.1:

sed -e 's/X265_BUILD >= 210/(&) \&\& (X265_BUILD < 213)/' \
    -i libavcodec/libx265.c

Installer FFmpeg ved å kjøre følgende kommandoer:

sed -i 's/-lflite"/-lflite -lasound"/' configure &&

./configure --prefix=/usr        \
            --enable-gpl         \
            --enable-version3    \
            --enable-nonfree     \
            --disable-static     \
            --enable-shared      \
            --disable-debug      \
                        --enable-libaom      \
            --enable-libass      \
            --enable-libfdk-aac  \
            --enable-libfreetype \
            --enable-libmp3lame  \
            --enable-libopus     \
            --enable-libtheora   \
            --enable-libvorbis   \
            --enable-libvpx      \
            --enable-libx264     \
            --enable-libx265     \
            --enable-openssl     \
            --ignore-tests=enhanced-flv-av1 \
            --docdir=/usr/share/doc/ffmpeg-7.1 &&

make &&

gcc tools/qt-faststart.c -o tools/qt-faststart

HTML dokumentasjon ble bygget i forrige trinn. Hvis du har texlive-20240312 installert og ønsker å bygge PDF og Postscript versjoner av dokumentasjonen, utsted følgende kommandoer:

pushd doc &&
for DOCNAME in `basename -s .html *.html`
do
    texi2pdf -b $DOCNAME.texi &&
    texi2dvi -b $DOCNAME.texi &&

    dvips    -o $DOCNAME.ps   \
                $DOCNAME.dvi
done &&
popd &&
unset DOCNAME

Hvis du har Doxygen-1.12.0 installert og du ønsker å bygge (hvis --disable-doc var brukt) eller gjenoppbygge html dokumentasjonen, kjør:

doxygen doc/Doxyfile

Fate-suite testene inkluderer sammenligninger med installerte filer, og bør ikke kjøres før pakken er installert. Derfor, hvis du ønsker å kjøre dem, instruksjoner er gitt nedenfor.

Nå, som root bruker:

make install &&

install -v -m755    tools/qt-faststart /usr/bin &&
install -v -m755 -d           /usr/share/doc/ffmpeg-7.1 &&
install -v -m644    doc/*.txt /usr/share/doc/ffmpeg-7.1

Hvis PDF og Postscript dokumentasjonen ble bygget, utsted følgende kommandoer, som root bruker, for å installere dem:

install -v -m644 doc/*.pdf /usr/share/doc/ffmpeg-7.1 &&
install -v -m644 doc/*.ps  /usr/share/doc/ffmpeg-7.1

Hvis du brukte doxygen for å manuelt opprette API dokumentasjonen, installer den ved å utstede følgende kommandoer som root bruker:

install -v -m755 -d /usr/share/doc/ffmpeg-7.1/api                     &&
cp -vr doc/doxy/html/* /usr/share/doc/ffmpeg-7.1/api                  &&
find /usr/share/doc/ffmpeg-7.1/api -type f -exec chmod -c 0644 \{} \; &&
find /usr/share/doc/ffmpeg-7.1/api -type d -exec chmod -c 0755 \{} \;

For å teste installasjonen riktig må du ha rsync-3.3.0 installert og følg instruksjonene for FFmpeg Automated Testing Environment (FATE). Først ca 1 GB med eksempelfiler brukt for å kjøre FATE lastes ned med kommandoen:

make fate-rsync SAMPLES=fate-suite/

fate-suite mappen er opprettet og filene lastes ned der. Den kommandoen kjører faktisk en rsync kommando for å hente eksempelfilene. Det kan være lurt å komprimere og beholde denne mappen for testing på nytt, for testing i et annet system, eller for når en ny versjon av ffmpeg er utgitt. Pakk deretter ut prøvefiler i kildemappen, og kjør make fate-rsync ... kommandoen ovenfor for å synkronisere med oppstrømsdepotet. Nedlastingsstørrelse og tid reduseres drastisk ved å gjøre dette. Antatte verdier i "Pakkeinformasjon" inkluderer ikke nedlastings SBU. Noen tester kan ha blitt fjernet i nyere versjoner, så for å være sikker lokale og server fate prøver er identiske når du bruker tidligere lagrede eksempler, kjør følgende kommando:

rsync -vrltLW  --delete --timeout=60 --contimeout=60 \
      rsync://fate-suite.ffmpeg.org/fate-suite/ fate-suite/

Deretter utfører du FATE med følgende kommandoer (det er mer enn 3800 tester i pakken):

make fate THREADS=N SAMPLES=fate-suite/ | tee ../fate.log &&
grep ^TEST ../fate.log | wc -l

hvor N er et heltall, N ≤ antall kjerner i systemet.

En vellykket kjøring skal ikke returnere noen feil eller advarsler, bare en liste over tester og totalt antall på slutten.

Parameterforklaringer

find ... ;: Retter tillatelser for dokumentasjonsfiler og mapper.

--enable-libfreetype: Aktiverer Freetype støtte.

--enable-gpl: Aktiverer bruk av GPL kode og tillater støtte for etterbehandling, swscale og mange andre funksjoner.

--enable-version3: Aktiverer bruken av (L)GPL versjon 3 kode.

--enable-nonfree: Aktiverer bruk av ikke-gratis kode. Vær oppmerksom på at de resulterende bibliotekene og binærfilene ikke kan distribueres.

--disable-static: Denne bryteren forhindrer installasjon av statiske versjoner av bibliotekene.

--enable-shared: Aktiverer bygging av delte biblioteker, ellers bygges og installeres kun statiske biblioteker.

--disable-debug: Deaktiverer bygging av feilsøkingssymboler inn i programmene og bibliotekene.

--enable-libaom: Aktiverer AV1 audio og video dekoding via libaom.

--enable-libass: Aktiverer ASS/SSA undertekstformat gjengivelse via libass.

--enable-libdrm: Bruk denne bryteren hvis libdrm-2.4.123 er installert for å bygge «kmsgrab» inndatamodul som er nyttig for skjermopptak eller strømming.

--enable-libfdk-aac: Aktiverer AAC lydkoding via libfdk-aac.

--enable-libmp3lame: Aktiverer MP3 lydkoding via libmp3lame.

--enable-libvorbis --enable-libvpx: Aktiverer WebM koding via libvorbis og libvpx.

--enable-libx264: Aktiverer høykvalitets H.264/MPEG-4 AVC koding via libx264.

--enable-libx265: Aktiverer høykvalitets H.265/HEVC koding via libx265.

--enable-openssl: Aktiverer HTTPS protokollen for nettverksstrømmer.

--ignore-tests=...: Deaktiverer tester som mislykkes å kjøre på BLFS uten valgfrie pakker. For øyeblikket er AV1 testen deaktivert ettersom den trenger dav1d for å gjøre AV1 dekoding på CPUen. Testen kan fungere hvis du har en GPU som kan dekode AV1, men denne ble ikke testet.

--enable-gnutls: Bruk dette alternativet i stedet for --enable-openssl, hvis du vil bruke GnuTLS i stedet for OpenSSL for HTTPS protokollen.

--disable-doc: Deaktiverer bygging av HTML dokumentasjonen. Dette er kun nødvendig hvis Doxygen-1.12.0 er installert og du ikke ønsker å bygge html dokumentasjonen.

--enable-libpulse: Aktiverer støtte for Pulseaudio for lydutdata.

gcc tools/qt-faststart.c -o tools/qt-faststart: Dette bygger qt-faststart programmet som kan endre QuickTime formaterte filmer (.mov eller .mp4) slik at deklarasjon informasjonen er plassert i begynnelsen av filen i stedet for slutten. Dette gjør at filmfilen kan begynne å spille før hele filen har blitt lastet ned.

[Notat]

Notat

Støtte for de fleste av avhengighetspakkene krever bruk av alternativer gitt til configure skriptet. Se utdataen fra ./configure --help for fullstendig informasjon om å aktivere avhengighetspakker.

Innhold

Installerte Programmer: ffmpeg, ffplay, ffprobe, og qt-faststart
Installerte Biblioteker: libavcodec.so, libavdevice.so, libavfilter.so, libavformat.so, libavutil.so, libpostproc.so, libswresample.so, og libswscale.so
Installerte Mapper: /usr/include/libav{codec,device,filter,format,util}, /usr/include/libpostproc, /usr/include/libsw{resample,scale}, /usr/share/doc/ffmpeg-7.1, og /usr/share/ffmpeg

Korte Beskrivelser

ffmpeg

er et kommandolinjeverktøy for å konvertere videofiler, nettverksstrømmer og inndata fra et TV-kort til flere videoformater

ffplay

er en veldig enkel og flyttbar mediespiller som bruker ffmpeg biblioteker og SDL biblioteket

ffprobe

samler informasjon fra multimediestrømmer og skriver den ut i et menneske og maskinlesbar måte

qt-faststart

flytter indeksfilen til forsiden av quicktime (mov/mp4) videoer

libavcodec.so

er et bibliotek som inneholder FFmpeg kodeker (både koding og dekoding)

libavdevice.so

er FFmpeg enhetshåndterings biblioteket

libavfilter.so

er et bibliotek med filtre som kan endre video eller lyd mellom dekoder og koder (eller utdata)

libavformat.so

er et bibliotek som inneholder filformatene som håndterer (mux og demux kode for flere formater) brukt av ffplay som også tillater generering av lyd eller video strømmer

libavresample.so

er et bibliotek som inneholder funksjoner for omsampling av lyd og video.

libavutil.so

er FFmpeg verktøybibliotek

libpostproc.so

er FFmpeg etterbehandlingsbibliotek

libswresample.so

er FFmpeg lydskaleringsbibliotek, den inneholder funksjoner for konvertering av lydeksempelformater

libswscale.so

er FFmpeg bildeskaleringsbibliotek