Udostępnij przez


Aby wymusić wstawienie Key-Frame

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez czytnik źródła i zapis ścieku . Czytnik źródła i zapisujnik ujścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał czytnika źródeł i modułu zapisywania ujścia zamiast zestawu SDK windows Media Format 11, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Kodek Windows Media Video 9 obsługuje wstawianie wymuszonych ramek kluczowych. Po przekazaniu próbki do składnika zapisującego można określić, że musi ona być zakodowana jako klatka kluczowa .

Aby wymusić wstawienie klatki kluczowej dla próbki, wykonaj następujące kroki.

  1. Przydziel bufor do przechowywania próbki i pobierz wskaźnik do interfejsu INSSBuffer, który zawiera bufor, wywołując IWMWriter::AllocateSample.
  2. Pobierz lokalizację i rozmiar buforu utworzonego w kroku 1, wywołując INSSBuffer::GetBufferAndLength.
  3. Skopiuj przykładowe dane do lokalizacji buforu, upewniając się, że próbka przekazana będzie mieścić się w przydzielonym buforze. W zależności od źródła przykładów można użyć różnych funkcji do skopiowania danych. Jeśli na przykład kopiujesz strumień z pliku AVI, możesz użyć funkcji AVI, AVIStreamRead.
  4. Zaktualizuj ilość danych używanych w buforze, aby odzwierciedlić rzeczywisty rozmiar próbki, wywołując INSSBuffer::SetLength.
  5. Uzyskaj wskaźnik do interfejsu INSSBuffer3, wywołując INSSBuffer::QueryInterface.
  6. Ustaw przykład jako wymuszoną ramkę klucza, wywołując metodę INSSBuffer3::SetProperty, aby ustawić właściwość WM_SampleExtensionGUID_OutputCleanPoint. Ta właściwość jest typu logicznego; ustaw ją na PRAWDA.
  7. Przekaż interfejs buforu do modułu zapisywania wraz z numerem wejściowym i czasem próbki przy użyciu metody IWMWriter::WriteSample.

IWMWriter::WriteSample

do pisania przykładów

Kodowanie zmiennej szybkości bitów (VBR)

Zapisywanie plików ASF