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


Метод ICaptureGraphBuilder2::SetOutputFileName (strmif.h)

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Метод SetOutputFileName создает раздел записи файла графа фильтра.

Синтаксис

HRESULT SetOutputFileName(
  [in]  const GUID      *pType,
  [in]  LPCOLESTR       lpstrFile,
  [out] IBaseFilter     **ppf,
  [out] IFileSinkFilter **ppSink
);

Параметры

[in] pType

Указатель на GUID , представляющий либо подтип носителя выходных данных, либо идентификатор класса (CLSID) фильтра мультиплексора или фильтра записи файлов. Если указать подтип носителя, он должен быть одним из следующих:

Значение Описание
MEDIASUBTYPE_Avi Audio-Video Interleaved (AVI)
MEDIASUBTYPE_Asf Advanced Systems Format (ASF)

[in] lpstrFile

Указатель на строку расширенных символов, содержащую имя выходного файла.

[out] ppf

Адрес указателя, который получает интерфейс IBaseFilter мультиплексера .

[out] ppSink

Адрес указателя, получающего интерфейс IFileSinkFilter модуля записи файлов. Может иметь значение NULL.

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

Возвращает значение HRESULT . Ниже приведены возможные значения.

Код возврата Описание
S_OK
Успешно.
E_FAIL
Ошибка.
E_POINTER
Аргумент указателя NULL.

Комментарии

Этот метод создает фильтр мультиплексоров на основе значения параметра pType . Для AVI создается фильтр мультиплекса AVI. Для ASF создается модуль записи WM ASF. Для других значений он создает фильтр, определяемый идентификатором CLSID. Он добавляет мультиплексор в граф фильтра и возвращает указатель на интерфейс IBaseFilter в параметре ppf .

Если мультиплексор поддерживает интерфейс IFileSinkFilter , метод вызывает IFileSinkFilter::SetFileName , чтобы задать имя выходного файла, используя значение, указанное в параметре lpwstrFile . Если мультиплексор не поддерживает интерфейс IFileSinkFilter , метод добавляет фильтр записи файлов в граф фильтра, подключает мультиплексор к записи файлов и использует интерфейс IFileSinkFilter модуля записи файлов для вызова SetFileName. Если параметр pSink не имеет значения NULL, он получает указатель на интерфейс IFileSinkFilter .

Вы можете использовать указатель на фильтр мультиплексоров, возвращаемый в параметре ppf , в качестве параметра pSink в методе ICaptureGraphBuilder2::RenderStream .

Для настраиваемых фильтров мультиплексоров метод завершается сбоем, если фильтр не поддерживает подключение к выходному контакту до подключения входных контактов. Например, это ограничение имеет пример фильтра WavDest , включенный в пакет SDK.

Если метод выполнен успешно, интерфейс IBaseFilter , возвращаемый в параметре ppf , имеет неоплаченное число ссылок. Если метод завершается успешно и pSink не имеет значения NULL, интерфейс IFileSinkFilter также имеет неоплаченное число ссылок. Не забудьте освободить оба интерфейса, когда закончите использовать их.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)
Библиотека Strmiids.lib

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

Коды ошибок и успешного выполнения

Интерфейс ICaptureGraphBuilder2