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
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
libaom-3.9.1, libass-0.17.3, fdk-aac-2.0.3, FreeType-2.13.3, LAME-3.100, libvorbis-1.3.7,
libvpx-1.15.0, Opus-1.5.2, x264-20240812, x265-4.1, og NASM-2.16.03 eller
yasm-1.3.0
Anbefalt for skrivebordsbruk
alsa-lib-1.2.13, libva-2.22.0, SDL2-2.30.9
Anbefalt for systemer med Intel Video
libvdpau-1.5 og libvdpau-va-gl-0.4.2
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
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
|