视频艺术:Linux 中的实验动画和视频技术
在 Linux 中进行动画和视频编辑可能是一个充满挑战的领域。任何尝试过在这些媒体中工作的人可能都经历过这样的挫败感:渲染一个巨大的文件一个小时,结果却看到程序在导出完成前崩溃。Linux 上存在大量用于处理视频的工具和应用程序,其中一些比另一些更成熟。
最主流的 GUI 应用程序已经在网络和印刷品上的其他 Linux 相关文章中进行了大量报道,包括在Linux Journal的往期杂志中。您可能对其中一些名称感到熟悉:Kino、PiTiVi、Openshot、Cinelerra、Kdenlive 和 Open Movie Editor。
尽管我在这里时不时地提到这些非线性编辑器 (NLE),但本文的主要目的是介绍一些您以前可能没有想到的视频效果和技术。如果您正在制作传统格式(例如 DVD 或网络视频)的电影或动画,您很可能希望在流程的某个阶段使用合适的 NLE。我在本文中介绍的许多想法都是实验性的。
视频编辑LiVES
LiVES 主要是一个 VJ(视频骑师)工具,用于执行实时视听效果,但它也可以通过其 MPlayer 后端编码和导出视频。该界面有两种模式:剪辑编辑器和多轨编辑器。剪辑编辑器视图更适合现场 VJ 表演,而如果您将 LiVES 用作 NLE,则可能会倾向于多轨视图。

图 1. 剪辑编辑器视图中的 LiVES
LiVES 具有高度的可扩展性。除了内置效果外,您还可以应用自定义 RFX(渲染/实时效果)插件。LiVES 网站上提供了其中几个脚本供下载。您还可以使用 frei0r 效果 API 与其他应用程序共享 LiVES 的实时效果。
LiVES 中的选项数量和高级效果与 Cinelerra 中的选项数量和高级效果相当,但我强烈建议使用 LiVES 而不是后者。Cinelerra 确实是一个功能强大的视频编辑器,但界面陈旧且难以使用。尽管 LiVES 对于新用户来说可能看起来很陌生,但熟悉它并不难。
ZS4
ZS4,以前称为 Zweistein,是一款独特的——而且非常奇怪的——视频编辑器和合成器。ZS4 的开发者,名为“t@b”,是一对音乐家,他们使用自己的软件创作音乐视频。他们在网络上很难被找到,因为他们出于不同的目的使用多个网站。
我承认,zs4.net 和 zs4.org 的存在以及在 zs4.net 域名中的 Google 搜索结果中出现的伟哥广告词都让我感到困惑。这两个站点都包含 ZS4 的下载链接以及其他一些软件。
如果您计划使用 ZS4,我建议您下载 t@b Media Converter 和/或安装 Avidemux,因为 ZS4 对导入视频文件很挑剔。大多数视频开箱即用不兼容,因此可能需要将它们转换为 ZS4 可以使用的格式。
使用 ZS4 最初可能会令人沮丧,因为界面远非直观。菜单不在您期望的位置,您可能会发现自己漫无目的地在不同的位置点击光标来完成简单的任务,例如将媒体文件拖到时间轴中。媒体查看窗口被含糊地标记为“矩形”。要显示或隐藏轨道,您单击 + 或 - 而不是典型的睁眼或闭眼图标。
我花了数年时间才鼓起耐心来了解这个程序。所以,是的,如果 GUI 想要接触到大众受众,它需要进行一些认真的改进,但对于思想古怪的开发者来说,主流吸引力似乎不是主要关注点。
那么,为什么要告诉您一个外观怪异、多年未更新的应用程序,而 Linux 上还有很多其他视频编辑器呢?好吧,尽管 ZS4 有各种图形怪癖,但它可以完成一些非常有趣的合成效果。

图 2. ZS4 中的平铺效果
动画GIMP
著名的 GNU 图像处理程序可以创建动画以及静止图像。因为它是一个功能齐全的图像编辑程序,所以您可以使用它从头开始创建动画。
为了将准备好的图像序列导入 GIMP,请单击文件→作为图层打开... 或按 Ctrl-Alt-o。“打开图像”对话框允许您选择多个文件,然后这些文件将显示为图层。

