IMFPMediaPlayer::CreateMediaItemFromObject 方法 (mfplay.h)
重要 废弃。 此 API 可能会从 Windows 的未来版本中删除。 应用程序应使用 媒体会话 进行播放。
从 对象创建媒体项。
语法
HRESULT CreateMediaItemFromObject(
[in] IUnknown *pIUnknownObj,
[in] BOOL fSync,
[in] DWORD_PTR dwUserData,
[out] IMFPMediaItem **ppMediaItem
);
parameters
[in] pIUnknownObj
指向对象的 IUnknown 接口的指针。 请参阅“备注”。
[in] fSync
如果 为 TRUE,则方法将阻止,直到它完成。 如果 为 FALSE,则该方法不会阻止并异步完成。
[in] dwUserData
要存储在媒体项中的应用程序定义值。 若要从媒体项中检索此值,请调用 IMFPMediaItem::GetUserData。
[out] ppMediaItem
接收指向 IMFPMediaItem 接口的指针。 调用方必须释放接口。 如果 fSync 为 TRUE,则此参数必须是有效的指针。 如果 bSync 为 FALSE,则此参数必须为 NULL。
返回值
该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
无效的参数。 |
|
请求无效。 当 fSync 为 FALSE 且应用程序未提供回调接口时,可能会发生此错误。 请参阅“备注”。 |
|
调用了对象的 Shutdown 方法。 |
注解
pIUnknownObj 参数必须指定下列值之一:
- 指向媒体源的指针。 媒体源公开 IMFMediaSource 接口。 调用方负责在媒体源上调用 IMFMediaSource::Shutdown 。
- 指向字节流的指针。 字节流公开 IMFByteStream 接口。 在内部, 方法调用 IMFSourceResolver::CreateObjectFromByteStream 方法从字节流创建媒体源。 因此,必须为字节流注册字节流处理程序。 有关字节流处理程序的详细信息,请参阅 方案处理程序和 Byte-Stream 处理程序。
CreateMediaItemFromObject 方法可以同步或异步调用:
- 如果 fSync 为 TRUE,则该方法同步完成。 IMFPMediaItem 指针在 ppMediaItem 参数中返回。
- 如果 fSync 为 FALSE,则该方法以异步方式完成。 操作完成后,将调用应用程序的 IMFPMediaPlayerCallback::OnMediaPlayerEvent 回调方法。 事件类型为 MFP_EVENT_TYPE_MEDIAITEM_CREATED。 事件数据包含新媒体项的 IMFPMediaItem 指针。
如果对 CreateMediaItemFromObject 进行多次异步调用,则不能保证这些调用按相同的顺序完成。 使用 dwUserData 参数将创建的媒体项与挂起的请求进行匹配。
配置源
如果 pIUnknownObj 指向字节流,可以通过执行以下步骤来配置媒体源:- 在 IMFPMediaPlayer 指针上调用 QueryInterface 以获取 IPropertyStore 接口。
- 调用 IPropertyStore::SetValue 以设置媒体源的属性。 有关配置属性的列表,请参阅 配置媒体源。 第三方媒体源可以定义自定义属性。
- 调用 CreateMediaItemFromObject 方法以创建媒体项。
要求
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | mfplay.h |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