Построение графов фильтров для записи ФАЙЛОВ ASF
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
При создании содержимого на основе Windows Media приложения обычно используют один из следующих сценариев:
- Преобразование или перекодирование содержимого из другого формата в формат Windows Media.
- Вставка содержимого, не основанного на Windows Media (собственные форматы потоков), в ASF-файлы.
- Сбор динамических данных и их немедленное кодирование в формате Windows Media.
Перекодирование ASF-файлов
Вы можете создать граф фильтра перекодирования файлов с помощью средства записи WM ASF различными способами. Самый простой способ — добавить модуль записи WM ASF в граф фильтра, а затем использовать метод IGraphBuilder::RenderFile для автоматической сборки графа.
Альтернативный способ — добавить каждый фильтр вручную к графу и подключить контакты. После добавления модуля записи WM ASF настройте его с помощью методов IConfigAsfWriter, если профиль по умолчанию не подходит, и подключите входные контакты модуля записи WM ASF к соответствующим выходным контактам в фильтрах вышестоящий.
На следующем рисунке показаны типичные конфигурации графа фильтров для модуля записи ASF WM.
Вставка собственных форматов потоков в ASF-файлы
По умолчанию фильтр записи WM ASF ожидает несжатые аудио- и видеопотоки на входных контактах и использует кодеки Windows Media Audio и Windows Media Video для сжатия потоков. Однако контейнер файлов ASF можно использовать для данных любого типа. Поместив цифровые мультимедийные данные в контейнер файлов ASF, вы можете добавлять функции, предоставляемые ASF, такие как метаданные и управление цифровыми правами (DRM), без необходимости перекодировать содержимое.
Чтобы создать ASF-файл, содержащий содержимое, не основанное на Windows Media, приложение должно сжать поток в графе фильтра вышестоящий модуля записи WM ASF и обойти механизм сжатия модуля записи WM ASF, вызвав IConfigAsfWriter2::SetParam следующим образом:
pConfigAsfWriter2->SetParam(AM_CONFIGASFWRITER_PARAM_DONTCOMPRESS,TRUE,0)
Затем настройте фильтр с нужным профилем. Очень важно, чтобы тип мультимедиа входного потока точно соответствовал формату в профиле. В некоторых случаях может потребоваться проверить формат входного потока и создать настраиваемый профиль для его соответствия.
При подключении модуля записи WM ASF к фильтру вышестоящий используйте метод IGraphBuilder::ConnectDirect. Не используйте для подключения фильтра методы интеллектуального подключения, такие как IGraphBuilder::Connect или IGraphBuilder::RenderFile, так как это приведет к отключению режима обхода сжатия фильтра.
Запись непосредственно с устройства в ASF-файл
При записи звука или видео непосредственно в ASF-файл диаграмма фильтра будет выглядеть примерно так, как показано ниже, в зависимости от типа используемого устройства захвата.
Дополнительные сведения о создании графов захвата видео и звука см. в следующих разделах:
Модуль записи WM ASF не будет работать, если не будут подключены все его контакты. Если вы настроите модуль записи WM ASF с использованием системного профиля по умолчанию (не рекомендуется) или любого профиля с аудио- и видеопотоками, он создаст контакт ввода для каждого потока, и каждый из этих контактов должен быть подключен. Если вы, например, не собираетесь захватывать звук, не забудьте настроить фильтр с профилем только для видео, чтобы не создавать аудио пин-код.
Связанные темы