Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A forrásfeloldó egy URL-címet vagy bájtfolyamot használ, és létrehozza a megfelelő médiaforrást a tartalomhoz. A forrásfeloldó létrehozásához hívja meg MFCreateSourceResolver. Ez a függvény egy IMFSourceResolver interfészmutatót ad vissza.
A forrásfeloldó szinkron és aszinkron metódusokkal is rendelkezik. Ha a fő alkalmazásszálból használja a forrásfeloldót, az aszinkron metódusok rugalmasabbá teszik a felhasználói felületet. A szinkron metódusok jelentős ideig blokkolhatnak, különösen akkor, ha a forrásfeloldónak meg kell nyitnia egy hálózati erőforrást.
A szinkron metódusok a következők:
Az aszinkron metódusok a következők:
Az aszinkron metódusok esetében mindegyik metódus rendelkezik egy megfelelő End... metódussal az aszinkron kérés befejezéséhez, valamint egy Mégse... metódussal egy függőben lévő kérés visszavonásához. A Media Foundation aszinkron metódusairól további információt Aszinkron visszahívási módszerekcímű témakörben talál.
Az alábbi példakód egy URL-címből hoz létre médiaforrást. Ez a példa a szinkron metódust használja.
// 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;
}
Kapcsolódó témakörök