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


Вставка собственных форматов потоков в ASF-файлы (QASF)

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

По умолчанию модуль записи WM ASF ожидает несжатые аудио- и видеопотоки на входных контактах и использует пакет SDK для формата Windows Media для доступа к кодекам 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)

Затем настройте фильтр с нужным профилем. Важно, чтобы тип мультимедиа входного потока точно соответствовал формату в профиле. В некоторых случаях может потребоваться проверить формат входного потока и создать пользовательский профиль для его соответствия. Дополнительные сведения см. в статье Создание ASF-файлов с помощью сторонних кодеков.

При подключении модуля записи WM ASF к фильтру вышестоящий используйте метод IGraphBuilder::ConnectDirect. Не используйте для подключения фильтра методы интеллектуального подключения, такие как IGraphBuilder::Connect или IGraphBuilder::RenderFile , так как это отключит режим обхода фильтра.