Partilhar via


Usando o Detector de Multimédia

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize 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.]

[Esta API não é suportada e pode ser alterada ou indisponível no futuro.]

O detetor 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 o IMediaDet interface.

O detetor de mídia opera em um dos dois modos. Quando você cria uma instância do detetor 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 frame do poster, ele alterna para modo de captura de bitmap. No modo de captura de bitmap, o detetor de mídia é conectado 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 mudar o detetor de mídia de volta ao seu modo de partida. Portanto, obtenha todas as informações de fluxo necessárias antes de recuperar quadros de pôster ou crie novas instâncias do detetor de mídia para cada fluxo.

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

  1. Chame IMediaDet::put_Filename com o nome do ficheiro 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::put_CurrentStream. Em seguida, chame um ou mais dos seguintes métodos:

Para obter um quadro de cartaz, 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