我的一个项目我正在使用FFmpeg,这是一个GPL许可下的图书馆。
我的程序是用C#编写的,我使用命令行启动FFmpeg.exe:
Process Convert = new Process();
Convert.StartInfo = new ProcessStartInfo("DLL\\FFmpeg.exe", "-i Source.avi -f mp4 Dest.mp4");
Convert.Start();
我想知道对我使用GPL库的项目有什么影响。 我是否需要为我的程序使用GPL许可证? (因此发布我的所有代码)
如果我想修改代码,GPL只适用于FFmpeg?
非常感谢
答案 0 :(得分:2)
简而言之,如果您使用单片二进制文件或单独的库链接某些GPL文件,GPL需要使您的许可证兼容,但如果您将GPLed工具称为单独的进程,则没有此要求。您可以使用不同的工具执行相同的任务,并使用相应的界面修改(作为命令行开关),但它们不会成为您产品的一部分。 Ffmpeg拥有众多竞争对手,因此您可以提供替代品,即使在质量下降的情况下也是如此。
请注意1)我不是律师,2)这种描述相当近似,3)GPLv2和GPLv3之间的确切细节非常不同。但是,在你拥有数百万销售额的大公司之前,你几乎不应该费心去做。)
答案 1 :(得分:1)
这可能会有助https://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
GPL是否要求将修改后的版本的源代码发布给公众?
(#GPLRequireSourcePostedPublic)GPL不要求你这样做 发布您的修改版本或其任何部分。你可以自由发挥 修改并私下使用它们,而不释放它们。 这也适用于组织(包括公司);一个 组织可以制作修改后的版本并在内部使用它 永远将它释放到组织之外。
但是如果你以某种方式向公众发布修改版本,那么 GPL要求您将修改后的源代码提供给 程序的用户,在GPL下。
因此,GPL允许发布修改后的程序 某些方式,而不是其他方式;但决定是否 释放它取决于你。
编辑 抱歉,我误解了你的问题。如果您使用GPL lib,那么您的软件必须在GPL许可下发布,这意味着您必须使用源代码分发您的程序。另一方面,LGPL要求提及您使用的库以及您获得的库。