FFmpeg:License
Legal issues are a constant source of questions and confusion. This is an attempt to clarify the most important issues. The usual disclaimers apply, this is not legal advice.
FFmpeg License
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.
Note that FFmpeg is not available under any other licensing terms, especially not proprietary/commercial ones, not even in exchange for payment.
License Compliance Checklist
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 we think it is the easiest. There are also a few items that are not really related to LGPL compliance but are good ideas anyway.
- Compile FFmpeg without "--enable-gpl" and without "--enable-nonfree".
- Use dynamic linking (on windows, this means linking to dlls) for linking with FFmpeg libraries.
- Distribute the source code of FFmpeg, no matter if you modified it or not.
- Make sure the source code corresponds exactly to the library binaries you are distributing.
- Run the command "git diff > changes.diff" in the root directory of the FFmpeg source code to create a file with only the changes.
- Explain how you compiled FFmpeg, for example the configure line, in a text file added to the root directory of the source code.
- Use tarball or a zip file for distributing the source code.
- Host the FFmpeg source code on the same webserver as the binary you are distributing.
- 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.
- Mention "This software uses libraries from the FFmpeg project under the LGPLv2.1" in your program "about box".
- Mention in your EULA that your program uses FFmpeg under the LGPLv2.1.
- 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.
- Remove any prohibition of reverse engineering from your EULA.
- Apply the same changes to all translations of your EULA.
- Do not misspell FFmpeg (two capitals F and lowercase "mpeg").
- 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).
- Go through all the items again for any LGPL external library you compiled into FFmpeg (for example LAME).
- Make sure your program is not using any GPL libraries (notably libx264).
한글 번역
다음은 FFmpeg 라이브러리와 링크 할 때 LGPL 준수 체크리스트입니다. 라이선스를 준수하는 유일한 방법은 아니지만 가장 쉬운 방법이라고 생각합니다.
LGPL 준수와 관련 없지만 (가이드 준수를 위한) 좋은 아이디어인 항목도 있습니다.
-
--enable-gpl
와--enable-nonfree
플래그를 FFmpeg컴파일시 포함하지 마세요. - FFmpeg 라이브러리와 링크하기 위해 동적 링크를 사용하십시오. (Windows에서
.dll
, Linux에서.so
) - FFmpeg의 소스 코드는 수정 여부와 관계없이 코드를 배포하십시오.
- 소스 코드가 배포하려는 라이브러리 바이너리와 정확히 일치하는지 확인하십시오.
- FFmpeg 소스 코드의 루트 디렉토리에서
git diff > changes.diff
명령을 실행하여 diff파일을 만듭니다. - 소스 코드의 루트 디렉토리에 추가 된 텍스트 파일에서 FFmpeg를 컴파일 한 방법을 설명하십시오. (예를 들면, configure 명령행 플래그)
- 소스 코드를 배포하려면 tarball 또는 zip 파일을 사용하십시오.
- 배포 할 바이너리와 동일한 웹 서버에 FFmpeg 소스 코드를 호스팅하십시오.
- 소스코드 및 응용 프로그램에 대한 다운로드 링크가있는 웹 사이트의 모든 페이지에 아래 내용을 추가합니다.
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> </syntaxhighlight> - 프로그램의 About Box에 아래 내용을 추가한다.
"This software uses libraries from the FFmpeg project under the LGPLv2.1"
- EULA에서 귀하의 프로그램이 LGPLv2.1 하에서 FFmpeg를 사용한다고 언급합니다.
- EULA가 코드에 대해 소유권을 주장 할 경우 FFmpeg를 소유하고 있지 않으며 명시 적으로 관련 소유자를 찾을 수 있어야합니다.
- EULA에서 리버스 엔지니어링 금지 항목이 존재할 경우 제거하십시오.
- EULA의 모든 번역본에 동일한 변경 사항을 적용하십시오.
- FFmpeg (두 개의 대문자 F와 소문자 "mpeg")를 잘못 입력하지 마십시오.
- FFmpeg 라이브러리(DLL)를 난독 화 된 이름으로 바꾸지 말고, 접미사 나 접두사를 추가하는 것이 좋습니다. (예를 들면 "avcodec.dll"을 "MyProgDec.dll"로 이름을 바꾸지 말고 "avcodec-MyProg.dll"로 변경)
- FFmpeg로 컴파일 된 모든 LGPL 외부 라이브러리 (예: LAME)에 대해 모든 항목을 다시 검토하십시오.
- 프로그램이 GPL 라이브러리 (특히 libx264)를 사용하고 있지 않은지 확인하십시오.
- 프로그램의 About Box에 아래 내용을 추가한다.