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


Создание топологии для 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 с помощью режима двухпрохожего кодирования.

  1. Создайте источник мультимедиа для указанного с помощью сопоставителя источника.

  2. Перечисление потоков в источнике мультимедиа.

  3. Создайте приемник мультимедиа ASF и добавьте приемники потоков в зависимости от потоков в источнике мультимедиа, которые необходимо закодировать.

  4. Создайте приемник мультимедиа.

  5. Создайте кодировщики Windows Media для потоков в выходном файле.

  6. Настройте кодировщики с помощью двухпрохасных свойств кодирования.

  7. Создайте топологию частичного кодирования, подключив источник, кодировщики и приемник мультимедиа.

  8. Создайте экземпляр сеанса мультимедиа и задайте топологию в сеансе мультимедиа.

  9. Запустите первый проход кодирования, управляя сеансом мультимедиа и получая все соответствующие события из сеанса мультимедиа.

  10. Закройте и завершите сеанс кодирования.

  11. Запросите у кодировщика следующие свойства в зависимости от типа кодирования:

    Тип кодирования Имя свойства
    Кодировка без ограничений переменной скорости MFPKEY_PASSESUSED
    MFPKEY_VBRENABLED
    MFPKEY_BAVG
    MFPKEY_RAVG
    Кодирование с переменной скоростью с максимальным ограничением MFPKEY_PASSESUSED
    MFPKEY_VBRENABLED
    MFPKEY_BAVG
    MFPKEY_RAVG
    MFPKEY_BMAX
    MFPKEY_RMAX

     

  12. Создайте приемник файлов ASF и добавьте необходимые приемники потоков в зависимости от потоков, которые вы хотите включить в окончательный выходной файл.

  13. Задайте свойства кодировщика, полученные на шаге 11 в приемнике файлов.

  14. Замените приемник мультимедиа в выходном узле только что созданным приемником файлов.

  15. Создайте экземпляр сеанса мультимедиа и задайте обновленную топологию в сеансе мультимедиа.

  16. Запустите второй проход кодирования, управляя сеансом мультимедиа и получая все соответствующие события из сеанса мультимедиа.

  17. Дождитесь события MEEndOfPresentation из сеанса мультимедиа и в обработчике событий получите значения свойств кодировки от кодировщика и задайте их в приемнике файлов. Дополнительные сведения см. в разделе Обновление свойств кодирования в приемнике файлов статьи Руководство. Однопроходное кодирование Windows Media.

  18. Закройте и завершите сеанс кодирования.

Компоненты ASF уровня конвейера