Partilhar via


Visão geral da arquitetura do Media Foundation

Este tópico descreve o design geral do Microsoft Media Foundation. Para obter informações sobre como usar o Media Foundation para tarefas de programação específicas, consulte Media Foundation Programming Guide.

O diagrama a seguir mostra uma exibição de alto nível da arquitetura do Media Foundation.

diagrama mostrando uma visão de alto nível da arquitetura do Media Foundation.

Media Foundation fornece dois modelos de programação distintos. O primeiro modelo, mostrado no lado esquerdo do diagrama, usa um pipeline de ponta a ponta para dados de mídia. O aplicativo inicializa o pipeline — por exemplo, fornecendo a URL de um arquivo a ser reproduzido — e, em seguida, chama métodos para controlar o streaming. No segundo modelo, mostrado no lado direito do diagrama, o aplicativo extrai dados de uma fonte ou os envia por push para um destino (ou ambos). Este modelo é particularmente útil se você precisar processar os dados, porque o aplicativo tem acesso direto ao fluxo de dados.

Primitivos e Plataforma

A partir da parte inferior do diagrama, os primitivos são objetos auxiliares usados em toda a API do Media Foundation.

  • Atributos são uma maneira genérica de armazenar informações dentro de um objeto, como uma lista de pares chave/valor.
  • Tipos de mídia descrevem o formato de um fluxo de dados de mídia.
  • Media buffers armazenam segmentos de dados de mídia, como quadros de vídeo e amostras de áudio, e são utilizados para transportar dados entre objetos.
  • Exemplos de multimédia são contentores para buffers de multimédia. Eles também contêm metadados sobre os buffers, como carimbos de data/hora.

As APIs do Media Foundation Platform fornecem algumas funcionalidades principais usadas pelo pipeline do Media Foundation, como callbacks assíncronos e filas de trabalho. Alguns aplicativos podem precisar chamar essas APIs diretamente; Além disso, você precisará deles se implementar uma fonte, transformação ou coletor personalizado para o Media Foundation.

Fluxo de mídia

O pipeline de mídia contém três tipos de objeto que geram ou processam dados de mídia:

  • Fontes de mídia introduzem dados no pipeline. Uma fonte de mídia pode obter dados de um arquivo local, como um arquivo de vídeo; a partir de um fluxo de rede; ou a partir de um dispositivo de captura de hardware.
  • Media Foundation transforma o processo dos (MFTs) para processar dados de um fluxo. Codificadores e decodificadores são implementados como MFTs.
  • Media Sinks consomem os dados; por exemplo, mostrando vídeo no visor, reproduzindo áudio ou gravando os dados em um arquivo de mídia.

Terceiros podem implementar suas próprias fontes, coletores e MFTs personalizados; por exemplo, para suportar novos formatos de arquivo de mídia.

O Media Session controla o fluxo de dados através do pipeline e lida com tarefas como controle de qualidade, sincronização de áudio/vídeo e resposta a alterações de formato.

Leitor de código-fonte e gravador de pia

O Source Reader e o Sink Writer fornecem uma maneira alternativa de usar os componentes básicos do Media Foundation (fontes de mídia, transformações e coletores de mídia). O leitor de origem hospeda uma fonte de mídia e zero ou mais decodificadores, enquanto o gravador de destino hospeda um destino de mídia e zero ou mais codificadores. Você pode usar o leitor de fonte para obter dados compactados ou não compactados de uma fonte de mídia e usar o gravador de destino para codificar dados e enviar os dados para um destino de mídia.

Observação

O leitor de origem e o gravador de destino estão disponíveis no Windows 7.

 

Esse modelo de programação dá ao aplicativo mais controle sobre o fluxo de dados e também dá ao aplicativo acesso direto aos dados da fonte.

Media Foundation: Conceitos Essenciais

Arquitetura da Media Foundation