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


Использование файловых приемников

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

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

Вы можете создать собственные приемники файлов, чтобы получить более полный контроль над тем, как приемник записывает файл. Вы также можете получить доступ к приемнику файла записи по умолчанию, созданному модулем записи в ответ на вызов SetOutputFilename.

Создание приемников файлов

Чтобы создать приемник файлов и добавить его в модуль записи, выполните следующие действия.

  1. Создайте приемник, вызвав функцию WMCreateWriterFileSink .
  2. Укажите имя файла для приемника, вызвав IWMWriterFileSink::Open.
  3. Добавьте приемник файла в модуль записи, вызвав IWMWriterAdvanced::AddSink.
  4. Напишите обычным способом.
  5. После завершения записи приемник автоматически закроет файл.

Остановка и запуск приемников файлов

После начала операций записи можно остановить запись в приемник файлов, вызвав IWMWriterFileSink2::Stop.

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

Вы можете возобновить запись в приемник файлов, вызвав IWMWriterFileSink2::Start. И Stop , и Start используют время презентации, чтобы контролировать приблизительное время выполнения команды. Вы можете использовать методы IWMWriterFileSink3 , чтобы получить больший контроль над временем запуска и остановки.

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

Как правило, приемник файлов закрывается автоматически. Если запись в приемник завершена, но операции записи в другие приемники продолжаются, необходимо явно закрыть приемник, чтобы сэкономить ресурсы. Чтобы закрыть приемник файлов, вызовите IWMWriterFileSink2::Close.

Получение статистики приемника

Размер и длительность файла для открытого приемника можно получить, вызвав IWMWriterFileSink2::GetFileSize и IWMWriterFileSink2::GetFileDuration соответственно.

Интерфейс IWMWriterFileSink

Интерфейс IWMWriterFileSink2

Интерфейс IWMWriterFileSink3

Объект приемника файлов модуля записи

Запись ASF-файлов