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


Фильтр мультиплекса AVI

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

Фильтр AVI Mux принимает несколько входных потоков и чередует их в формате AVI. Фильтр использует отдельные входные контакты для каждого входного потока и один выходной контакт для потока AVI.

Приложения для захвата видео или разработки могут использовать этот фильтр для сохранения файлов на диск в формате AVI. Фильтр обычно подключается к фильтру модуля записи файлов , но он может подключаться к любому фильтру, входной контакт которого поддерживает интерфейсы IStream и IMemInputPin .

Метка Значение
Интерфейсы фильтра IBaseFilter, IConfigAviMux, IConfigInterleaving, IMediaSeeking, IPersistMediaPropertyBag, ISpecifyPropertyPages
Типы носителей входных закрепления Любой основной тип, соответствующий старому типу FOURCC или MEDIATYPE_AUXLine21Data. (Дополнительные сведения см. в разделе Класс FOURCCMap.)
  • Если основной тип — MEDIATYPE_Audio, формат должен быть FORMAT_WaveFormatEx.
  • Если основной тип — MEDIATYPE_Video, формат должен быть FORMAT_VideoInfo или FORMAT_DvInfo.
  • Если основной тип — MEDIATYPE_Interleaved, формат должен быть FORMAT_DvInfo.
Интерфейсы ввода-закрепления IAMStreamControl, IMemInputPin, IPin, IPropertyBag, IQualityControl
Типы носителей выходных закрепления MEDIATYPE_Stream, MEDIASUBTYPE_Avi
Интерфейсы вывода закрепления IPin, IQualityControl
Фильтрация CLSID CLSID_AviDest
CLSID страницы свойств CLSID_AviMuxProptyPage, CLSID_AviMuxProptyPage1
Исполняемый файл qcap.dll
Заслуга MERIT_DO_NOT_USE
Категория фильтра CLSID_LegacyAmFilterCategory

 

Комментарии

В следующих примечаниях описаны различные аспекты функциональности фильтра AVI Mux.

Маркеры

При создании фильтра AVI Mux у него есть один входной контакт. Когда каждый входной контакт подключен, фильтр создает новый входной контакт.

Свойства потока

Входные контакты поддерживают интерфейс IPropertyBag для настройки свойств в отдельных потоках. В настоящее время определено следующее свойство:

Свойство Описание
name Имя потока. Это свойство записывается как 'strn' блок.

 

Если фильтр запущен или приостановлен, метод IPropertyBag::Write возвращает VFW_E_WRONG_STATE.

Частота кадров

Если фильтр вышестоящий не указывает частоту кадров в элементе AvgTimePerFrame структуры VIDEOINFOHEADER, мультиплекс AVI использует метки времени для первого видеокадра. Формат файла AVI не поддерживает переменную частоту кадров.

Удаленные кадры

Фильтр AVI Mux вычисляет отброшенные кадры на основе времени носителя каждой выборки, если это возможно, или меток времени образца. Он записывает запись индекса нулевой длины для каждого удаляемого кадра.

IMediaSeeking

Фильтр AVI Mux реализует интерфейс IMediaSeeking следующим образом:

  • Метод GetCurrentPosition возвращает текущий ход выполнения мультиплексирования. Если вы перекодировали файл (медленнее, чем в режиме реального времени), это значение будет более точным, чем значение, возвращаемое диспетчером фильтров графов. Дополнительные сведения см. в разделе Примечания на справочной странице GetCurrentPosition.
  • Метод GetDuration запрашивает каждый фильтр вышестоящий и возвращает длительность самого длинного потока. Если какой-либо из этих фильтров завершается сбоем вызова GetDuration (или не поддерживает IMediaSeeking), мультиплекс AVI возвращает код сбоя и заполняет параметр pDuration максимальной продолжительностью. Однако значение pDuration в этом случае не обязательно равно длине самого длинного входного потока.
  • Мультиплекс AVI не реализует методы GetStopPosition, GetPositions, GetAvailable, GetRate или GetPreroll; Он также не реализует никакие методы Set* для поиска.

Расширения формата файлов AVI 2.0

В настоящее время DirectShow поддерживает следующие расширения формата файлов AVI 2.0:

  • Увеличенный размер файла AVI (более 1 ГБ)
  • Иерархическое индексирование

Дополнительные сведения см. в версии 1.02 статьи "Расширения формата файлов OpenDML AVI", опубликованной Подкомитетом по формату файлов OpenDML AVI M-JPEG.

Фильтры DirectShow