Udostępnij przez


Obsługa wielu języków

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Source Reader i Sink Writer. Czytnik źródła i Zapis urządzenia końcowego zostały zoptymalizowane pod kątem Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał Source Reader i Sink Writer zamiast Windows Media Format 11 SDK, 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.]

Można obsługiwać wiele języków zarówno w strumieniach, jak i w metadanych. Podstawową obsługą wielu języków w zestawie SDK formatu Windows Media jest interfejs IWMLanguageList, który utrzymuje listę obsługiwanych języków. Lista języków zawiera każdy obsługiwany język z przypisanym indeksem, który jest używany w różnych obiektach w pakiecie SDK przy obsłudze wielu języków.

Metoda IWMLanguageList::AddLanguageByRFC1766String dodaje język do listy. Języki już na liście można zidentyfikować, uzyskując łączną liczbę języków za pomocą IWMLanguageList::GetLanguageCount, a następnie przechodząc przez języki, wywołując IWMLanguageList::GetLanguageDetails dla każdego z nich. Indeks języka ma wartość zero.

Aby skonfigurować wzajemne wykluczanie według języka

Konfigurowanie prostego obiektu wzajemnego wykluczania według języka jest bardzo proste. Każdy strumień jest teraz skojarzony z językiem. Język skojarzony ze strumieniem można ustawić przy użyciu IWMStreamConfig3::SetLanguage. Po skonfigurowaniu wszystkich wzajemnie wykluczających się strumieni wystarczy utworzyć obiekt wzajemnego wykluczania, tak jak w przypadku dowolnego innego typu. Następnie wywołaj IWMMutualExclusion::SetType, przekazując CLSID_WMMUTEX_Language jako parametr dla typu.

Strumienie, które wzajemnie wykluczają się według języka, stają się bardziej skomplikowane, gdy wyłączne strumienie również wzajemnie wykluczają się według szybkości transmisji bitów. W takim przypadku należy używać wzajemnie wykluczających się rekordów, wykonując następujące kroki:

  1. Utwórz obiekt wzajemnego wykluczenia dla strumieni różnych szybkości transmisji bitów w każdym języku. Aby uzyskać więcej informacji na temat tworzenia obiektu wzajemnego wykluczania według szybkości bitów, zobacz Using Multiple Bit Rate Mutual Exclusion.
  2. Utwórz obiekt wzajemnego wykluczenia. Wywołaj IWMMutualExclusion::SetType i przekaż CLSID_WMMUTEX_Language, aby określić wyłączność według języka.
  3. Uzyskaj wskaźnik do interfejsu IWMMutualExclusion2 obiektu wzajemnego wykluczania utworzonego w kroku 2, wywołując metodę QueryInterface interfejsu IWMMutualExclusion.
  4. Wywołaj metodę IWMMutualExclusion2::AddRecord raz dla każdego języka, aby utworzyć rekordy strumienia, które będą się wzajemnie wykluczać.
  5. Dla każdego rekordu utworzonego w kroku 4 dodaj strumienie odpowiedniego języka z wywołaniami do IWMMutualExclusion2::AddStreamForRecord.

Odczytywanie plików w wielu językach

Obiekt czytelnika udostępnia metody identyfikowania dostępnych języków strumieni w pliku. Liczbę obsługiwanych języków dla danych wyjściowych można pobrać, wywołując IWMReaderAdvanced4::GetLanguageCount. Następnie możesz pobrać szczegółowe informacje o każdym języku poprzez wywołania IWMReaderAdvanced4::GetLanguage.

Język do odtwarzania można określić, przekazując indeks tego języka do czytnika za pomocą wywołania funkcji IWMReaderAdvanced2::SetOutputSetting. Spowoduje to wybranie określonego języka przy zachowaniu automatycznego wyboru strumienia dla innych obiektów wzajemnego wykluczania w pliku.

tematy zaawansowane

Interfejs IWMLanguageList

interfejs IWMMutualExclusion

IWMMutualExclusion2 Interface

Interfejs IWMReaderAdvanced2

IWMReaderAdvanced4 interfejs

interfejs IWMStreamConfig3