ICaptureGraphBuilder2::AllocCapFile 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 AllocCapFile
将捕获文件预分配为指定大小。 为了获得最佳结果,请始终捕获到大于捕获数据大小的已碎片整理、预先分配的捕获文件。
语法
HRESULT AllocCapFile(
[in] LPCOLESTR lpstr,
[in] DWORDLONG dwlSize
);
参数
[in] lpstr
指向宽字符字符串的指针,该字符串包含要创建或调整其大小的文件的名称。
[in] dwlSize
要分配的文件的大小(以字节为单位)。
返回值
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
如果文件为只读,此方法将失败。
最好分配尽可能多的空间,理想情况下,超出所需的空间。 但是,这可能会导致文件非常大,其中包含相对较少的数据。 例如,1 GB (GB) 捕获文件可能包含几 MB 的捕获视频。 使用 ICaptureGraphBuilder2::CopyCaptureFile 方法将数据复制到新文件中。 该方法仅复制数据,并忽略原始文件的空部分。
如果使用此方法预先分配文件,请在值为 0 的文件编写器筛选器上调用 IFileSinkFilter2::SetMode 。 如果筛选器设置为 AM_FILE_OVERWRITE,则会删除预分配的文件。 请注意,某些文件编写器筛选器不支持模式 0。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |