Kino 技巧:从头安装和导出 MPEG 视频
《Linux Journal》的十二月刊包含我们的专题文章“使用 Kino 制作电影”。在此,我们提供一篇配套文章,其中包含安装或升级 Kino 的说明,以及关于您可以使用这款流行的视频编辑程序做些什么的技巧。
在我们开始构建程序之前,这里有一个非 Linux 技巧:如果您的 PC 没有内置 IEEE1394 卡,或者您希望购买额外的 IEEE 卡,请尽量找到带有 IEEE1394 电缆的卡——从长远来看这更便宜。如果您确实单独购买电缆,请记住,在视频商店中标记为 Sony 的漂亮电缆可能比在电脑商店中标记为 1394 的普通电缆贵得多,但它们的工作方式没有任何区别。
Kino 不是一个单一程序,但它在运行时确实会调用一些额外的东西并使用许多库。主要依赖关系树如下图 1 所示。为了成功编译 Kino,您必须事先安装所有需要的软件包并从源代码编译它们。希望配置脚本将帮助您确定所需的软件。
首先在 SourceForge.net 上找到最新的源代码并加载它们。解压缩并解压文件,然后按照 README 说明进行操作。通过运行 ./configure 脚本,您可以详细了解为了成功编译 Kino,您必须在机器上添加的所有内容。您需要根据发行版安装缺少的组件。在这种情况下,您必须安装运行时库以及开发人员的相应文件,此类软件包的名称中包含“devel”或类似内容。
根据经验,您要编译的 Kino 版本越新,您需要安装或更新的库就越新。其中一些可能根本不适用于您的发行版。在这种情况下,您必须从源代码编译库或找到预编译的库。有关此步骤的更多详细信息,请参见下文“从软件包安装”。
如果 ./configure 脚本没有错误地完成,请运行make然后make install。如果 make 脚本出现问题,错误消息会为您提供有关发生情况的完整信息。README 文件也可以帮助您找到编译不成功的原因。
Kino 插件 timfx timfx 和 dvtitler 提供了一些额外的功能。安装 timfx 的过程需要 C++ 接口和信号框架库。在 SuSE 上,您可能不会遇到编译此模块的任何问题,但您可能需要指向 Kino 标头位置
~tiger/timfx ./configure ~tiger/timfx make KINO INCLUDE=/opt/gnome/include ~tiger/timfx make install
编译 dvtitler 的过程类似——不要忘记加载 timfx Luma 效果的灰度图像。它们位于此处。了解这些图像的工作原理可以帮助您开发自己有趣的效果。
为了简化所有这些库的安装,我们创建了包含 SuSE 9.1 和 Fedora Core 2 所有必要软件包的 tarball。SuSE 9.1 tarball 可以在此处找到,Fedora Core 2 tarball 可以在此处找到。使用这些 tarball,我们建议以下安装 Kino 的步骤
根据您的发行版加载所有软件包,如表 1 和表 2 所示。表中的某些软件包未包含在标准发行版中,其中一些是我们专门为与 Kino 一起使用而编译的。要以 root 用户身份安装它们,请发出命令rpm -i foo,其中 foo 是软件包的文件名。要升级,请使用rpm -U foo代替。
尝试使用命令安装 Kinorpm -U foo,其中 foo 是 Kino 软件包名称,根据发行版而定。对于 SuSE 是 kino-0.7.3-2.i586.rpm,对于 Fedora Core 2 是 kino-0.7.3-2.i386.rpm。
如果 rpm 抱怨您在系统中遗漏了某些内容,请阅读 rpm 输出并安装或升级必要的程序。
对于 SuSE,只需使用 rpm 安装 timfx 和 dvtitler;使用 timfx-0.2.1-2.i586.rpm 和 dvtitler-0.1.1-1.i586.rpm。对于 Fedora Core 2,首先安装表 3 中注明的标准版本中不可用的两个软件包。之后,安装插件软件包 timfx-0.2.1-2.i386.rpm 和 dvtitler-0.1.1-1.i386.rpm。
表 1. SuSE 9.1 软件包
软件 | 软件包 |
---|---|
MJPEG 视频捕获和处理工具 | mjpegtools-1.6.2 |
用于 DV 视频的 Quasar DV 编解码器 | libdv-0.102 |
用于读取和写入 Quicktime 文件的库 | libquicktime-0.9.2 |
要通过 IEEE1394 接口使用您的相机,您需要内核支持的驱动程序和设备。标准 SuSE(9.0 及以上版本)和 Debian 3.1 在其标准版本中都包含所有这些内容。Fedora Core 2 没有它们,因此您必须将 Fedora 安装更新到新的官方 Fedora 内核版本 2.6.8。您可以从此处下载。
在运行 Kino 之前,请检查 IEEE1394 设备是否可用。Kino 使用名为 /dev/ieee1394 的设备进行捕获,使用名为 /dev/dv1394 的设备进行输出。发出ls -al /dev/*1394*以反映您的系统。这些文件通常由安装系统时运行的 MAKEDEV 脚本创建。
但是,拥有这些设备还不够;您必须在系统中安装相应的组件才能使用它们。SuSE 开箱即用地提供了这些模块,而 Fedora Core 2 仅在升级后才提供它们。MandrakeLinux 9.2 版本也包含这些模块。
您必须手动创建 /dev/dv1394。对于 PAL,命令是
mknod -m 666 /dev/dv1394 c 171 34
对于 NTSC,命令略有不同
mknod -m 666 /dev/dv1394 c 171 32
不要忘记加载模块,使用modprobe dv1394。您可以通过访问 linux1394.org 找到有关此过程的更多详细信息。
就其本身而言,Kino 仅提供最少的导出功能;您可以使用它将电影写入 DV 磁带或 .dv 或 dv .avi 文件。表 4 显示了导出其他功能的依赖关系树。标为红色的软件包未包含在标准发行版中,因此您必须从 LJ FTP 站点提供的 tarball 中加载它们。使用rpm -i foo安装这些软件包。从顶部 (libogg) 开始,然后按照表格向下 (rawrec)。
表 4:导出电影的依赖关系
软件 | SuSE 9.1 | Fedora Core 2 |
---|---|---|
Ogg 位流库 | libogg-1.1 | libogg-1.1 |
Vorbis 通用音频压缩编解码器 | libvorbis-1.0.1 | libvorbis-1.0.1 |
MP3 编码器 | lame-3.96(红色) | lame-3.96(红色) |
视频和音频转换器 | ffmpeg-0.4.8(红色) | ffmpeg-0.4.8(红色) |
用于读取 DVD 视频图像的库 | libdvdread-0.9.4 | libdvdread-0.9.4(红色) |
用于便携式网络图形 (PNG) 格式的库 | libpng-1.2.5 | libpng-1.2.5 |
帮助您制作 DVD 的工具 | dvdauthor-0.6.10(红色) | dvdauthor-0.6.10(红色) |
原始音频录制/播放实用程序 | rawrec-0.9.98(红色) | rawrec-0.9.98(红色) |
如果硬件运行速度不够快,则经常会发生丢帧。结果,在捕获图像时,丢帧的数量不断增加。作为丢帧的临时解决方案——在您安装更多内存或购买新主板之前——请尝试以下操作
退出所有 X 功能并使用 fvwm 重新运行 Kino。
完全关闭 X。使用 dvgrab 拉取所有文件,然后使用以此方式抓取的文件通过 Kino 组装电影。
业余电影中的许多特效会分散观众的注意力。只有当您认为需要它们来传达您的想法时,才应应用此类效果。
带有 timfx 的 Kino 提供以下视频滤镜和效果:黑白、棕褐色、反色视频、镜像、万花筒、交换、色彩保持、模糊和柔焦。现代摄像机内置了此类滤镜,但我们在录制时很少使用它们,因为如果它们是实际图像的一部分,则很难撤消它们。在编辑阶段使用 Kino 进行此类过滤是一个更好的主意。
当您查看滤镜的名称时,通常很容易猜到滤镜的作用。查看以下图像以获取一些示例

图 2. 滤镜前的图像

图 3. 应用色彩保持滤镜后的图像

图 4. 滤镜前的图像

图 5. 应用从左到右滤镜后的图像
视频转场是连接两个场景的图像。最有趣的连接效果是图像亮度,因为您可以创建自己的滤镜。以下是连接示例;我们使用了来自 Kino 站点的标准文件。

图 6. 一种连接效果

图 7. 应用于模糊 = 1 的图像

图 8. 应用于模糊 = 0 的图像
其他转场选项包括淡入淡出、推入擦除、条形门擦除和差异。尝试所有这些选项,直到找到您喜欢的选项。
虽然可以使用数码摄像机在电视屏幕上播放导出的电影,但我们不建议浪费有限的摄像机资源。将全质量版本的电影保留在 DV 磁带上,以便您以后可以使用它。
因为在电视屏幕上显示时,人眼几乎无法检测到 MPEG 2 压缩电影和原始 DV 格式之间的差异,因此制作 DVD 以供一般观看更有用。
DVD 的结构并不简单。一般来说,可以制作包含电影、其他照片等的 DVD,但这又是另一篇文章的主题。使用 Kino,您可以构建一个简单的 DVD 结构,以便与独立 DVD 播放器一起使用。
从“导出”选项卡开始。选择“DV 管道”,然后选择工具“FFMPEG DVD-Video 导出”。在“配置文件”中,选择“输出标准 DVD-Video 目录(仅全部)”;在宽屏源的情况下,使用宽屏输出。接下来,键入不带任何文件扩展名的输出文件名。此名称将成为 DVD 目录树上的顶级名称。按“导出”。
导出可能需要数小时。我们喜欢在睡觉前开始这个过程。导出完成后,您将获得生成的 DVD 目录树(VIDEO_TS 和 AUDIO_TS),根据您的输入命名。然后,您可以使用 mplayer 或 xine 检查结果。
在刻录最终 DVD 之前,您应该制作图像。我们更喜欢使用以下命令,假设名称为 movie_dvd
mkisofs -dvd-video -o movie dvd.iso movie dvd
您必须刻录此图像;我们通常使用 growisofs 来完成此任务
growisofs -dvd-compat -Z /dev/dvd=movie dvd.iso
选项 -dvd-compat 用于提供最大的媒体兼容性。
然后,您可以为 DVD 标签设计自己的图像,打印出来并将此新 DVD 放入真实的 DVD 盒中。
如果您已将电影保存为 .dv 文件,则可以轻松地将其转换为 MPEG 4 视频并刻录到 CD。因为并非我们所有的朋友都是 Linux 用户,所以我们更喜欢导出为 .avi MPEG 4 文件。
为了提高视频质量,我们建议使用两步编码过程。对于第一步,使用
ffmpeg -i foo.dv -f dv -pass 1 -passlogfile foo -vcodec mpeg4 -g 250 -qscale 2 -bf 2 -acodec mp3 foo.avi
对于第二步,使用
ffmpeg -f dv -i foo.dv -s 640x480 -4mv -part -strict strictness -pass 2 -passlogfile foo -vcodec mpeg4 -g 250 -hq -bf 2 -b 1500 -acodec mp3 -ab 128 foo.avi
这两个步骤中的输入文件、输出文件和日志文件必须相同。此外,您必须在第二步中指定所需的比特率。您设置的比特率越大,您将获得的电影质量就越好。但是,我们无法建议一个值;它通常基于请求文件的大小。但是,您可以重复编码几次。从高比特率开始,如果您对大小不满意,请降低速率并重复。不要忘记随时检查质量。
处理文件需要一些时间。根据电影的大小,一个步骤可能需要五个多小时。在上面的示例中,我们使用了 PAL 源。如果您有 NTCS 而不是 PAL,请使用-g 300而不是-g 250。玩转这些选项,尽情享受吧!
Olexiy Tykhomyrov (tiger@ff.dsu.dp.ua) 自 1994 年以来一直使用 Linux。他在第聂伯罗彼得罗夫斯克国立大学实验物理系工作,教授物理和通信。他爱他的儿子米沙,米沙叫他老虎,因为他的一些学生害怕他。老虎喜欢游泳和旅行。
Denis Tonkonog,老虎的前学生,也在第聂伯罗彼得罗夫斯克国立大学工作,喜欢旅行和持枪钓鱼。朋友们叫他黑猫,但没有人解释为什么。可以通过电子邮件 denis@ff.dsu.dp.ua 与他联系。