Usando extensões de mídia (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente ]

Este tópico descreve o que são as extensões de mídia e como usá-las em seu aplicativo do Tempo de Execução do Windows.

Introdução

As extensões de mídia adicionam funcionalidade ao pipeline de mídia no aplicativo do Tempo de Execução do Windows. Algumas extensões possíveis são efeitos de áudio e vídeo, efeitos de captura, transcodificação, DRM (Gerenciamento de Direitos Digitais), suporte a novos decodificadores e codificadores ou um coletor de captura personalizado, para apenas citar algumas. Algumas extensões estão incluídas no sistema, como o efeito VideoStabilization e o DRM MediaProtectionManager. A funcionalidade que não está incluída no sistema pode ser adicionada usando extensões de mídia personalizadas.

Para obter um exemplo detalhado que usa as extensões de mídia personalizadas, veja o exemplo de extensão de mídia. Esse exemplo mostra como criar e habilitar um efeito de vídeo em escala de cinza personalizado, um decodificador personalizado e como usar o efeito VideoStabilization interno.

Outro exemplo que usa as extensões de mídia é o Exemplo de comunicação em tempo real.

Pipeline de mídia e adicionando e removendo efeitos e extensões

O Pipeline do Media Foundation consiste em Origens de Mídia, Media Foundation Transforms, como efeitos de vídeo, codificadores e decodificadores, e Coletores de Mídia. Há várias maneiras de adicionar efeitos e extensões a um aplicativo da Windows Store. O MediaExtensionManager permite que você substitua a origem da mídia e os codificadores e decodificadores. Os métodos nos objetos de reprodução, captura e transcodificação permitem que você adicione e remova efeitos. A classe MediaCapture permite que você adicione um link personalizado.

Como adicionar e remover efeitos dos objetos de reprodução de áudio e vídeo depende da linguagem de programação usada.

Para aplicativos do Tempo de Execução do Windows em JavaScript, use msInsertVideoEffect, msInsertAudioEffect e msClearEffects. Esses métodos são expostos nas marcas HTML5 audio e video.

Para aplicativos do Tempo de Execução do Windows em C# ou Visual Basic, use MediaElement.AddAudioEffect, MediaElement.AddVideoEffect e RemoveAllEffects.

Para adicionar e remover efeitos para transcodificação, use MediaTranscoder.AddVideoEffect e MediaTranscoder.AddAudioEffect, MediaTranscoder.ClearEffects.

Para adicionar e remover efeitos para captura de mídia, use MediaCapture.AddEffectAsync e MediaCapture.ClearEffectsAsync.

Para registrar manipuladores de esquema, manipuladores de fluxo de bytes, codificadores e decodificadores de áudio, codificadores e decodificadores de vídeo , use o MediaExtensionManager.

Para adicionar um coletor personalizado à captura de mídia, use MediaCapture.StartRecordToCustomSinkAsync e MediaCapture.StartPreviewToCustomSinkAsync.

Há suporte ao DRM por meio do MediaProtectionManager.

Extensão interna

O Tempo de Execução do Windows fornece um efeito interno para estabilizar vídeo tremido, como vídeo capturado de uma câmera portátil.

O tópico Como adicionar estabilização de vídeo descreve como usar o efeito VideoStabilization em um aplicativo do Tempo de Execução do Windows em JavaScript. O Exemplo de extensão de mídia também mostra como usar o efeito VideoStabilization.

Extensões personalizadas

É possível usar a extensão de mídia personalizados para adicionar nova funcionalidade a um pipeline de mídia. Por exemplo, você poderia criar um efeito de vídeo personalizado para converter o vídeo em escala de cinza, como no exemplo de extensão de mídia. Ou crie uma extensão personalizada para adicionar suporte aos formatos de vídeo e áudio que não tem suporte nativo pelo sistema.

A criação de uma extensão personalizada consiste em duas partes. A primeira é gravar o componente Media Foundation e a segunda é encapsular esse componente em um objeto de extensão de mídia do Tempo de Execução do Windows. Para obter um exemplo detalhado que cria diversas extensões de mídia personalizadas, veja o exemplo de extensão de mídia.

Uma extensão de mídia consiste em um objeto híbrido que implementa as interfaces COM (Component Object Model) e do Tempo de Execução do Windows. As interfaces COM interagem com o pipeline Microsoft Media Foundation. As interfaces do Tempo de Execução do Windows ativam o componente e interagem com o aplicativo da Windows Store.

Na maioria dos casos, é recomendável que você use o Visual C++ com Extensões de Componente (C++/CX) para interagir com o Tempo de Execução do Windows. Mas, no caso de componentes híbridos que implementam ambas as interfaces COM e Tempo de Execução do Windows, como as Extensões de Mídia, isso não e possível. C++/CX só pode criar objetos do Tempo de Execução do Windows. Assim, para objetos híbridos, é recomendável que você use a Biblioteca de Modelos C++ do Tempo de Execução do Windows para interagir com o Tempo de Execução do Windows. A Biblioteca de Modelos C++ do Tempo de Execução do Windows possui suporte limitado à implementação de interfaces COM.

As extensões personalizadas só estão acessíveis para o aplicativo no qual eles são criados e registrados. Elas não estão acessíveis para outros aplicativos.

Hh700365.wedge(pt-br,WIN.10).gifEtapas de alto nível para criar um efeito personalizado.

  1. Crie uma extensão Media Foundation nativa e implemente IMediaExtension.
  2. Registre e ative a extensão.
  3. Adicione a extensão ao aplicativo no pipeline de mídia.

Para obter mais informações sobre a criação de extensão de mídia do Media Foundation em aplicativos do Tempo de Execução do Windows, veja o Tutorial: Criando um aplicativo da Windows Store usando WRL e Media Foundation e o Exemplo de extensão de mídia.

Tópicos relacionados

Exemplo de extensão de mídia

Exemplo de transcodificação de mídia

Exemplo de comunicação em tempo real

Criando um aplicativo da Windows Store usando WRL e Media Foundation

Transformações Media Foundation

Como habilitar efeitos na marca de vídeo

Como adicionar estabilização de vídeo