Ffmpeg

FFmpeg License

Written by Administrator

FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later. However, FFmpeg incorporates several optional parts and optimizations that are covered by the GNU General Public License (GPL) version 2 or later. If those parts get used the GPL applies to all of FFmpeg.

Read the license texts to learn how this affects programs built on top of FFmpeg or reusing FFmpeg. You may also wish to have a look at the GPL FAQ.

The following is a checklist for LGPL compliance when linking against the FFmpeg libraries. It is not the only way to comply with the license, but teh FFMPEG developers think it is the easiest. There are also a few items that are not really related to LGPL compliance but are good ideas anyway.

You are not obliged by the LGPL to follow this list, but consult a copyright lawyer if you choose not to. If you end up violating the LGPL, you will likely end up on the FFMPEG shame list and/or get sued by FFMPEG.

  1. Compile FFmpeg without "--enable-gpl" and without "--enable-nonfree".
  2. Use dynamic linking (on windows, this means linking to dlls) for linking with FFmpeg libraries.
  3. Distribute the source code of FFmpeg, no matter if you modified it or not.
  4. Make sure the source code corresponds exactly to the library binaries you are distributing.
  5. Run the command "svn diff . libswscale > changes.diff" in the root directory of the FFmpeg source code to create a file with only the changes.
  6. Explain how you compiled FFmpeg, for example the configure line, in a text file added to the root directory of the source code.
  7. Use tarball or a zip file for distributing the source code.
  8. Host the FFmpeg source code on the same webserver as the binary you are distributing.
  9. Add "This software uses code of <a href=http://ffmpeg.org>FFmpeg</a> licensed under the <a href=http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>LGPLv2.1</a> and its source can be downloaded <a href=link_to_your_sources>here</a>" to every page in your website where there is a download link to your application.
  10. Mention "This software uses libraries from the FFmpeg project under the LGPLv2.1" in your program "about box".
  11. Mention in your EULA that your program uses FFmpeg under the LGPLv2.1.
  12. If your EULA claims ownership over the code, you have to explicitly mention that you do not own FFmpeg, and where the relevant owners can be found.
  13. Remove any prohibition of reverse engineering from your EULA.
  14. Do not misspell FFmpeg (two capitals F and lowercase "mpeg").
  15. Do not rename FFmpeg dlls to some obfuscated name, but adding a suffix or prefix is fine (renaming "avcodec.dll" to "MyProgDec.dll" is not fine, but to "avcodec-MyProg.dll" is).
  16. Go through all the items again for any LGPL external library you compiled into FFmpeg (for example LAME).
  17. Make sure your program is not using any GPL libraries (notably libx264).
 

Introducing Ffmpeg

Written by Dave Horsfall

FFmpeg is a computer program that can record, convert and stream digital audio and video in numerous formats. FFmpeg is a command line tool that is composed of a collection of free software / open source libraries. It includes libavcodec, an audio/video codec library used by several other projects, and libavformat, an audio/video container mux and demux library. The name of the project comes from the MPEG video standards group, together with "FF" for "fast forward". The logo uses a zigzag pattern that shows how MPEG video codecs handle entropy encoding.

The project was started by Fabrice Bellard (using the pseudonym "Gerard Lantau"), and is now maintained by Michael Niedermayer. Many FFmpeg developers are also part of the MPlayer project, and FFmpeg is hosted at the MPlayer project server.

FFmpeg is developed under GNU/Linux, but it can be compiled under most operating systems, including Apple Inc. Mac OS X, Microsoft Windows and AmigaOS. Most computing platforms and microprocessor instruction set architecture are also supported, like x86 (IA-32 and x86-64), PPC (PowerPC), ARM, DEC Alpha, SPARC, and MIPS architecture.

Recently version .5 of FFmpeg was released, although previously FFmpeg developers have always recommended using the latest neutral build from their source code Subversion version control system as development attempts to maintain a stable trunk. Published under the GNU Lesser General Public License or GNU General Public License (depending on which sub-libraries one would include), FFmpeg is free software.

There are two video codecs and one video container invented in the FFmpeg project during its development. The two video codecs are the lossless "FFV1", and the lossless or lossy "Snow codec", for which a version 1.0 is still in development, and the video container is "NUT" which is also currently being actively developed.

Components

The project is made of several components:

  • ffmpeg is a command line tool to convert one video file format to another. It can also grab and encode in real time from a TV card.
  • ffserver is an HTTP and RTSP multimedia streaming server for live broadcasts. It can also time shift live broadcast.
  • ffplay is a simple media player based on SDL and on the FFmpeg libraries.
  • libavcodec is a library containing all the FFmpeg audio/video encoders and decoders. Most codecs were developed from scratch to ensure best performance and high code reusability.
  • libavformat is a library containing demuxers and muxers for audio/video container formats.
  • libavutil is a helper library containing routines common to different parts of FFmpeg. This library include adler32, crc, md5, sha1, lzo decompressor, Base64 encoder/decoder, des encrypter/decrypter, rc4 encrypter/decrypter and aes encrypter/decrypter.
  • libpostproc is a library containing video postprocessing routines.
  • libswscale is a library containing video image scaling routines.
  • libavfilter is the substitute for vhook which allows the video to be modified or examined between the decoder and the encoder.

Legal status of codecs

FFmpeg contains more than 100 codecs most of which do not just store uncompressed data. At least all codecs that compress information could be claimed by patent holders. Such claims may be enforceable in countries like the United States which have implemented software patents, but are considered unenforceable or void in countries that have not implemented software patents. Furthermore, many of these codecs are only released under terms that forbid reverse engineering, even for purposes of interoperability. However, these terms of use are forbidden in certain countries. For example, some European Union nations have not implemented software patents and/or have laws expressly allowing reverse engineering for purposes of interoperability.

Most GNU/Linux distributions include a stripped version of FFmpeg only including certain codecs to avoid legal complications, instead providing such software at unofficial repositories.

 
Facebook MySpace Twitter Digg Delicious Stumbleupon Google Bookmarks RSS Feed 

Copyright © 2009-2010 Video Conversion Blog | Your Details | Terms of Use
This is a Free resource for webmasters and system administrators.