IMFMediaSource 接口 (mfidl.h)

由媒体源对象实现。

媒体源是生成媒体数据的对象。 例如,数据可能来自视频文件、网络流或硬件设备,例如相机。 每个媒体源包含一个或多个流,每个流提供一种类型的数据,例如音频或视频。

继承

IMFMediaSource 接口继承自 IMFMediaEventGeneratorIMFMediaSource 也有以下类型的成员:

Methods

IMFMediaSource 接口具有这些方法。

 
IMFMediaSource::CreatePresentationDescriptor

检索媒体源的演示文稿描述符的副本。 应用程序使用演示文稿描述符选择流并获取有关源内容的信息。
IMFMediaSource::GetCharacteristics

检索媒体源的特征。
IMFMediaSource::P ause

暂停媒体源中的所有活动流。
IMFMediaSource::Shutdown

关闭媒体源并释放其正在使用的资源。
IMFMediaSource::Start

通过指定开始播放的位置来启动、查找或重启媒体源。
IMFMediaSource::Stop

停止媒体源中的所有活动流。

注解

在 Windows 8 中,此接口使用 IMFMediaSourceEx 进行扩展。

对于某些设备源(如相机或麦克风), IMFMediaSource 还实现了 IKsControl,用户模式应用程序可以使用该 IKsControl 向基础设备驱动程序发出 KSPROPERTY、KSEVENT 和 KSMETHOD作。

注释

此接口是可选的,可能不可用。 如果此接口不可用, QueryInterface 将返回E_NOINTERFACE。

通过调用 IMFSourceResolver::CreateObjectFromByteStreamIMFSourceResolver::CreateObjectFromURL 或这些方法的异步版本获取 IMFMediaSource 的实例。

以下示例演示如何使用 IMFSourceResolverIMFByteStream 获取 IMFMediaSource 的实例。

#include <wil.h>
#include <mfplat.h>
#include <mfidl.h>

HRESULT CreateMediaSourceFromStream(_In_ IMFByteStream* stream, _COM_Outptr_ IMFMediaSource** source)
{
    *source = nullptr;

    wil::com_ptr_nothrow<IMFSourceResolver> sourceResolver;
    RETURN_IF_FAILED(MFCreateSourceResolver(&sourceResolver));

    MF_OBJECT_TYPE objectType;
    wil::com_ptr_nothrow<IUnknown> sourceUnknown;
    RETURN_IF_FAILED(sourceResolver->CreateObjectFromByteStream(stream, nullptr, MF_RESOLUTION_MEDIASOURCE, nullptr, &objectType, &sourceUnknown));

    RETURN_IF_FAILED(sourceUnknown.copy_to(IID_PPV_ARGS(source)));
    return S_OK;
}

要求

Requirement 价值
最低支持的客户端 Windows Vista [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2008 [桌面应用 |UWP 应用]
目标平台 Windows操作系统
Header mfidl.h

另请参阅

IMFMediaEventGenerator

媒体基础接口

媒体源