Usando o Detector de Mídia

[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.]

O detector de mídia é um objeto auxiliar que pode recuperar informações sobre um arquivo, como o número de fluxos, seu tipo e sua duração. Ele também contém métodos para recuperar quadros de pôster de um fluxo de vídeo. Ele expõe a interface IMediaDet .

O detector de mídia opera em um dos dois modos. Quando você cria uma instância do detector de mídia, ela não é anexada a um arquivo de origem específico. Nesse modo, você pode recuperar informações de fluxo de vários arquivos de origem. No entanto, depois de usar o detector de mídia para obter um quadro de pôster, ele alterna para o modo de captura de bitmap. No modo de captura de bitmap, o detector de mídia é anexado a um fluxo de vídeo específico e os métodos de informações de fluxo não funcionam mais. Além disso, não há como alternar o detector de mídia de volta para o modo inicial. Portanto, obtenha as informações de fluxo necessárias antes de recuperar quadros de pôster ou crie novas instâncias do detector de mídia para cada fluxo.

Para obter informações de fluxo, faça o seguinte:

  1. Chame IMediaDet::p ut_Filename com o nome do arquivo de origem.
  2. Chame IMediaDet::get_OutputStreams para obter o número de fluxos na origem.
  3. Especifique um número de fluxo com IMediaDet::p ut_CurrentStream. Em seguida, chame um ou mais dos seguintes métodos:

Para obter um quadro de pôster, especifique o número do fluxo, como na etapa anterior. Em seguida, chame IMediaDet::GetBitmapBits, que copia um quadro de pôster em um buffer ou IMediaDet::WriteBitmapBits, que salva um quadro de pôster em um arquivo.

Trabalhando com fontes