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


Использование компонента записи 'Sink Writer'

Обзор

Типы контейнеров файлов

Модуль записи приемника имеет встроенную поддержку нескольких типов контейнеров файлов. Полный список см. в разделе MF_TRANSCODE_CONTAINERTYPE. Вы можете поддерживать дополнительные типы контейнеров, создав настраиваемый медиасинк . Контейнер файлов указывается при создании нового экземпляра записи приемника.

Форматы потоков

Для каждого потока приложение должно указать следующее.

  • входной формат — это формат, который приложение отправляет в модуль записи приемника.
  • Формат выходных данных — это формат, который будет записан в файл.

Форматы входных и выходных данных можно сжимать или распаковывать. Модуль записи "синк" поддерживает следующие сочетания:

  • Несжатые входные данные с сжатыми выходными данными. Это типичный случай и используется для кодирования или перекодирования сценариев. Кодировщик Microsoft Media Foundation должен быть доступен, который принимает тип входных данных и кодирует его в выходной тип.
  • Сжатые входные данные с идентичными выходными данными. Используйте это сочетание для ремюкса файла без перекодирования.
  • Несжатые входные данные с одинаковыми выходными данными. Используйте это сочетание для записи несжатого звука или видео в контейнер файлов.

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

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

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

  • MFCreateSinkWriterFromURL принимает URL-адрес выходного файла или указатель на поток байтов. Эта функция создаёт медиасинк внутренним образом.
  • MFCreateSinkWriterFromMediaSink принимает указатель на приемник мультимедиа, который уже создан приложением.

Если вы используете один из встроенных приемников мультимедиа, то функция MFCreateSinkWriterFromURL предпочтительнее, так как вызывающему объекту не нужно настраивать приемник мультимедиа.

Метод MFCreateSinkWriterFromURL предоставляет несколько вариантов указания типа контейнера файлов. В самом простом случае функция использует расширение имени файла в URL-адресе для выбора контейнера файлов. Дополнительные сведения см. на странице ссылки на функцию.

Например, следующий код указывает имя файла "output.wmv" для URL-адреса. В зависимости от расширения имени файла синк райтер загружает приемник мультимедиа ASF для создания файла формата расширенных систем (ASF).

    HRESULT hr = MFCreateSinkWriterFromURL(L"output.wmv", NULL, NULL, &pSinkWriter);

В случае MFCreateSinkWriterFromMediaSink, тип файла определяется приемником мультимедиа.

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