FFmpeg-0.9

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.

The developers of this package do not make releases very often, so you may wish to use a snapshot instead of this release. If you do that, you must expect the acceptable configure switches, and the dependencies, to change.

This package is known to build and work properly using an LFS-7.0 platform.

Package Information

FFmpeg Dependencies

Recommended

Optional

FAAD2-2.7, LAME-3.99.3, libtheora-1.1.1, libvorbis-1.3.2, libvpx-v0.9.7, X Window System, x264 XviD-1.2.2, AMR narrowband (floating point), AMR wideband, FAAC-1.28, FreeType-2.4.8, GSM, liba52-0.7.4, libdc1394, libnut (SVN checkout), librtmp, libschroedinger, MediaLibrary, OpenJPEG (FFmpeg includes code for it's own jpeg2000 encoder and decoder which is enabled by default), Speex-1.2rc1, SDL-1.2.14 and texi2html (to build HTML documentation).

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ffmpeg

Installation of FFmpeg

Install FFmpeg by running the following commands:

mkdir build &&
cd build &&
../configure --prefix=/usr --enable-shared --disable-static --enable-gpl &&
make

The FFmpeg source contains a tool called qt-faststart that 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 video players to begin playing the content before the entire file has been downloaded. An example of where this is useful for preparing videos before uploading them to YouTube. If need qt-faststart, you can compile it with gcc:

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

If you have Doxygen-1.7.5 installed and wish to create the API documentation (takes about 150 MB of space), issue the command doxygen.

This package does not come with a working test suite.

Now, as the root user:

make install &&
make install-man &&
mkdir /usr/share/doc/ffmpeg-0.9 &&
cp ../doc/*.txt /usr/share/doc/ffmpeg-0.9

If you used doxygen to create the API documentation, install it by issuing the following commands as the root user:

mkdir /usr/share/doc/ffmpeg-0.9/api &&
cp -v doxy/* /usr/share/doc/ffmpeg-0.9/api

If you compiled qt-faststart install it as the root user:

cp qt-faststart /usr/bin

Command Explanations

mkdir build and cd build: This ensures that we compile the FFmpeg object files in a separate directory to the source files.

--enable-shared: This switch is needed to build the shared libraries, otherwise only static libraries are built and installed.

--disable-static: This switch prevents the static libraries from being built.

--enable-gpl: This switch enables the use of GPL code and permits support for postprocessing, swscale and many other features.

--enable-<codec>: FFmpeg comes with code to compile decoders for almost every codec you could think of. The only reason to enable a specific codec (and make FFmpeg link to the prerequisite shared library installed on your system) is to make ffmpeg compile an encoder for that codec. Encoding video is a specialist job. If that is what you want to do with ffmpeg, study the output of configure --help. Remember, the dependencies all install their own encoders (that are often better than FFmpeg's). FFmpeg is an excellent collection of decoders. If you just want to use FFmpeg to watch video or listen to music (via other applications like Gstreamer) then you will not benefit from linking it to another library.

--disable-yasm: use this option if you've not installed yasm and you want what configure describes as "a crippled build".

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, and libswscale.so
Installed Directories: /usr/include/libavcodec, /usr/include/libavdevice, /usr/include/libavfilter, /usr/include/libavformat, /usr/include/libavutil, /usr/include/postproc, /usr/include/libswscale, /usr/share/ffmpeg, and /usr/share/doc/ffmpeg-0.9

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.

libswscale.so

is the FFmpeg image rescaling library.

Last updated on 2011-12-29 03:35:25 +0000