MFCreateSinkWriterFromURL 函数 (mfreadwrite.h)

从 URL 或字节流创建接收器编写器。

语法

HRESULT MFCreateSinkWriterFromURL(
  [in]  LPCWSTR       pwszOutputURL,
  [in]  IMFByteStream *pByteStream,
  [in]  IMFAttributes *pAttributes,
  [out] IMFSinkWriter **ppSinkWriter
);

参数

[in] pwszOutputURL

一个以 null 结尾的字符串,其中包含输出文件的 URL。 此参数可以为 NULL。

[in] pByteStream

指向字节 流的 IMFByteStream 接口的指针。 此参数可以为 NULL。

如果此参数是有效的指针,则接收器编写器将写入提供的字节流。 (字节流必须是可写的。) 否则,如果 pByteStreamNULL,接收器编写器将创建名为 pwszOutputURL 的新文件。

[in] pAttributes

指向 IMFAttributes 接口的 指针。 可以使用此参数配置接收器编写器。 有关详细信息,请参阅 接收器编写器属性。 此参数可以为 NULL。

[out] ppSinkWriter

接收指向 IMFSinkWriter 接口的指针。 调用方必须释放接口。

返回值

此函数可以返回其中一个值。

返回代码 说明
S_OK
成功。
MF_E_NOT_FOUND
找不到指定的 URL。

注解

在调用此函数之前,调用 CoInitialize (Ex) MFStartup

此函数的前三个参数可以为 NULL;但是,只有某些组合有效:

说明 pwszOutputURL pByteStream pAttributes
指定没有 URL 的字节流。 NULL NULL 必需的 () 不得为 NULL
指定不带字节流的 URL。 非 null NULL 可选 (可以为 NULL) 。
同时指定 URL 和字节流。 NULL NULL 可选 (可以为 NULL) 。
 

pAttributes 参数在第一种情况下是必需的,其他情况下是可选的。

  • 案例 1:指定不带 URL 的字节流。 pAttributes 参数必须指向包含 MF_TRANSCODE_CONTAINERTYPE 特性的属性存储区。 接收器编写器使用 MF_TRANSCODE_CONTAINERTYPE 属性来确定要写入的文件容器的类型,例如 ASF 或 MP4。
  • 案例 2:指定不含字节流的 URL。 接收器编写器创建名为 pwszOutputURL 的新文件。 如果 pAttributes 指定具有 MF_TRANSCODE_CONTAINERTYPE 属性的属性存储区,则接收器编写器使用该特性来确定文件容器的类型。 否则,如果 MF_TRANSCODE_CONTAINERTYPE 属性不存在或 pAttributesNULL,则接收器编写器使用文件扩展名来选择容器类型;例如,ASF 文件的“.asf”。
  • 案例 3:指定 URL 和字节流。 接收器编写器写入字节流。 pwszOutputURL 中提供的 URL 仅供信息使用;接收器编写器不会创建新文件。 如果 pAttributes 指定具有 MF_TRANSCODE_CONTAINERTYPE 属性的属性存储区,则接收器编写器使用该特性来确定文件容器的类型。 否则,接收器编写器使用文件扩展名来选择容器类型。 在本例中,MF_TRANSCODE_CONTAINERTYPE 属性将替代 URL 文件扩展名。
如果安装了适用于 Windows Vista 的平台更新补充,则此函数在 Windows Vista 上可用。

要求

要求
最低受支持的客户端 适用于 Windows Vista 的 Windows 7、Windows Vista 和平台更新补充 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 mfreadwrite.h
Library Mfreadwrite.lib
DLL Mfreadwrite.dll

另请参阅

媒体基础函数