Использование модуля записи приемника
Общие сведения
Типы контейнеров файлов
Модуль записи приемника имеет встроенную поддержку нескольких типов контейнеров файлов. Полный список см. в разделе MF_TRANSCODE_CONTAINERTYPE. Вы можете поддерживать дополнительные типы контейнеров, написав пользовательский приемник мультимедиа. Контейнер файлов указывается при создании нового экземпляра модуля записи приемника.
Форматы потоков
Для каждого потока приложение должно указать следующее.
- Формат входных данных — это формат, который приложение отправляет в модуль записи приемника.
- Формат выходных данных — это формат, который будет записан в файл.
Форматы входных и выходных данных могут быть сжаты или несжаты. Модуль записи приемника поддерживает следующие сочетания:
- Несжатые входные данные со сжатыми выходными данными. Это типичный случай, который используется для сценариев кодирования или перекодирования. Должен быть доступен кодировщик Microsoft Media Foundation, который принимает входной тип и кодирует тип вывода.
- Сжатые входные данные с идентичными выходными данными. Используйте это сочетание для реминга файла без перекодирования.
- Несжатые входные данные с идентичными выходными данными. Используйте это сочетание для записи несжатого звука или видео в контейнер файлов.
Модуль записи приемника не поддерживает изменение размера видео, преобразование частоты кадров или повторную выборку звука, если только эти функции не предоставляются кодировщиком. В противном случае приложение может использовать цифровые обработчики сигналов для преобразования входных данных перед отправкой данных в
Создание модуля записи приемника
Существует две функции, которые создают модуль записи приемника:
- MFCreateSinkWriterFromURL принимает URL-адрес выходного файла или указатель на поток байтов. Эта функция создает приемник мультимедиа внутри системы.
- MFCreateSinkWriterFromMediaSink принимает указатель на приемник мультимедиа, который уже был создан приложением.
Если вы используете один из встроенных приемников мультимедиа, предпочтительнее использовать функцию MFCreateSinkWriterFromURL , так как вызывающей стороны не нужно настраивать приемник мультимедиа.
Метод MFCreateSinkWriterFromURL предоставляет несколько вариантов для указания типа контейнера файлов. В простейшем случае функция использует расширение имени файла в URL-адресе для выбора контейнера файлов. Дополнительные сведения см. на странице справочника по функциям.
Например, следующий код указывает имя файла output.wmv для URL-адреса. В зависимости от расширения имени файла модуль записи приемника загрузит приемник мультимедиа ASF для создания файла ASF в формате Advanced Systems Format (ASF).
HRESULT hr = MFCreateSinkWriterFromURL(L"output.wmv", NULL, NULL, &pSinkWriter);
В случае MFCreateSinkWriterFromMediaSink тип файла определяется приемником мультимедиа.
Связанные темы