FFmpeg-2.3.3
Introduction to FFmpeg
FFmpeg is a solution to record,
convert and stream audio and video. It is a very fast video and
audio converter and it can also acquire from a live audio/video
source. Designed to be intuitive, the command-line interface
(ffmpeg) tries to
figure out all the parameters, when possible. FFmpeg can also convert from any sample rate
to any other, and resize video on the fly with a high quality
polyphase filter. FFmpeg can use a
Video4Linux compatible video source and any Open Sound System audio
source.
This package is known to build and work properly using an LFS-7.6
platform.
Package Information
-
Download (HTTP): http://ffmpeg.org/releases/ffmpeg-2.3.3.tar.bz2
-
Download MD5 sum: 72361d3b8717b6db3ad2b9da8df7af5e
-
Download size: 7.2 MB
-
Estimated disk space required: 128 MB (additional 857 MB for
docs and 1871 MB to run the FATE tests)
-
Estimated build time: 3.3 SBU (additional 0.9 SBU for docs
and 4.5 SBU to run the FATE tests, after sample files are
downloaded)
FFmpeg Dependencies
Recommended
yasm-1.3.0, libass-0.11.2, fdk-aac-0.1.3, LAME-3.99.5,
libtheora-1.1.1, libvorbis-1.3.4,
libvpx-1.3.0, and x264-20140818-2245
Recommended for desktop use
X Window
System, alsa-lib-1.0.28, SDL-1.2.15, libva-1.3.1 and
libvdpau-0.8 (with the corresponding driver
package)
Optional
FAAC-1.28,
FreeType-2.5.3, libwebp-0.4.1,
OpenJPEG-1.5.2, PulseAudio-5.0,
Speex-1.2rc1, XviD-1.3.3, OpenSSL-1.0.1i, Fontconfig-2.11.1, GnuTLS-3.3.7,
Opus-1.1,
frei0r, HEVC/H.265,
LADSPA,
libssh,
ZVBI, libaacplus, libbluray,
libcaca, libcelt, libcdio,
libdc1394,
Flite, GSM, libiec61883,
libilbc, libmodplug,
libnut (Git checkout),
OpenCore AMR,
OpenCV, librtmp, Schroedinger, TwoLAME, Video4Linux,
vo-aaenc,
vo-amrwbenc,
libxavs
(SVN checkout), OpenAL,
texi2html (to build HTML
documentation), and x265 (H.265/MPEG-H
HEVC)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ffmpeg
Installation of FFmpeg
Install FFmpeg by running the
following commands:
sed -i 's/-lflite"/-lflite -lasound"/' configure &&
./configure --prefix=/usr \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-static \
--enable-shared \
--disable-debug \
--enable-libass \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-x11grab &&
make &&
gcc tools/qt-faststart.c -o tools/qt-faststart
HTML documentation was built in the previous step if texi2html is
installed. If the HTML was built (check for any .html
files in the doc
directory) and you have texlive-20140525
installed and wish to build PDF and Postscript versions of the
documentation, issue the following commands:
sed -i '$s/$/\n\n@bye/' doc/{git-howto,nut,fate}.texi &&
sed -i '/machine:i386/ s/\\/@backslashchar{}/g' doc/platform.texi &&
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
If you have Doxygen-1.8.8 installed and wish to create the
API documentation (takes about 350 MB of space), issue the command
doxygen doc/Doxyfile.
To properly test the installation you must have rsync-3.1.1
installed and follow the instructions for the FFmpeg Automated Testing
Environment (FATE). First, about 872 MB of sample files used to
run FATE are downloaded with the command:
make fate-rsync SAMPLES=fate-suite/
The fate-suite
directory is created
and the files are downloaded there. That command actually runs
rsync -vrltLW --timeout=60
--contimeout=60 rsync://fate-suite.ffmpeg.org/fate-suite/
fate-suite/ command, thus you may want to compress
and keep this directory for testing again, in another system, or
when a new version of ffmpeg is launched. Then, you unpack the
sample files in the source directory, and run, again, the
make command above,
to sync with the repository. Now, the download size and time are
drastically reduced. Estimated values in "Package Information" do
not include the download SBU. Next, FATE is executed, with the
commands (you obtain a number of tests greater than 1900):
make fate SAMPLES=fate-suite/ | tee ../fate.log &&
grep ^TEST ../fate.log | wc -l
Now, as the root
user:
make install &&
install -v -m755 tools/qt-faststart /usr/bin &&
install -v -m755 -d /usr/share/doc/ffmpeg &&
install -v -m644 doc/*.txt \
/usr/share/doc/ffmpeg
If HTML documentation was built, issue the following command to
install it:
install -v -m644 doc/*.html \
/usr/share/doc/ffmpeg
If you used doxygen
to create the API documentation, install it (another 300 MB of
space) by issuing the following commands as the root
user:
install -v -m755 -d /usr/share/doc/ffmpeg/api &&
cp -vr doc/doxy/html/* /usr/share/doc/ffmpeg/api &&
find /usr/share/doc/ffmpeg/api -type f -exec chmod -c 0644 "{}" ";" &&
find /usr/share/doc/ffmpeg/api -type d -exec chmod -c 0755 "{}" ";"
Command Explanations
sed -i ... configure:
This command adds the ALSA library
to the Flite LDFLAGS
variable and enables the discovery of
Flite.
sed -i ... texi: Fix
some .texi files for documentation builds.
find ... ";": Fix
permissions of documentation files and directories.
--enable-libfreetype
: Enables
Freetype support.
--enable-gpl
: Enables the
use of GPL code and permits support for postprocessing, swscale and
many other features.
--enable-version3
: Enables
the use of (L)GPL version 3 code.
--enable-nonfree
: Enables
the use of nonfree code. Note that the resulting libraries and
binaries will be unredistributable.
--disable-static
: This
switch prevents installation of static versions of the libraries.
--enable-shared
: Enables
building shared libraries, otherwise only static libraries are
built and installed.
--disable-debug
: Disables
building debugging symbols into the programs and libraries.
--enable-libass
: Enables
ASS/SSA subtitle format rendering via libass
.
--enable-libfdk-aac
:
Enables currently the highest-quality AAC audio encoding via
libfdk-aac
.
--enable-libmp3lame
:
Enables MP3 audio encoding via libmp3lame
.
--enable-libvorbis
--enable-libtheora
: Enables Theora video encoding via
libvorbis
and libtheora
.
--enable-libvorbis
--enable-libvpx
: Enables WebM encoding via libvorbis
and libvpx
.
--enable-libx264
: Enables
high-quality H.264/MPEG-4 AVC encoding via libx264
.
--enable-x11grab
: Enables
X11 grabbing.
gcc tools/qt-faststart.c -o
tools/qt-faststart: This builds the qt-faststart program which can
modify QuickTime formatted movies (.mov
or .mp4
) so
that the header information is located at the beginning of the file
instead of the end. This allows the movie file to begin playing
before the entire file has been downloaded.
Note
Support for most of the dependency packages requires using
options passed to the configure script. View the
output from ./configure
--help for complete information about enabling
dependency packages.
Configuring FFmpeg
Config Files
/etc/ffserver.conf
and ~/.ffmpeg/ffserver-config
You'll find a sample ffserver configuration file at
doc/ffserver.conf
in the source
tree.
Contents
Installed Programs:
ffmpeg, ffplay, ffprobe, ffserver, and
qt-faststart
Installed Libraries:
libavcodec.so, libavdevice.so,
libavfilter.so, libavformat.so, libavutil.so, libpostproc.so,
libswresample, and libswscale.so
Installed Directories:
/usr/include/libavcodec,
/usr/include/libavdevice, /usr/include/libavfilter,
/usr/include/libavformat, /usr/include/libavutil,
/usr/include/libpostproc, /usr/include/libswresample
/usr/include/libswscale, /usr/share/ffmpeg, and
/usr/share/doc/ffmpeg
Short Descriptions
ffmpeg
|
is a command-line tool to convert video files, network
streams and input from a TV card to several video
formats.
|
ffplay
|
is a very simple and portable media player using the
ffmpeg libraries and the
SDL library.
|
ffprobe
|
gathers information from multimedia streams and prints it
in a human and machine-readable fashion.
|
ffserver
|
is a streaming server for everything that ffmpeg could use as
input (files, streams, TV card input, webcam, etc).
|
qt-faststart
|
moves the index file to the front of quicktime (mov/mp4)
videos.
|
libavcodec.so
|
is a library containing the FFmpeg codecs (both encoding and
decoding).
|
libavdevice.so
|
is the FFmpeg device
handling library.
|
libavfilter.so
|
is a library of filters that can alter video or audio
between the decoder and the encoder (or output).
|
libavformat.so
|
is a library containing the file formats handling (mux
and demux code for several formats) used by ffplay as well as
allowing the generation of audio or video streams.
|
libavutil.so
|
is the FFmpeg utility
library.
|
libpostproc.so
|
is the FFmpeg post
processing library.
|
libswresample.so
|
is the FFmpeg audio
rescaling library, it contains functions for converting
audio sample formats.
|
libswscale.so
|
is the FFmpeg image
rescaling library.
|
Last updated on 2014-09-11 23:27:59 -0700