【发布时间】:2009-09-25 14:28:57
【问题描述】:
我正在考虑创建一个视频库软件,该软件可以跟踪我的所有视频并跟踪我尚未观看的视频以及类似的统计信息。统计数据将针对每个使用该软件的用户。
我的问题是,python 适合创建这个软件还是我需要像 c++ 这样的东西。
【问题讨论】:
标签: python video video-library
我正在考虑创建一个视频库软件,该软件可以跟踪我的所有视频并跟踪我尚未观看的视频以及类似的统计信息。统计数据将针对每个使用该软件的用户。
我的问题是,python 适合创建这个软件还是我需要像 c++ 这样的东西。
【问题讨论】:
标签: python video video-library
Python 非常适合此类任务 - 事实上,最受欢迎的视频网站 YouTube 本质上是用 Python 编写的(当然,使用 Python 中称为的低级组件来完成诸如网络之类的任务服务、关系数据库、视频转码——对于所有这些类型的任务,有很多这样的可重用开源组件,但你的应用程序的逻辑流和所有应用程序级逻辑都可以完美地使用 Python)。
就在昨天晚上,在山景城当地的 Python 兴趣小组会议上,我们有新成员刚搬到硅谷从事视频行业基于 Python 的工作,他们说专业级别的视频交该行业也越来越多地转向 Python —— Pixar 和 ILM 等中坚分子一直在使用 Python,但在过去一两年中,行业内大量采用 Python。
【讨论】:
如果您希望您的代码真正快速,请使用 C++(或并行 fortran)。
但是,在您的应用程序中,99% 的运行时不会在您的代码中,而是在 GUI 库、操作系统调用、等待用户交互、调用库(用 C 编写)以打开视频文件制作缩略图之类的东西。
因此,使用 C++ 将使您的代码速度提高 100 倍,而您的应用程序将因此速度提高 1%,这完全没有用。如果你用 C++ 编写它,你将需要几个月的时间,而使用 Python 你会更快地完成并获得更多的乐趣。
使用 C++ 甚至可以让它变慢很多,因为在 Python 中,您可以通过使用超级强大的原语(如哈希、集合、生成器等)非常轻松地构建更具可扩展性的算法,在 5 分钟内尝试几种算法,看看哪个是最好,导入一个已经完成 90% 工作的库,等等。
用 Python 编写。
【讨论】:
是的。对于这样的事情,Python 比 C++ 更容易使用。您可能希望将其用作数据库的前端,例如 sqlite3
【讨论】:
也许你应该看看这个项目: Moovida
它是一个完整的媒体中心,开源,用 python 编写,易于扩展。我不知道它是否会完全满足您的要求,但您可以轻松添加所需的功能。
【讨论】:
当然,您几乎可以将几乎任何编程语言用于任何任务。但在注意到这一点之后,很明显不同的语言也有不同的方式适应不同的任务。
C/C++ 是非常“硬件友好”的语言。基本上,这些语言只是汇编器之上的一个抽象级别,C 使用指针等。C++ 几乎就像一个(半)可移植的面向对象的汇编器,如果你想有趣的话。 :) 这使得 C/C++ 快速并且擅长与硬件对话。
但在其他情况下,这些相同的特征会变成错误特征。指针可以遍历整个内存,除非您小心,否则您将到处泄漏内存。所以我会说(现在 C 人会生气)C/C++ 实际上直接不适合你想做的事情。
您想要一种更高级的语言,可以自动且不可见地执行更多操作,例如内存管理。那里有很多可供选择,但毫无疑问 Python 非常适合这一点。在过去的几年里,Python 作为编写这类软件的新酷语言出现了,许多多媒体软件,如 Freevo 和已经提到的 Moovida 都是用 Python 编写的。
【讨论】: