Функция 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 |