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


Функция MFCreateASFStreamingMediaSink (wmcontainer.h)

Создает объект активации для приемника потоковой передачи ASF.

Приемник потоковой передачи ASF позволяет приложению записывать пакеты потоковой передачи Advanced Systems Format (ASF) в поток байтов HTTP.

Синтаксис

HRESULT MFCreateASFStreamingMediaSink(
  IMFByteStream *pIByteStream,
  IMFMediaSink  **ppIMediaSink
);

Параметры

pIByteStream

Указатель на объект потока байтов, в котором приемник мультимедиа ASF записывает потоковое содержимое.

ppIMediaSink

Получает указатель на интерфейс IMFMediaSink объекта приемника потоковой передачи ASF. Чтобы создать приемник мультимедиа, приложение должно вызвать IMFActivate::ActivateObject в полученном указателе. Вызывающий объект должен освободить указатель интерфейса.

Возвращаемое значение

Если эта функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Чтобы создать приемник потоковой передачи ASF в другом процессе, вызовите MFCreateASFStreamingMediaSinkActivate.

Приложение может получить указатель на объект ASF ContentInfo , вызвав IUnknown::QueryInterface для объекта приемника мультимедиа, полученного в параметре ppIMediaSink . Объект ContentInfo используется для задания параметров конфигурации кодировщика, предоставления свойств потока, предоставляемых профилем ASF, и добавления сведений о метаданных. Эти параметры конфигурации заполняют различные объекты заголовков ASF закодированного ФАЙЛА ASF. Дополнительные сведения см. в разделе
Задание свойств в объекте ContentInfo.

Примеры

В следующем примере кода показано, как создать приемник мультимедиа для источника ASF. В этом примере параметры конфигурации потока копируются из источника в объект ContentInfo, представляющий объект заголовка ASF выходного файла.

//  Creates an an instance of the ASF streaming sink.

HRESULT CreateASFStreamingSink(
    IMFMediaSource *pSource, 
    IMFByteStream  *pOutputByteStream, 
    IMFMediaSink   **ppMediaSink
    )
{
    IMFPresentationDescriptor* pSourcePD = NULL;
    IMFASFProfile* pASFProfile = NULL;;
    IMFMediaSink* pMediaSink = NULL;
    IMFASFContentInfo* pASFContentInfo = NULL;

    // Create the streaming media sink for the ASF file
    HRESULT hr = MFCreateASFStreamingMediaSink(pOutputByteStream, &pMediaSink);
    if (FAILED(hr))
    {
        goto done;
    }

    //
    // Transfer the ASF profile from the media source to the sink.
    //

    // Get the presentation descriptor from the source.
    hr = pSource->CreatePresentationDescriptor(&pSourcePD);
    if (FAILED(hr))
    {
        goto done;
    }

    // Convert the presentation descriptor to an ASF profile.
    hr = MFCreateASFProfileFromPresentationDescriptor(pSourcePD, &pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pMediaSink->QueryInterface(IID_PPV_ARGS(&pASFContentInfo));
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile on the sink.
    hr = pASFContentInfo->SetProfile(pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    *ppMediaSink = pMediaSink;
    (*ppMediaSink)->AddRef();

done:
    SafeRelease(&pSourcePD);
    SafeRelease(&pASFProfile);
    SafeRelease(&pASFContentInfo);
    SafeRelease(&pMediaSink);
    return hr;
}

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header wmcontainer.h
Библиотека Mf.lib
DLL Mf.dll

См. также раздел

MFCreateASFStreamingMediaSinkActivate

Функции Media Foundation