Partilhar via


Dar suporte a várias linguagens

[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador do Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador do Coletor em vez do SDK do Windows Media Format 11, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Você pode dar suporte a vários idiomas em fluxos e em metadados. O núcleo do suporte a vários idiomas no SDK do Formato de Mídia do Windows é a interface IWMLanguageList , que mantém uma lista dos idiomas com suporte. A lista de idiomas fornece a cada idioma com suporte um índice, que é usado em vários objetos no SDK ao lidar com os vários idiomas.

O método IWMLanguageList::AddLanguageByRFC1766String adiciona uma linguagem à lista. Você pode identificar os idiomas que já estão na lista obtendo o número total de idiomas com IWMLanguageList::GetLanguageCount e, em seguida, fazendo loop pelos idiomas que chamam IWMLanguageList::GetLanguageDetails para cada um. O índice de idioma é baseado em zero.

Para configurar a exclusão mútua por linguagem

Configurar um objeto de exclusão mútua simples por linguagem é muito simples. Cada fluxo agora está associado a um idioma. O idioma associado a um fluxo pode ser definido usando IWMStreamConfig3::SetLanguage. Depois que todos os fluxos mutuamente exclusivos forem configurados, basta criar um objeto de exclusão mútua como faria para qualquer outro tipo. Em seguida, chame IWMMutualExclusion::SetType passando CLSID_WMMUTEX_Language para o tipo.

Os fluxos mutuamente exclusivos por linguagem tornam-se mais complicados quando os fluxos exclusivos também são mutuamente exclusivos por taxa de bits. Nesse caso, você deve usar registros mutuamente exclusivos executando as seguintes etapas:

  1. Crie um objeto de exclusão mútua para os fluxos de taxas de bits diferentes em cada idioma. Para obter mais informações sobre como criar um objeto de exclusão mútua por taxa de bits, consulte Usando a exclusão mútua de taxa de bits múltipla.
  2. Crie um objeto de exclusão mútua. Chame IWMMutualExclusion::SetType e passe CLSID_WMMUTEX_Language para especificar a exclusividade por idioma.
  3. Obtenha um ponteiro para a interface IWMMutualExclusion2 do objeto de exclusão mútua criado na etapa 2 chamando o método QueryInterface de IWMMutualExclusion.
  4. Chame o método IWMMutualExclusion2::AddRecord uma vez para cada idioma, para criar registros de fluxo que serão mutuamente exclusivos.
  5. Para cada registro criado na etapa 4, adicione os fluxos do idioma apropriado com chamadas para IWMMutualExclusion2::AddStreamForRecord.

Para ler arquivos com vários idiomas

O objeto reader fornece métodos para identificar os idiomas disponíveis de fluxos em um arquivo. Você pode recuperar o número de idiomas com suporte para uma saída chamando IWMReaderAdvanced4::GetLanguageCount. Em seguida, você pode recuperar detalhes sobre cada idioma com chamadas para IWMReaderAdvanced4::GetLanguage.

Você pode especificar o idioma a ser reproduzido passando o índice desse idioma para o leitor com uma chamada para IWMReaderAdvanced2::SetOutputSetting. Isso selecionará o idioma especificado enquanto mantém a seleção automática de fluxo para quaisquer outros objetos de exclusão mútua no arquivo.

Tópicos Avançados

IWMLanguageList Interface

IWMMutualExclusion Interface

IWMMutualExclusion2 Interface

IWMReaderAdvanced2 Interface

IWMReaderAdvanced4 Interface

IWMStreamConfig3 Interface