Usando o Windows Media com os Serviços de Edição do DirectShow

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, 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.]

[Essa API não tem suporte e pode ser alterada ou indisponível no futuro.]

Esta seção descreve como usar o conteúdo baseado em Mídia do Windows em um aplicativo DES (DirectShow Editing Services ). Há dois cenários main:

  • Clipes de origem. Um projeto de DES pode conter clipes de áudio e vídeo de arquivos do Windows Media.
  • Formato de destino. O Windows Media é um formato ideal para a saída final de um projeto de edição de vídeo.

Para trabalhar com arquivos do Windows Media, o aplicativo deve fornecer um certificado de software, também chamado de chave. Ele faz isso implementando um objeto de provedor de chaves. O provedor de chaves é um objeto COM que expõe a interface IServiceProvider . Para obter informações sobre como implementar o provedor de chaves, consulte Desbloqueando o SDK de Formato de Mídia do Windows.

Para usar o DES com arquivos do Windows Media, os seguintes objetos DES exigem a chave de software:

  • O mecanismo de renderização, para visualização ou gravação de arquivo.

  • O objeto MediaDet, para obter quadros de vídeo ou tipos de mídia de arquivos ASF.

  • ! [Importante]

    Não use o Mecanismo de Renderização Inteligente para ler ou gravar arquivos do Windows Media. Sempre use o Mecanismo de Renderização Básica (CLSID_RenderEngine).

     

Para dar a um objeto a chave de software, consulte esse objeto para a interface IObjectWithSite e chame IObjectWithSite::SetSite com um ponteiro para o provedor de chaves. Por exemplo, o código a seguir fornece a chave de software para o mecanismo de renderização:

// Create your key provider, using an application-defined function:
IServiceProvider *pKey;
hr = MyCreateKeyProviderFunction(&pKey);  

// Query the Render Engine for IObjectWithSite.
IObjectWithSite *pOWS;
hr = pRenderEngine->QueryInterface(__uuidof(IObjectWithSite), 
    reinterpret_cast<void**>(&pOWS));
if (SUCCEEDED(hr))
{
    // Give it your key provider.
    hr = pOWS->SetSite(pKey);
    pOWS->Release();
}
pKey->Release();

Para usar clipes de origem do Windows Media em um projeto de DES, basta chamar IObjectWithSite::SetSite no mecanismo de renderização com um ponteiro para o provedor de chaves.

Para obter informações sobre como gravar arquivos do Windows Media, consulte Escrevendo um arquivo de mídia do Windows no DES.

Usando os Serviços de Edição do DirectShow