Принудительная вставка Key-Frame
[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Он был заменен средством чтения исходного кода и модуля записи приемника. Средство чтения исходного кода и модуль записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код по возможности использовал средство чтения исходного кода и модуль записи приемника вместо пакета SDK для Windows Media Format 11. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Кодек Windows Media Video 9 поддерживает принудительная вставка ключевых кадров. При передаче примера в модуль записи можно указать, что он должен быть закодирован как ключевой кадр.
Чтобы принудительно вставить ключевой кадр для примера, выполните следующие действия.
- Выделите буфер для хранения примера и получите указатель на интерфейс INSSBuffer , содержащий буфер, вызвав метод IWMWriter::AllocateSample.
- Получите расположение и размер буфера, созданного на шаге 1, вызвав МЕТОД INSSBuffer::GetBufferAndLength.
- Скопируйте пример данных в расположение буфера, убедившись, что переданный пример помещается в выделенный буфер. В зависимости от источника примеров для копирования данных можно использовать различные функции. Например, при копировании потока из файла AVI можно использовать функцию AVI AVI, AVIStreamRead.
- Обновите объем данных, используемых в буфере, чтобы отразить фактический размер выборки, вызвав МЕТОД INSSBuffer::SetLength.
- Получите указатель на интерфейс INSSBuffer3 , вызвав МЕТОД INSSBuffer::QueryInterface.
- Задайте пример в качестве принудительного ключевого кадра, вызвав метод INSSBuffer3::SetProperty , чтобы задать свойство WM_SampleExtensionGUID_OutputCleanPoint. Это свойство является логическим значением; Задайте для него значение TRUE.
- Передайте интерфейс буфера в модуль записи вместе с входным номером и временем выборки с помощью метода IWMWriter::WriteSample .
Связанные темы