Общие сведения о кодировании в Media Foundation

В этом разделе представлен обзор API кодирования файлов, предоставляемых в Microsoft Media Foundation.

Терминология

Кодирование — это общий термин, охватывающий несколько отдельных процессов:

  1. Кодирование аудио- или видеопотока в сжатые форматы. Например, кодирование видеопотока в видео H.264.
  2. Мультиплексирование (мультиплексирование) одного или нескольких потоков в один поток байтов. Как правило, в первую очередь кодируются входящие потоки. Этот шаг может включать пакетизацию закодированных потоков.
  3. Запись мультиплексированного байтового потока в файл, например MP4 или ASF. Кроме того, мультиплексный поток можно отправить по сети.

На следующей схеме показаны эти три процесса:

Схема, показывающая процессы кодирования и мультиплексирования

Варианты этого процесса включают перекодирование и ремюсинг:

  • Перекодирование означает декодирование существующего файла, повторное кодирование потоков и повторное мультиплексирование закодированных потоков. Перекодирование может быть выполнено для преобразования файла из одного типа кодирования в другой; Например, для преобразования видео H.264 в Windows Media Video (WMV). Это также можно сделать, чтобы изменить закодированную скорость передачи; размер видеокадра; частота кадров; или другие параметры формата.
  • Remultiplexing или remuxing означает демультлексирование файла и повторное мультиплексирование потоков без шага декодирования или кодирования. Это можно сделать, чтобы изменить способ мультиплексирования аудио- и видеопакетов, удалить поток или объединить потоки из двух разных исходных файлов.
  • Преобразование — это особый случай перекодирования, когда скорость передачи меняется без изменения типа сжатия. Например, можно преобразовать файл с высокой скоростью в файл с более низкой скоростью. Типичный сценарий, в котором может использоваться трансрация, — синхронизация мультимедийного содержимого с компьютера на переносное устройство. Если переносное устройство не поддерживает высокую скорость передачи, файл может быть транстирован перед копированием на переносное устройство.

На следующей блок-схеме показан процесс перекодирования.

схема, показывающая процесс перекодирования

На следующей блок-схеме показан процесс ремюсинга.

схема, показывающая процесс ремюсинга

В этой документации иногда используется термин кодировка для включения как перекодирования, так и ремюсинга. Если важно различать их, в документации будет учитываться разница.

См. также: Media Foundation: Основные понятия.

Архитектура кодирования Media Foundation

На самом низком уровне архитектуры Media Foundation для кодирования используются следующие типы компонентов:

  • Для перекодирования источники мультимедиа используются для демультирования исходного файла.
  • В процессе кодирования преобразования Media Foundation используются для декодирования и кодирования потоков.
  • В процессе мультиплексирования приемники мультимедиа используются для мультиплексирования потоков и записи мультиплексированного потока в файл или сеть.

На следующей схеме показан поток данных между этими компонентами в сценарии перекодирования:

схема, показывающая компоненты, используемые при перекодирование

Большинство приложений не будут использовать эти компоненты напрямую. Вместо этого приложение будет использовать ИНТЕРФЕЙСы API более высокого уровня, которые управляют этими компонентами более низкого уровня. Media Foundation предоставляет два API более высокого уровня для кодирования:

Сеанс мультимедиа

Сеанс мультимедиа предоставляет комплексный конвейер, который перемещает данные из источника мультимедиа, через кодеки и, наконец, в приемник мультимедиа. Приложение управляет сеансом мультимедиа и получает события состояния из сеанса мультимедиа.

Средство чтения источника и модуль записи приемника

Средство чтения исходного кода заключает в оболочку источник мультимедиа и при необходимости декодеры. Он предоставляет либо закодированные, либо декодированные примеры приложения. Модуль записи приемника заключает в оболочку приемник мультимедиа и при необходимости кодировщики. Приложение передает примеры в модуль записи приемника.

На следующей схеме показан сеанс мультимедиа:

схема, показывающая, как сеанс мультимедиа выполняет перекодирование

API перекодировки (синий затеняемый прямоугольник) — это набор ИНТЕРФЕЙСов API, представленных в Windows 7, которые упрощают настройку сеанса мультимедиа для кодирования.

На следующей схеме показаны средство чтения исходного кода и модуль записи приемника:

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

Кодировка и разработка файлов

Программирование Media Foundation: основные понятия