DirectShow媒体流缓冲技术:实现类TiVo功能
1. DirectShow流缓冲概述
在Windows XP Service Pack 1发布后,DirectShow新增了两个过滤器来处理媒体流的缓冲播放,即Stream Buffer Engine Sink过滤器和Stream Buffer Engine Source过滤器。这两个过滤器会取代通常在过滤器图表中看到的渲染器和捕获过滤器。
媒体流(如果考虑音频和视频可能在不同的流中通过过滤器图表,则可能有多个流)会通过过滤器图表并发送到Stream Buffer Engine Sink过滤器。该过滤器将流写入一系列磁盘文件。另一个过滤器,即Stream Buffer Engine Source过滤器,从Stream Buffer Engine Sink过滤器创建的文件中读取流,并将它们向下游传递给渲染器。
1.1 两个独立的过滤器图表
DirectShow要求创建两个完全独立的过滤器图表,而不是一个带有单独流的单一过滤器图表。这是因为这两个过滤器图表是相互独立的,向一个过滤器图表发送的控制消息(暂停、运行和停止)不会以任何方式影响另一个。
创建缓冲DirectShow应用程序的步骤如下:
1. 创建一个过滤器图表,它接收捕获流(可能来自摄像机、电视调谐器、网络摄像头等),并通过Stream Buffer Engine Sink将其写出。
2. 创建第二个过滤器图表,使用Stream Buffer Engine Source作为捕获过滤器,将这些流传递给渲染器。
1.2 过滤器图表的独立性优势
由于这两个过滤器图表是独