当涉及到多媒体项目的前端创意软件时,Blender 和 Audacity 往往最受关注,主要是因为它们易于初学者使用。但是,当您使用它们制作大型多媒体项目时,例如我们的动画开源电影项目Lunatics!,您很快就会遇到后端基础设施方面的问题。
您可能一开始甚至没有意识到您的问题根源于组织混乱。您会发现自己因为无法在脑海中组织好项目而拖延和/或原地打转。您需要软件来帮助您。
我们的目标之一是使用开源软件解决这个问题,从而消除在免费文化电影项目不存在的预算下制作长篇电影的障碍。
数字资产管理
第一个也是最明显的问题称为数字资产管理 (DAM),而解决该问题的系统称为“数字资产管理系统”(DAMS)。“资产”是多媒体项目的组成部分,可以是图像、声音片段、电影、3D 模型或任何东西。它通常与“文件”同义。一个资产对应一个文件是一个很好的经验法则,但有可能在一个文件中存储多个资产,或者一个资产有依赖资产,从而跨越多个文件。

opensource.com
DAMS 通常会提供类似搜索界面的东西,并结合自动收集的元数据和用户辅助的标签。因此,您不必记住您将所需的文件放在哪里,而是可以通过记住关于它的信息来找到它,例如您何时创建它、它连接到项目的哪个部分、其中包含什么等等。
一个好的 3D 资产 DAMS 通常也支持资产之间的关联,包括依赖关系。例如,3D 模型资产可能包含链接的 3D 模型、纹理或其他组件。一个真正好的系统可以通过检查资产文件内部的链接来自动发现这些。
多媒体的版本控制
大多数软件项目只是简单地使用他们的版本控制系统 (VCS) 作为 DAMS。源代码树提供了一个用于定位文件的分层方案,这对于程序文件的刚性和静态结构来说完全足够,这些程序文件旨在像机器部件一样协同工作。

opensource.com
读者可能对 VCS 很熟悉;您可能听说过 Subversion、Git、Bazaar 和 Mercurial。然而,这些工具在处理多媒体资产方面非常糟糕。VCS 文档通常会谈论这个问题,好像它是多媒体文件的内在问题,但这只是失败者的说辞。现实情况是,这些应用程序根本不是为处理多媒体而设计的,因此它们在这方面表现得很糟糕。
确切解释原因(以及如何真正解决它)是一个足够大的主题,值得单独写一篇文章,所以,让我们只谈谈它的后果
- 您无法自动合并多媒体文件
- 这使得并发的“基于合并”的版本控制成为不可能
- 因此,所有多媒体的版本控制都应该是“锁定”基础上的
这样一来,Subversion、Git、Bazaar 和 Mercurial 大约 90% 的功能都直接被抛弃了。无论如何,谢谢各位!
- 多媒体文件非常庞大
- 项目结构是流动的且松散定义的
- 中间文件可能非常昂贵
典型的 VCS 根本没有被设计来应对这些事实。它们都假设正在存储文件系统类型的文件层次结构,并且大多数都不容纳部分检出(或者至少不容易;Subversion 在这方面比其他系统做得更好)。DAMS 的关系型、标签式组织更适合多媒体集合的流动性,并且大多数都是在考虑到大文件大小的情况下设计的。
寻找另一种选择
我们调查了许多不同的软件包,其中大多数最初并非为我们的应用而设计。有些被其他项目使用,但似乎对我们的项目来说不是最佳选择。其他一些则存在维护问题;它们要么是旧的并且正在屈服于比特腐烂(与当前软件失去同步),要么仍然太不成熟,无法在活跃的项目中使用。
我们没有选择的一些道路
- Blender-Aid 是一个 Blender 重构工具,它假设您正在使用 Subversion 作为 VCS。它是为 Blender 基金会的 Sintel 项目开发的,但不幸的是在该项目结束后没有得到维护。当我们测试它时,我们不得不修补源代码以使其与当前的 Blender 文件一起工作(那还是几次更新之前)。我们提交了我们的补丁,但没有人维护该项目来接受它。
- Git 当然在程序员中非常流行。我经常被问到为什么我们不在 Git 的潮流中。与 Subversion 相比,它会是一个小的改进,但它主要是一个横向移动,使其不值得迁移的麻烦。
- Git-LFS 是 Git 的一个扩展,可以提高大型文件的性能。
- SparkleShare 是一个基于 Git 的文件夹共享工具,对于没有任何 VCS 经验的艺术家来说足够简单。它被 Tube 项目(Wires for Empathy)使用。
- Boar 可以被视为 VCS 或备份系统。它专注于文件夹复制和轻松处理大型多媒体文件,尽管它在搜索或组织方面没有太多帮助。
- Peragro 走向另一个极端,很好地处理了许多小的 Blender 资产;特别是,它可以查看 Blender 文件内部以查找它们包含的单个对象。不过,它仍然处于开发阶段。
- MediaWiki 允许将资产存储为“文件”或“图像”,我们在前期制作工作中确实短暂地使用了这种方法,但是当资产存储是其主要用途时,它很难管理。
我们现在正在使用什么
我们目前正在使用 Subversion、Trac 和 Resource Space 的组合。
Subversion 是一个 VCS,用于管理我们项目的 Blender“源代码”。它很熟悉并且在某种程度上可用,尽管我们显然是在超负荷使用它。Trac 应用程序提供了存储库的简单基于 Web 的视图,但不预览多媒体内容。

opensource.com
Resource Space 是一个 DAMS,具有出色的搜索和预览界面。不幸的是,这些程序实际上根本无法协同工作,因此我们必须在需要时手动将文件从一个移动到另一个。

opensource.com
尝试一种新的 TACTIC
2012 年,Blender 基金会启动了一个名为 Gooseberry 的新项目,该项目表面上与我们的项目有相似的目标,包括使用 Blender 制作一部长篇电影。然而,这已经演变成一系列短片,其工作室后端的解决方案是采用名为 Blender Cloud 的软件即服务平台。这与我们想要的完全相反。
我们调查了他们在该项目之前考虑过的选项,并发现了 TACTIC。TACTIC 看起来很理想,提供了 DAMS、VCS 和额外的项目管理功能,并且它在 Eclipse Public License 下获得许可。我们最大的担忧是我们不确定 Blender 基金会为什么选择反对它。可能是当时它不在 EPL 下(该软件包在 Gooseberry 项目启动的同时重新获得了许可),或者只是与 Maya 耦合得太紧密(它最初是为与 Maya 一起工作而开发的)。考虑到 Blender 基金会选择构建新的东西,这可能只是一个“非我发明”的案例。

opensource.com
然而,由于我们的意图是尽可能少地发明东西,TACTIC 似乎好得令人难以置信。我们 2018 年的主要基础设施项目是在我们的试点项目上设置和测试该系统。
3 条评论