图 3. 我通过在斯特林心理图像收藏 (PICS) 中人脸的参考照片上描摹制作的正在进行中的动画。
在图 3 所示的示例中,我将一系列参考照片导入 GIMP,并用青色和黑色在它们上面描摹。我最终删除了参考照片和蓝色图层,只留下我计划用于最终动画的黑色线条图。
为了完成我的动画,我将图层导出为 GIF,并在导出对话框中指定了动画参数。因为我想在视频中使用动画,所以我必须将动画 GIF 转换为视频文件。我最终选择通过屏幕录制来完成此操作,但这并不是唯一的选择。
从静止图像到电影假设您有一系列图像,或者可能是一个动画 GIF,您想将其制作成视频文件。有几种方法可以做到这一点。
定格动画
Stopmotion 最初是 2005 年 Skolelinux/Debian-edu 组织下的一个学生项目。尽管自 2008 年以来未更新,但我发现它对于任何从事逐帧动画工作的人来说都是一个方便的工具。如果您不使用基于 DEB 或 RPM 的软件包管理器,您可能很难在发行版的存储库中找到 Stopmotion,但是,当然,您可以从任何发行版的源代码编译它;这就是我在 Sabayon Linux 中设置它的方式。
Stopmotion 简单明了,具有漂亮的拖放界面。它并非旨在用于繁重的后期制作或向帧添加绘图和效果。相反,重点是为用户提供一种简单的方法来按顺序排列图像并将它们导出到视频文件中。
视频导入和导出选项仅受您的想象力(以及您对命令行的了解)的限制。如果您知道如何使用 FFmpeg 和/或 MEncoder 将图像序列转换为视频,您可以将您想要的命令行参数传递给 Stopmotion,这本质上是这些程序的 GUI。Stopmotion 还为您提供了多种视频捕获命令选项,用于从您的网络摄像头或其他连接的设备抓取视频。
我在阅读用户手册之前不知道的一个很酷的功能是添加声音的选项。您可以通过双击声音剪辑来设置声音剪辑从任何给定帧开始播放。我添加到我的序列中的音频没有在导出的 AVI 中播放,但也许您会更幸运。
如果您想对您的单个帧执行更高级的编辑,Stopmotion 有一个按钮可以在 GIMP 中打开选定的帧。您还可以将您的数据导出到 Cinelerra 进行视频编辑。

