glfs/multimedia/videoutils/ffmpeg.xml

315 lines
12 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY ffmpeg-download-http "&files-anduin;/sources/ffmpeg-&ffmpeg-version;.tar.bz2">
<!ENTITY ffmpeg-download-ftp " ">
<!ENTITY ffmpeg-md5sum "abae526f04693c08684f0a18c28e3313">
<!ENTITY ffmpeg-size "2.2 MB">
<!ENTITY ffmpeg-buildsize "131 MB (built with all dependencies)">
<!ENTITY ffmpeg-time "1.8 SBU">
]>
<sect1 id="ffmpeg" xreflabel="FFmpeg-&ffmpeg-version;">
<?dbhtml filename="ffmpeg.html"?>
<sect1info>
<othername>$LastChangedBy$</othername>
<date>$Date$</date>
</sect1info>
<title>FFmpeg-&ffmpeg-version;</title>
<indexterm zone="ffmpeg">
<primary sortas="a-FFmpeg">FFmpeg</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to FFmpeg</title>
<para><application>FFmpeg</application> 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 (<command>ffmpeg</command>) tries to figure out all the
parameters, when possible. <application>FFmpeg</application> can also convert
from any sample rate to any other, and resize video on the fly with a high
quality polyphase filter. <application>FFmpeg</application> can use a
video4linux compatible video source and any Open Sound System audio
source. The developers of this package do not create or distribute package
tarballs any longer. BLFS created the tarball for this package by checking
out from upstream SVN the <application>FFmpeg</application> code dated
June 6, 2007.</para>
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>Download (HTTP): <ulink url="&ffmpeg-download-http;"/></para>
</listitem>
<listitem>
<para>Download (FTP): <ulink url="&ffmpeg-download-ftp;"/></para>
</listitem>
<listitem>
<para>Download MD5 sum: &ffmpeg-md5sum;</para>
</listitem>
<listitem>
<para>Download size: &ffmpeg-size;</para>
</listitem>
<listitem>
<para>Estimated disk space required: &ffmpeg-buildsize;</para>
</listitem>
<listitem>
<para>Estimated build time: &ffmpeg-time;</para>
</listitem>
</itemizedlist>
<!-- <bridgehead renderas="sect3">Additional Downloads</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>Required patch: <ulink
url="&patch-root;/ffmpeg-&ffmpeg-version;-gcc4-1.patch"/></para>
</listitem>
<listitem>
<para>Required patch: <ulink
url="&patch-root;/ffmpeg-&ffmpeg-version;-amr_fixes-1.patch"/></para>
</listitem>
</itemizedlist> -->
<bridgehead renderas="sect3">FFmpeg Dependencies</bridgehead>
<bridgehead renderas="sect4">Optional</bridgehead>
<para role="optional">
<ulink url="http://www.penguin.cz/~utx/amr">AMR narrowband (floating point)</ulink>,
<ulink url="http://www.penguin.cz/~utx/amr">AMR wideband</ulink>,
<ulink url="http://sourceforge.net/projects/faac">FAAC</ulink>,
<xref linkend="faad2"/>,
<xref linkend="freetype2"/>,
<ulink url="http://kbs.cs.tu-berlin.de/~jutta/gsm/">GSM</ulink>,
<xref linkend="imlib2"/>,
<xref linkend="lame"/>,
<xref linkend="liba52"/>,
<ulink url="http://sourceforge.net/projects/libdc1394">libdc1394</ulink>,
<ulink url="http://svn.mplayerhq.hu/nut/src/trunk/">libnut</ulink> (SVN checkout),
<xref linkend="libvorbis"/>,
<ulink url="http://medialibrary.sourceforge.net/">MediaLibrary</ulink>,
<xref linkend="sdl"/>,
<ulink url="http://www.theora.org/">Theora</ulink>,
<xref linkend="x-window-system"/>,
<ulink url="http://www.videolan.org/developers/x264.html">x264</ulink>,
<xref linkend="xvid"/>, and
<xref linkend="tetex"/> (to build HTML documentation)</para>
<para condition="html" role="usernotes">User Notes:
<ulink url="&blfs-wiki;/ffmpeg"/></para>
</sect2>
<sect2 role="installation">
<title>Installation of FFmpeg</title>
<para>Review the <filename>doc/optimization.txt</filename> file in the
source tree for information about optimizing the build. Additionally,
you may want to build the postprocessing library as other packages such
as <application>MPlayer</application> and
<application>Transcode</application> can utilize it (see the
<quote>Command Explanations</quote> section for additional
information).</para>
<para>Install <application>FFmpeg</application> by running the following
commands:</para>
<screen><userinput>./configure --prefix=/usr \
--enable-shared \
--enable-pthreads \
--disable-ffplay &amp;&amp;
sed -i 's|/man|/share/man|' config.mak &amp;&amp;
make &amp;&amp;
texi2html --version >/dev/null 2>&amp;1 || make doc/ff{mpeg,play,server}.1</userinput></screen>
<para>If you have <application>teTeX</application> installed, the HTML
documentation was built during the <command>make</command> process. If you
wish to create additional formats of the documentation, you must have
<application>teTeX</application> installed, then issue following
commands:</para>
<screen><userinput>cd doc &amp;&amp;
for DOCNAME in faq ffmpeg-doc hooks ffserver-doc ffplay-doc; do
texi2dvi -b -p $DOCNAME.texi
texi2dvi -b $DOCNAME.texi
dvips -o $DOCNAME.ps $DOCNAME.dvi
if [ $DOCNAME = ffserver-doc ] || [ $DOCNAME = ffplay-doc ]; then \
continue
fi
makeinfo --plaintext --force -o $DOCNAME.txt $DOCNAME.texi
done &amp;&amp;
cd .. &amp;&amp;
unset DOCNAME</userinput></screen>
<para>If you have <xref linkend="doxygen"/> installed and wish to create
the API documentation (takes about 100 MB of space), issue
<command>doxygen</command>.</para>
<para>This package does not come with a test suite that works.</para>
<para>Now, as the <systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>make install &amp;&amp;
install -v -m755 -d /usr/share/doc/ffmpeg-&ffmpeg-version; &amp;&amp;
install -v -m644 doc/*.txt /usr/share/doc/ffmpeg-&ffmpeg-version; &amp;&amp;
texi2html --version >/dev/null 2>&amp;1 || make install-man</userinput></screen>
<para>If you created additional formats of the documentation,
install it by issuing the following commands as the
<systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>install -v -m644 doc/*.{html,dvi,pdf,ps} \
/usr/share/doc/ffmpeg-&ffmpeg-version;</userinput></screen>
<para>If you created the API documentation, install it by issuing the
following commands as the
<systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>install -v -m755 -d /usr/share/doc/ffmpeg-&ffmpeg-version;/api &amp;&amp;
cp -v doxy/* /usr/share/doc/ffmpeg-&ffmpeg-version;/api</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para><parameter>--enable-shared</parameter>: This switch is needed to
build the shared libraries, otherwise only static libraries are built
and installed.</para>
<para><parameter>--enable-pthreads</parameter>: This switch enables the
build to link against the Posix threads library.</para>
<para><parameter>--disable-ffplay</parameter>: Only installs the server part.
<command>ffplay</command> requires <application>X</application> for
building. Remove this option if <application>X</application> is
installed.</para>
<para><option>--enable-<replaceable>&lt;codec&gt;</replaceable></option>: Review
the available options and codecs using the
<command>./configure --help</command> command. You must explicitly enable
each optional codec. Note that if you wish to build support for
postprocessing, liba52, xvid, x264, libfaad2, x11grab or swscaler, you
must pass <option>--enable-gpl</option> to the
<command>configure</command> script.</para>
<para><command>texi2html --version ...</command>: These commands are used
to check the presence of the <application>teTeX</application> package, and
builds/installs the man pages if it is not found.</para>
</sect2>
<sect2 role="configuration">
<title>Configuring FFmpeg</title>
<sect3 id="ffmpeg-config">
<title>Config Files</title>
<para><filename>/etc/ffserver.conf</filename> and
<filename>~/.ffmpeg/ffserver-config</filename></para>
<indexterm zone="ffmpeg ffmpeg-config">
<primary sortas="e-AA.ffmpeg-ffserver-config">~/.ffmpeg/ffserver-config</primary>
</indexterm>
<indexterm zone="ffmpeg ffmpeg-config">
<primary sortas="e-etc-ffserver.conf">/etc/ffserver.conf</primary>
</indexterm>
<para>You'll find a sample ffserver configuration file at
<ulink url="http://ffmpeg.sourceforge.net/sample.html"/> (also
<filename>doc/ffserver.conf</filename> in the source tree).</para>
</sect3>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directories</segtitle>
<seglistitem>
<seg>ffmpeg, ffserver, and optionally, ffplay</seg>
<seg>libavcodec.{so,a}, libavformat.{so,a}, libavutil.{so,a},
video hook modules and optionally, libpostproc.{so,a}</seg>
<seg>/usr/include/ffmpeg, /usr/include/postproc, /usr/lib/vhook, and
/usr/share/doc/ffmpeg-&ffmpeg-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="ffmpeg-prog">
<term><command>ffmpeg</command></term>
<listitem>
<para>is a command-line tool to convert video files, network streams
and input from a TV card to several video formats.</para>
<indexterm zone="ffmpeg ffmpeg-prog">
<primary sortas="b-ffmpeg">ffmpeg</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ffplay">
<term><command>ffplay</command></term>
<listitem>
<para>is a very simple and portable media player using the
<filename>ffmpeg</filename> libraries and the SDL library.</para>
<indexterm zone="ffmpeg ffplay">
<primary sortas="b-ffplay">ffplay</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ffserver">
<term><command>ffserver</command></term>
<listitem>
<para>is a streaming server for everything that <command>ffmpeg</command>
could use as input (files, streams, TV card input, webcam, etc.).</para>
<indexterm zone="ffmpeg ffserver">
<primary sortas="b-ffserver">ffserver</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libavcodec">
<term><filename class='libraryfile'>libavcodec.so</filename></term>
<listitem>
<para>is a library containing the <application>FFmpeg</application>
codecs (both encoding and decoding).</para>
<indexterm zone="ffmpeg libavcodec">
<primary sortas="c-libavcodec">libavcodec.so</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libavformat">
<term><filename class='libraryfile'>libavformat.so</filename></term>
<listitem>
<para>is a library containing the file formats handling (mux and demux code
for several formats) used by <command>ffplay</command> as well as
allowing the generation of audio or video streams.</para>
<indexterm zone="ffmpeg libavformat">
<primary sortas="c-libavformat">libavformat.so</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>