摘要
本文详细阐述了基于DirectShow核心框架的非线性编辑的基本原理,并提供 了一个编辑的源代码,演示如何拼接两个音视频文件,实现视频过渡效果,并预览。
编译环境 WindowsXP,VC6.0+sp5,DX9 SDK.
技术原理
DES (DirectShow Editing Services),是一套基于DirectShow核心框架的编程接口。DES的出现,简化了视频 编辑任务,弥补了DirectShow对于媒体文件非线性编辑支持的先天性不足。但是,就技术本 身而言,DES并没有超越DirectShow Filter架构,而只是DirectShow Filter的一种增强应用 。我们可以从下图中了解到DES在我们整个多媒体处理应用中的位置。
下面,我们举个 例子来看一下DES能够给我们带来些什么。假如我们现在有三个文件A、B和C,使用这三个文 件做成一个合成的文件。我们想取A的4秒钟的内容,紧接着取B的10秒钟的内容,再紧接着C 的5秒钟的内容。如果仅仅是这样,我们直接使用DirectShow Filter是不难实现的。(一般 情况下,应用程序级会维持各个文件的编辑信息,由应用程序根据这些信息动态创建/控制功 能单一的Filter Graph,以顺序对各个文件进行处理。)但是,如果我们的"创意 "是随时改变的,我们现在想让C在B之前出现,或者我们想取A的不同位置的10秒钟内容 ,或者我们想给整个合成的文件加上一段美妙的背景音乐。如果我们仍然直接使用 DirectShow Filter去实现,情况就变得很复杂了。然而,对于DES,这真的是小Case!(将所 有的编辑信息以DES提供的接口告诉DES,其它的如Filter Graph的创建/控制输出,就完全交 给DES来负责吧!这时候,DES创建的Filter Graph带有各个Source输出的控制功能,一般比 较复杂。)
如果我们使用DES,我们还可以得到如下的便利:
1. 基于时间线 (Timeline)的结构以及Track的概念,使得多媒体文件的组织、编辑变得直观而高效;
2. 支持即时的预览;
3. 视频编辑项目支持XML文档的形式保存;
4. 支持对视频/音频的效果处理,以及视频之间切换的过渡处理;
5. 可以直接使用DES 提供的100多种SMPTE过渡效果,以及MS IE自带的各种Transform、Transition组件;
6. 支持通过色调、亮度、RGB值或者alpha值进行图像的合成;
7. 自动对源 文件输出的视频帧率、音频的采样率进行调整,直接支持视频的缩放。
接下去,我们 来看一下DES的结构(Timeline模型),如下图所示: