Поделиться через


Настройка источника мультимедиа

При использовании резолвера источника для создания источника мультимедиа, вы можете указать хранилище атрибутов, содержащее настройки конфигурации. Эти свойства будут использоваться для инициализации источника мультимедиа. Набор поддерживаемых свойств зависит от реализации источника мультимедиа. Не каждый источник мультимедиа определяет свойства конфигурации.

В следующей таблице перечислены свойства конфигурации для источников мультимедиа, предоставляемых в Media Foundation. Сторонние источники мультимедиа могут определять собственные настраиваемые свойства.

Источник мультимедиа Свойства
Сетевой источник См. характеристики источника сети.
Источник мультимедиа ASF

 

Чтобы настроить источник, выполните следующие действия.

  1. Для создания нового хранилища свойств вызовите PSCreateMemoryPropertyStore. Эта функция возвращает указатель IPropertyStore.
  2. Вызовите IPropertyStore::SetValue, чтобы задать одно или несколько свойств конфигурации.
  3. Вызовите одну из функций создания сопоставителя источника, таких как IMFSourceResolver::CreateObjectFromURL, и передайте указатель IPropertyStore в параметр pProps.
// Creates a media source from a URL.

HRESULT CreateMediaSource(
    PCWSTR pszURL, 
    IPropertyStore *pConfig,    // Optional, can be NULL
    IMFMediaSource **ppSource
    )
{
    IMFSourceResolver* pSourceResolver = NULL;
    IUnknown* pSource = NULL;

    // Create the source resolver.
    HRESULT hr = MFCreateSourceResolver(&pSourceResolver);

    // Use the source resolver to create the media source.
    if (SUCCEEDED(hr))
    {
        MF_OBJECT_TYPE ObjectType;

        DbgLog(L"CreateObjectFromURL");

        hr = pSourceResolver->CreateObjectFromURL(
            pszURL,                     
            MF_RESOLUTION_MEDIASOURCE,  // Create a media source.
            pConfig,                    // Configuration properties.
            &ObjectType,                // Receives the object type. 
            &pSource            
            );

        DbgLog(L"CreateObjectFromURL - FINISHED");

    }

    if (SUCCEEDED(hr))
    {
        hr = pSource->QueryInterface(IID_PPV_ARGS(ppSource));
    }

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

Сопоставитель источника передает указатель IPropertyStore непосредственно обработчику схемы или обработчику потока байтов, создающим источник. Сопоставитель источника не пытается проверить свойства.

Как правило, эти свойства используются для расширенных параметров. Если вы не предоставляете хранилище свойств, источник мультимедиа по-прежнему должен работать правильно с параметрами по умолчанию.

резолвер источника