Создание топологии для Two-Pass кодировки Windows Media
Режимы двухфакторного кодирования поддерживаются определенными кодировщиками Windows Media и Media Foundation на уровне конвейера. Приложение должно настроить и настроить топологию кодирования, аналогичную топологии в однопрохходном кодировании, но в режиме двухпроходного кодирования приложение должно дважды запустить сеанс кодирования. На первом проходе кодировщик собирает сведения о содержимом потока. На втором проходе с помощью сведений, собранных на первом проходе, создается окончательный выходной файл. При двойной обработке примеров для потока кодирование с двумя проходами оптимизирует процесс кодирования и создает файлы с кодировкой более высокого качества. Режимы двухпрохожего кодирования нельзя использовать в динамических потоках.
Media Foundation поддерживает следующие режимы двухфакторной кодировки:
- Кодировка без ограничений переменной скорости
- Кодирование с переменной скоростью с максимальным ограничением
Создание топологии кодирования для двухпроходного кодирования аналогично однопроходным режимам. В следующем списке показаны основные различия.
- Конфигурация кодировщика должна включать свойство MFPKEY_PASSESUSED , для которых задано значение 2, и свойство MFPKEY_VBRENABLED для VARIANT_TRUE. Это позволяет отфильтровать возможности кодировщика до двухпрохожих режимов. Если вы используете объекты активации, передайте эти свойства в MFCreateWMAEncoderActivate или MFCreateWMVEncoderActivate.
- Для первого прохода используйте фиктивный приемник мультимедиа в выходном узле, так как примеры, созданные на этом проходе, не добавляются в окончательный файл.
- Для второго прохода запросите у кодировщика необходимые свойства после кодирования и замените фиктивный узел приемника мультимедиа на приемник мультимедиа ASF с заданными этими свойствами.
Дополнительные сведения о настройке топологии кодирования см. в статье Руководство. Однопроходное кодирование Windows Media.
В следующей процедуре приведены шаги по кодированию содержимого Windows Media в контейнере ASF с помощью режима двухпрохожего кодирования.
Создайте источник мультимедиа для указанного с помощью сопоставителя источника.
Перечисление потоков в источнике мультимедиа.
Создайте приемник мультимедиа ASF и добавьте приемники потоков в зависимости от потоков в источнике мультимедиа, которые необходимо закодировать.
Создайте приемник мультимедиа.
Создайте кодировщики Windows Media для потоков в выходном файле.
Настройте кодировщики с помощью двухпрохасных свойств кодирования.
Создайте топологию частичного кодирования, подключив источник, кодировщики и приемник мультимедиа.
Создайте экземпляр сеанса мультимедиа и задайте топологию в сеансе мультимедиа.
Запустите первый проход кодирования, управляя сеансом мультимедиа и получая все соответствующие события из сеанса мультимедиа.
Закройте и завершите сеанс кодирования.
Запросите у кодировщика следующие свойства в зависимости от типа кодирования:
Создайте приемник файлов ASF и добавьте необходимые приемники потоков в зависимости от потоков, которые вы хотите включить в окончательный выходной файл.
Задайте свойства кодировщика, полученные на шаге 11 в приемнике файлов.
Замените приемник мультимедиа в выходном узле только что созданным приемником файлов.
Создайте экземпляр сеанса мультимедиа и задайте обновленную топологию в сеансе мультимедиа.
Запустите второй проход кодирования, управляя сеансом мультимедиа и получая все соответствующие события из сеанса мультимедиа.
Дождитесь события MEEndOfPresentation из сеанса мультимедиа и в обработчике событий получите значения свойств кодировки от кодировщика и задайте их в приемнике файлов. Дополнительные сведения см. в разделе Обновление свойств кодирования в приемнике файлов статьи Руководство. Однопроходное кодирование Windows Media.
Закройте и завершите сеанс кодирования.
Связанные темы