我想写一个视频编辑软件,“逻辑”结论是我必须使用的语言是C ++ ...但我不喜欢它(抱歉c ++粉丝)
我想用一些很酷的东西来编写它,比如Lisp或Haskell或Erlang ...但我不知道这些语言的开源实现(我没有钱购买许可证)让我制作竞争软件(在表演领域)
你怎么看?你推荐什么?答案 0 :(得分:9)
我无法与Lisp交谈,但Erlang和Haskell都具备视频处理所需的性能。实现这种性能可能比使用C ++更困难,因为域中现有的库较少,因此您必须自己实现更多。这意味着您必须自己能够编写高性能代码。在Haskell中,我预计这需要大量的时间投入(最少6个月)才能变得精通。
您选择哪种语言应该在很大程度上取决于项目的目标。如果它是一个爱好项目,或者你想学习很多关于处理算法的知识(因此不介意自己做很多低级编码),那么使用非主流语言并没有错。 Haskell绑定了很多你最终可能想要使用的东西,比如wrapper for GLSL。
正如有人从事音频处理(包括实时),我可以说Haskell的表现对我来说不是问题。对于最近的项目,我确实在C中编写了一些函数,但这对于实现自定义矢量化方案是必要的。在Haskell中进行高级工作并在必要时调用C是一种非常有效的方法,尽管幸运的是它现在不像过去那样必要。
当然,这假设了一些关于项目性质的事情。如果你想要一些可以立即使用的东西,Haskell,Lisp和Erlang可能不适合你,因为资源较少。你考虑过Processing了吗?它是Java,我不知道你是否认为这比C ++更好或更糟。
除了在Haskell工作的生产力之外,我还有动力(而且我的生产力在一段时间内受到了很大的影响),没有那些我不会坚持的其他目标。如果你想写一些东西来使用它,坚持最有效率的东西。如果您有其他动机,请告诉我们它们是什么,并且人们更有可能提出有用的建议。
答案 1 :(得分:4)
答案 2 :(得分:3)
对于Haskell和Erlang,开源实现是标准的,最有效的可用实现。 Haskell没有理由不足以满足您的需求 - 对于视频内容,我假设您将使用矩阵等。 BLAS& amp;哈斯克尔的合作。我不知道有很多现有的视频编辑工作,但Alberto Ruiz(HMatrix的作者)已经完成了Haskell和计算机视觉的工作:http://dis.um.es/profesores/alberto/research.html
Haskell中的声音库和处理也有很多工作。
答案 3 :(得分:1)
我会使用第三方图书馆为我所做的事情提供最佳报道的语言;用于处理可能成为C ++等主流语言的视频数据。
如果这个项目是为了娱乐/学习一门新语言,那么请尽量少走一条路。但是如果你需要在合理的时间内发货,那么因为你不喜欢它而避免使用最好的工具是不合理的策略。
答案 4 :(得分:1)
这至少取决于你对项目的目标是什么。如果这是一个爱好项目,并且您想学习不同的语言,那么您应该选择该语言。但是,在这种情况下,我假设您熟悉视频处理。另一方面,如果您想了解视频处理,我建议使用您已经熟悉的语言。
现在,如果它是一个体面大小的专业项目(视频处理软件可能很大),你应该考虑使用不同的语言来做不同的事情。我使用的系统类型通常需要在C中编写一些代码(出于效率原因),但我们总是试图将其保持为必不可少的最小值,并对大多数系统行为使用更高级别的语言(我们使用erlang,但是适用于任何其他更高级别的语言)。
IMO,用C或C ++编写大型系统几乎是一种自杀。有些项目取得了成功,但我发现要比用更高级别的语言补充C部分要困难得多。
答案 5 :(得分:1)
已经有一些用Erlang http://erlyvideo.org/编写的视频流服务器。你可以寻找一些灵感https://github.com/erlyvideo/erlyvideo。