图 4. 在 Stopmotion 中动画一系列面孔
命令行有几种方法可以通过命令行将帧转换为运动。
jpegtoavi
jpegtoavi 是一个简单的 C 脚本,它完全按照其名称所示的那样——将一系列 *.jpg 文件转换为 AVI 电影。如果您的图像不是 JPEG 格式,您可以首先使用 ImageMagick 中的 convert
命令转换它们
convert image.png image.jpg
如果您需要转换文件夹中的一批图像,ImageMagick 会为您提供大约十亿种不同的方法。其中一种方法是 cd
到该目录并执行
convert *.png image.jpg
新文件名将自动编号。
一旦您拥有了排序的 JPEG 文件文件夹,您就可以使用 jpegtoavi。来自手册页的基本用法模板是
jpegtoavi -f fps width height img1 [img2 ... imgN]
尽管 jpegtoavi 对于简单任务来说很不错,但几乎没有文档。令我惊讶的是,没有一个主要的网站托管该软件的下载提供了任何类型的维基或说明,除了手册页和自述文件中已有的内容。
您可以使用 FFmpeg 和 MEncoder 进行更高级的编码,这两个程序都在网上和它们的手册页中进行了大量记录。这两个程序都依赖于 libavcodec 并且有很多重叠的用途,但命令格式不同。对于本文,我仅介绍 FFmpeg。
这将把 GIF 文件文件夹(按“image-001”、“image-002”等顺序排列)转换为 MP4 电影文件,帧率为每秒 10 帧,比特率相当高,为 1800
ffmpeg -r 10 -b 1800 -i image-%03d.gif movie.mp4
确保您的文件命名正确,因为如果程序遇到数字序列中的间隙,编码将提前停止。
动画 GIF如果您是互联网公民,您无疑会注意到最近在 Tumblr.com 等网站上动画 GIF 的激增。现在更多人可以访问高带宽网络连接,GIF 艺术形式在分辨率和帧数方面不再像 1990 年代那样受到限制,当时微小的 GIF 动画最初在 Geocities 和 Angelfire 主页上流行起来。现代 GIF 动画通常显示电影中的整个场景。
那么,您准备好炫耀一些疯狂的 GIF 技巧了吗?
使用 ImageMagick,很容易从一系列非 GIF 图像中制作动画 GIF
cd /path/to/image/folder ; convert *.jpg animation.gif
不过,所有命令行 GIF 处理程序之母是 Gifsicle。您的图像必须已经是 GIF 格式才能使用它。
要创建一个只动画一次的 GIF,请执行
gifsicle image1.gif image2.gif image3.gif > animation.gif
在大多数情况下,您希望您的动画 GIF 无限循环。您可能还想指定参数,例如帧率。尝试以下操作以获得以每秒 10 帧循环的抖动动画
gifsicle --loopcount=0 --delay 10 --dither image1.gif image2.gif image3.gif > animation.gif
您还可以使用 Gifsicle 的反向模式——即,从动画 GIF 中提取单个帧。只需使用 --explode
参数
gifsicle --explode animation.gif
现在,走出去(我说的“出去”是指您最近的终端)并探索您可以使用 Gifsicle 完成的所有巧妙技巧!
这里还有一个让您跃跃欲试的技巧
取一个带有白色背景的现成动画 GIF,并使其透明
gifsicle --transparent '#FFFFFF' --disposal 2 animation.gif > animation-transparent.gif
抽象
对于我们大多数人来说,动画的概念让人联想到有意的、结构化的序列。在本节中,我将介绍一些非常规的方式来创建令人兴奋的、计算机生成的效果,而无需了解像 Processing 或 Pure Data 这样的语言(这两者都非常强大,但并非所有想制作动画的人都知道如何编码)。
在我自己的视频工作中,屏幕录制工具是必不可少的。有时我使用它们来捕捉我在 Pencil 中制作的动画,因为在我使用的版本中,电影导出功能已损坏。其他时候,我只是想捕捉屏幕上一些很酷的图像,而不用担心专有版权,所以我对自由软件进行屏幕录制。
我首选的屏幕录制器是 recordMyDesktop 的精简命令行版本。您的发行版的存储库也可能提供图形前端 GTK-recordmydesktop 和 QT-recordmydesktop,但我发现这些前端在录制长场景时存在错误且容易崩溃。您可以使用以下命令录制整个屏幕
recordmydesktop screenrecording.ogv
录制将在您输入命令后立即开始,并在您按 Ctrl-c 时停止。阅读手册页以获取更多选项,例如录制特定窗口(提示:使用 xwininfo
查找窗口的 ID)。
Electric Sheep
如果您不熟悉世界上最令人兴奋的屏幕保护程序,请上网查找一些 Electric Sheep 的图像。软件艺术家 Scott Draves 创建了 Electric Sheep,作为一个动态的、协作的分形火焰动画,它在全球数千台计算机上运行和由它们运行。网络数据决定了动画中各种“绵羊”的突变,用户可以投票和贡献他们自己的绵羊。并且因为它都是免费的,所以任何人都可以使用这个安卓梦中生成的图像。
那么,您如何对屏幕保护程序进行屏幕录制呢?好吧,猜猜看:Electric Sheep 是一个二进制文件。只需在您的终端中输入 electricsheep
,然后在 MPlayer 中观看魔术。
如果您想创建自己的绵羊,请查看程序 Qosmic。

图 5. 使用 recordMyDesktop 捕获 Electric Sheep
XaoS
XaoS 是一款实时交互式分形缩放器,它将吸引数学家和 VJ 的目光。您可以使用许多不同的参数和过滤器更改分形公式和颜色。我最喜欢的是伪 3D 过滤器,它挤压线条以生成看起来像超现实景观的东西。使用鼠标左右键,您可以像驾驶飞机飞越“地形”一样放大和缩小。

