Aracılığıyla paylaş


Kaynak Çözümleyici'yi kullanma

Kaynak çözümleyici bir URL veya bayt akışı alır ve bu içerik için uygun medya kaynağını oluşturur. Kaynak çözümleyiciyi oluşturmak için MFCreateSourceResolverçağırın. Bu işlev, bir IMFSourceResolver arabirim işaretçisi döndürür.

Kaynak çözümleyici hem zaman uyumlu hem de zaman uyumsuz yöntemlere sahiptir. Ana uygulama iş parçacığınızdan kaynak çözümleyiciyi kullanıyorsanız, zaman uyumsuz yöntemler kullanıcı arabiriminizi daha duyarlı hale getirebilir. Eşzamanlı yöntemler, özellikle kaynak çözümleyicinin bir ağ kaynağını açması gerekiyorsa, fark edilebilir bir süre engelleyebilir.

Zaman uyumlu yöntemler şunlardır:

Zaman uyumsuz yöntemler şunlardır:

Zaman uyumsuz yöntemler için her yöntemin, zaman uyumsuz isteği tamamlamak için karşılık gelen bir End... yöntemi ve bekleyen isteği iptal etmek için Cancel... yöntemi vardır. Media Foundation'daki zaman uyumsuz yöntemler hakkında daha fazla bilgi için bkz. Zaman Uyumsuz Geri Çağırma Yöntemleri.

Aşağıdaki kod örneği, BIR URL'den bir medya kaynağı oluşturur. Bu örnekte zaman uyumlu yöntemi kullanılır.

//  Create a media source from a URL.
HRESULT CreateMediaSource(PCWSTR sURL, IMFMediaSource **ppSource)
{
    MF_OBJECT_TYPE ObjectType = MF_OBJECT_INVALID;

    IMFSourceResolver* pSourceResolver = NULL;
    IUnknown* pSource = NULL;

    // Create the source resolver.
    HRESULT hr = MFCreateSourceResolver(&pSourceResolver);
    if (FAILED(hr))
    {
        goto done;
    }

    // Use the source resolver to create the media source.

    // Note: For simplicity this sample uses the synchronous method to create 
    // the media source. However, creating a media source can take a noticeable
    // amount of time, especially for a network source. For a more responsive 
    // UI, use the asynchronous BeginCreateObjectFromURL method.

    hr = pSourceResolver->CreateObjectFromURL(
        sURL,                       // URL of the source.
        MF_RESOLUTION_MEDIASOURCE,  // Create a source object.
        NULL,                       // Optional property store.
        &ObjectType,        // Receives the created object type. 
        &pSource            // Receives a pointer to the media source.
        );
    if (FAILED(hr))
    {
        goto done;
    }

    // Get the IMFMediaSource interface from the media source.
    hr = pSource->QueryInterface(IID_PPV_ARGS(ppSource));

done:
    SafeRelease(&pSourceResolver);
    SafeRelease(&pSource);
    return hr;
}

Kaynak Çözümleyici