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


Фильтр записи WM ASF (DirectShow)

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

Средство записи WM ASF — это фильтр-оболочка для объекта записи, предоставленного пакетом SDK для формата Windows Media™. Фильтр принимает переменное количество входных потоков и создает файл расширенного формата систем (ASF). Фильтр обрабатывает все сжатие и мультиплексирование (хотя механизм сжатия можно обойти). Средство записи WM ASF можно использовать в различных сценариях, включая запись цифрового видео (DV), повторную передачу звука и преобразование аудио-видеотрансляций (AVI) или MPEG-мультимедийных файлов для потоковой передачи сети. Этот фильтр предоставляет единственный способ создания аудиофайлов Microsoft® Windows Media™ и Видео Windows Media в Microsoft DirectShow.

Дополнительные сведения см. в статье "Создание файлов ASF в DirectShow".

Название Значение
Фильтры интерфейсов IAMFilterMiscFlags, IBaseFilter, IConfigAsfWriter, IConfigAsfWriter2, IFileSinkFilter2, IMediaSeeking, IPersistStream, IServiceProvider, ISpecifyPropertyPages, кроме того, фильтр предоставляет следующие интерфейсы пакета SDK для формата Windows Media: IWMIndexer2, IWMHeaderInfo, IWMWriterAdvanced2
Типы носителей входных закреплений Зависит от профиля ASF. Обычно несжатые типы аудио и видео, хотя фильтр принимает сжатые типы, если они соответствуют профилю ASF.
Интерфейсы входных закреплений IAMStreamConfig, IAMWMBufferPass, IMemInputPin, IPin, IServiceProviderКроме того, пин-код предоставляет следующий интерфейс пакета SDK для формата Windows Media: IWMStreamConfig2 (через IServiceProvider)
Типы носителей пин-кода вывода Неприменимо.
Интерфейсы пин-кода вывода Неприменимо.
Фильтрация CLSID CLSID_WMAsfWriter
Страница свойств CLSID CLSID_AsfWriterProperties
исполняемый объект Qasf.dll
Заслуга MERIT_DO_NOT_USE
Категория фильтра Не указано

 

Замечания

Для фильтра требуется пакет средств разработки программного обеспечения в формате Windows Media (SDK) и его базовые зависимости.

Количество входных закреплений в фильтре в зависимости от идентификатора профиля или профиля потока ASF.

Входные закрепления поддерживают один метод из интерфейса IAMStreamConfig : IAMStreamConfig::GetFormat. Все остальные методы возвращают E_NOTIMPL. Вызовите метод GetFormat для запроса целевого формата сжатия пин-кода, который определяется текущим профилем ASF. Используйте интерфейс IConfigAsfWriter для задания профиля.

Интерфейс IServiceProvider фильтра можно использовать для получения указателя на интерфейс IWMWriterAdvanced2, определенный в пакете SDK для формата Windows Media. Интерфейс IWMWriterAdvanced2 можно использовать для управления видео деинтерлакированием при перемешивание исходного видео. Чтобы задать режим деинтерлакации, вызовите IWMWriterAdvanced2::SetInputSetting. Для параметра dwInputNum используйте отсчитываемый от нуля индекс пин-кода ввода видео, как указано в интерфейсе IEnumPins.

В следующем примере показано, как запрашивать этот интерфейс:

// Assume that pAsfWriter is a valid IBaseFilter pointer.
IServiceProvider *pProvider = NULL;
IWMWriterAdvanced2 *pWMWA2 = NULL;

hr = pAsfWriter->QueryInterface(
    IID_IServiceProvider, 
    (void**)&pProvider
    );
if (SUCCEEDED(hr))
{
    hr = pProvider->QueryService(
        IID_IWMWriterAdvanced2,
        IID_IWMWriterAdvanced2, 
        (void**)&pWMWA2
        );
    pProvider->Release();
    if (SUCCEEDED(hr))
    {
        // Use pWMWA2. (Not shown.)
        pWMWA2->Release();
    }
}

Приложения не должны использовать ни один из методов IWMWriterAdvanced , наследуемых интерфейсом IWMWriterAdvanced2 . Вызов любого из этих методов может препятствовать работе фильтра.

Единственным режимом записи файлов, поддерживаемым этим фильтром, является AM_FILE_OVERWRITE. См. раздел IFileSinkFilter2::GetMode.

Когда среда выполнения пакета SDK для формата Windows Media отправляет WMT_STATUS сообщения в фильтр записи WM ASF, фильтр перенаправит их как события EC_WMT_EVENT.

Фильтры DirectShow