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