C++ 如何在DirectShow中使用FileWriter筛选器

C++ 如何在DirectShow中使用FileWriter筛选器,c++,directshow,C++,Directshow,我在使用filewriter筛选器时遇到问题。我不确定如何设置输出文件。 它有一个带有方法SetFileName的接口IFileSinkFilte。 我的问题是,我不知道如何设置它使用的AM_MEDIA_类型结构。 情况如下: typedef struct _MediaType { GUID majortype; GUID subtype; BOOL bFixedSizeSamples; BOOL bTemporalCompression; U

我在使用filewriter筛选器时遇到问题。我不确定如何设置输出文件。 它有一个带有方法SetFileName的接口IFileSinkFilte。 我的问题是,我不知道如何设置它使用的AM_MEDIA_类型结构。 情况如下:

typedef struct _MediaType {
  GUID     majortype;
  GUID     subtype;
  BOOL     bFixedSizeSamples;
  BOOL     bTemporalCompression;
  ULONG    lSampleSize;
  GUID     formattype;
  IUnknown *pUnk;
  ULONG    cbFormat;
  BYTE     *pbFormat;
} AM_MEDIA_TYPE;
我如何知道样本量

什么是格式bloock


如何获取其长度?

您不需要设置MediaType,只需将其设置为
NULL

也可以设置部分媒体类型。所以“0”表示所有内容,然后仅设置
majortype
subtype
。(例如,
MEDIATYPE\u流
MEDIASUBTYPE\u空

  • 使用Windows SDK中的GraphEdit,或类似的工具,如GraphStudionText
  • 以交互方式构建文件捕获拓扑以了解文件编写器的使用场景,有关说明,请参见
  • 查看上面第2项中图形中的媒体类型,然后以编程方式构建类似的图形

  • nullptr
    NULL
    好。当我将其设置为NULL时,我在0x00000000位置获得一个访问读取内存。这很奇怪,你真的在调用
    IFileSinkFilter::SetFileName(pathToVideo,NULL)?你能展示一些示例代码吗,也许不是mediatype,而是文件名的字符串?