图 6. 应用了伪 3D 过滤器的 XaoS
Fyre
Fyre 是一个生成和动画 Peter de Jong 地图的程序。您不需要屏幕录制器来使用它制作动画;您可以输入关键帧并直接从程序渲染 AVI 文件。正如您从图 7 所示的屏幕截图中所看到的,Peter de Jong 地图可以制作出一些简洁的抽象图像。

图 7. 在 Fyre 中动画
Alpha 和更多值得关注的内容不幸的是,本文或我的大脑中没有足够的空间来涵盖所有正在开发中的与视频相关的 Linux 软件。为了代替完整的列表,我将为您提供一些项目的名称,我希望这些项目对于开发人员和最终用户来说都值得关注。
Auteur
Auteur 是一个很酷的新秀。我第一次听到这个项目是在播客“The Bad Apples”(此后已更名为“GNU World Order”)的一集中,该播客由 Seth Kenlon(又名 Klaatu)制作,他也是 Auteur 团队的开发人员。Klaatu 指出 Linux 缺少一个真正可靠的非线性视频编辑器,因此他着手制作一个具有他认为现有软件所缺乏的所有功能的编辑器。该网站目前表示该项目由于缺少程序员而处于冻结状态——所以程序员们,为什么不帮助一个有希望的 alpha 版本呢?

图 8. 测试 Auteur
VLMC
VLC 媒体播放器的开发者有一个名为 VLMC(VideoLAN 电影制作器)的新兴项目。最新版本仍然很基础并且不太稳定,但是了解 VideoLAN 团队的能力,我确信这将发展成为一个严肃的非线性视频编辑器。他们目前正在寻找贡献者。
Pencil
Pencil 是一款传统的 2D 动画程序,尽管仍处于测试阶段,但已经填补了 Linux 动画工具领域的巨大空白。它允许以矢量和位图格式绘图,以及导入图像和声音。我对 Pencil 的试验是基本的但大多是令人满意的,尽管视频导出功能在 Linux 中似乎已损坏。我已经对此进行了补偿,并且通过简单地在 Pencil 中动画播放期间进行屏幕录制,仍然制作了一些很酷的视频。Pencil 用户社区活跃,他们在 Pencil 网站的画廊上发布动画。Pencil 类似于 Synfig Studio,但我发现界面更易于导航。

图 9. 我在 Pencil 中制作的动画
Puredyne
Puredyne 是一个基于 Ubuntu 和 Debian Live 的多媒体 Linux 发行版,专门为实时视听处理而设计。本文中我没有足够的文字空间来介绍的许多工具和 API(例如 FreeJ、Gephex 和 DataDada)都包含在发行版本身或可选模块中。
各位动画师和电影制作人,就是这样。我希望这篇文章能激发一两个很酷的音乐视频!
资源LiVES: http://lives.sourceforge.net
Frei0r: http://piksel.org/frei0r
ZS4 视频合成: http://zs4.org
t@b 软件: http://www.thugsatbay.com/tab/?q=software
ZS4 下载: http://zs4.net/download
GIMP: http://www.gimp.org
斯特林心理图像收藏 (PICS): http://pics.psych.stir.ac.uk
Stopmotion: http://stopmotion.bjoernen.com
JPEG 到 MJPEG-AVI 转换器: http://sourceforge.net/projects/jpegtoavi
FFmpeg: https://ffmpeg.cpp.org.cn
Gifsicle: http://www.lcdf.org/gifsicle
recordMyDesktop: http://recordmydesktop.sourceforge.net
Electric Sheep: http://www.electricsheep.org
GNU XaoS: http://wmi.math.u-szeged.hu/xaos/doku.php
Fyre: http://fyre.navi.cx
Auteur 非线性编辑器: http://auteur-editor.info
VLMC: http://www.videolan.org/vlmc
Pencil—传统动画软件: http://www.pencil-animation.org
Puredyne: http://www.puredyne.org