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 接口的指针。 调用方必须释放接口。 如果 fSyncTRUE,则此参数必须是有效的指针。 如果 bSyncFALSE,则此参数必须为 NULL

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_INVALIDARG
无效的参数。
MF_E_INVALIDREQUEST
请求无效。 当 fSyncFALSE 且应用程序未提供回调接口时,可能会发生此错误。 请参阅“备注”。
MF_E_SHUTDOWN
调用了对象的 Shutdown 方法。

注解

pIUnknownObj 参数必须指定下列值之一:

此方法不会将媒体项排队播放。 若要将项排队以便播放,请调用 IMFPMediaPlayer::SetMediaItem

CreateMediaItemFromObject 方法可以同步或异步调用:

  • 如果 fSyncTRUE,则该方法同步完成。 IMFPMediaItem 指针在 ppMediaItem 参数中返回。
  • 如果 fSyncFALSE,则该方法以异步方式完成。 操作完成后,将调用应用程序的 IMFPMediaPlayerCallback::OnMediaPlayerEvent 回调方法。 事件类型为 MFP_EVENT_TYPE_MEDIAITEM_CREATED。 事件数据包含新媒体项的 IMFPMediaItem 指针。
首次调用 MFPCreateMediaPlayer 以创建 MFPlay 播放器对象时,将设置回调接口。 如果未提供回调接口, 则 fSync 参数必须为 TRUE。 否则, CreateMediaItemFromObject 返回 MF_E_INVALIDREQUEST

如果对 CreateMediaItemFromObject 进行多次异步调用,则不能保证这些调用按相同的顺序完成。 使用 dwUserData 参数将创建的媒体项与挂起的请求进行匹配。

配置源

如果 pIUnknownObj 指向字节流,可以通过执行以下步骤来配置媒体源:
  1. IMFPMediaPlayer 指针上调用 QueryInterface 以获取 IPropertyStore 接口。
  2. 调用 IPropertyStore::SetValue 以设置媒体源的属性。 有关配置属性的列表,请参阅 配置媒体源。 第三方媒体源可以定义自定义属性。
  3. 调用 CreateMediaItemFromObject 方法以创建媒体项。
如果 pIUnknownObj 指向媒体源,则可以在创建该源时对其进行配置。

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 mfplay.h

另请参阅

IMFPMediaPlayer

使用 MFPlay 播放音频/视频