Udostępnij przez


Przypisywanie formatów danych wyjściowych

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Source Reader i Sink Writer. Oprogramowanie do odczytu źródeł oraz oprogramowanie do zapisu ujścia zostały zoptymalizowane dla 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.]

Niektóre koderów mogą dekompresować dane multimediów cyfrowych do kilku nieskompresowanych formatów. Wszystkie obsługiwane formaty dla określonych danych wyjściowych można znaleźć przy użyciu czytnika asynchronicznego lub czytnika synchronicznego.

Aby sprawdzić wszystkie dostępne formaty danych wyjściowych, wykonaj następujące kroki. Te procedury są identyczne zarówno dla czytnika asynchronicznego, jak i czytnika synchronicznego. Gdy nazwy interfejsów różnią się, metody synchronicznego czytnika są wymienione w nawiasach po metodach czytnika asynchronicznego.

  1. Utwórz obiekt czytnika i załaduj plik do odczytu. Aby uzyskać więcej informacji, zobacz Tworzenie czytnika i otwieranie pliku (lub Tworzenie synchronicznego czytnika i otwieranie pliku).

  2. Określ dane wyjściowe, dla których chcesz znaleźć dostępne formaty. Jeśli nie wiesz jeszcze, których danych wyjściowych chcesz użyć, możesz zidentyfikować dane wyjściowe w pliku przy użyciu procedur w Do identyfikowania liczb wyjściowych.

  3. Pobierz łączną liczbę dostępnych formatów dla żądanych danych wyjściowych, wywołując IWMReader::GetOutputFormatCount (lub IWMSyncReader::GetOutputFormatCount).

  4. Przeglądaj dostępne formaty po kolei, wykonując następujące kroki dla każdego z nich:

    • Pobierz interfejs IWMOutputMediaProps dla bieżącego formatu wyjściowego, wywołując IWMReader::GetOutputFormat (lub IWMSyncReader::GetOutputFormat).

    • Pobierz strukturę WM_MEDIA_TYPE dla formatu wyjściowego, wykonując dwa wywołania IWMMediaProps::GetMediaType. Wykonaj pierwsze wywołanie, aby uzyskać rozmiar struktury, a następnie przydziel pamięć i przekaż wskaźnik do przydzielonej pamięci podczas drugiego wywołania.

    • Znajdź podtyp nośnika formatu wyjściowego w pliku WM_MEDIA_TYPE.subtype.

    • W przypadku wideo, jeśli bieżący podtyp jest formatem, którego chcesz użyć do danych wyjściowych, przerwij pętlę. W przeciwnym razie przejdź do następnej iteracji.

      W przypadku dźwięku należy sprawdzić wartości w strukturze WAVEFORMATEX w odniesieniu do specyfikacji. WM_MEDIA_TYPE.pbFormat wskazuje na strukturę WAVEFORMATEX używaną dla wyjść audio.

  5. Po znalezieniu żądanych danych wyjściowych ustaw go do użycia z czytnikiem, wywołując IWMReader::SetOutputProps (lub IWMSyncReader::SetOutputProps). Musisz przekazać wskaźnik do interfejsu IWMOutputMediaProps uzyskanego w pierwszym etapie pętli.

interfejs IWMMediaProps

interfejs IWMOutputMediaProps

interfejs IWMReader

Interfejs IWMSyncReader

praca z danymi wyjściowymi