Capturar um arquivo DV tipo 1
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído pelo MediaPlayer, IMFMediaEngine e Captura de áudio/vídeo no Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o MediaPlayer, o IMFMediaEngine e a Captura de áudio/vídeo no Media Foundation em vez do 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.]
Um arquivo AVI DV tipo 1 contém um único fluxo intercalado. Para capturar um arquivo tipo 1 durante a visualização, use o grafo de filtro mostrado no diagrama a seguir.
Os filtros neste gráfico incluem:
- O filtro Smart Tee divide o DV intercalado em um fluxo de captura e um fluxo de visualização. Ambos os fluxos contêm os mesmos dados intercalados.
- O AVI Mux e o Gravador de Arquivos gravam o fluxo intercalado no disco.
- O Divisor DV divide o fluxo intercalado em um fluxo de vídeo DV e um fluxo de áudio. Ambos os fluxos são renderizados para visualização.
- O decodificador de vídeo DV decodifica o fluxo de vídeo DV para visualização.
Crie este gráfico da seguinte maneira:
ICaptureGraphBuilder2 *pBuilder; // Capture graph builder.
IBaseFilter *pDV; // DV capture filter (MSDV)
IBaseFilter *pAviMux // Avi Mux filter.
// Initialize pDV (not shown).
// Create and initialize the Capture Graph Builder (not shown).
// Create the file-writing section of the graph.
hr = pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi,
OLESTR("C:\\Example1.avi"), &pAviMux, 0);
// Render the capture stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved,
pDV, 0, pAviMux);
// Render the preview stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Interleaved,
pDV, 0, 0);
// Remember to release all interfaces.
- Chame ICaptureGraphBuilder2::SetOutputFileName para conectar o filtro AVI Mux ao filtro Gravador de Arquivos.
- Chame ICaptureGraphBuilder2::RenderStream com a categoria de pino PIN_CATEGORY_CAPTURE para renderizar o fluxo de captura. O Construtor de Graph do Capture insere automaticamente o filtro Smart Tee.
- Chame RenderStream novamente, mas com a categoria de pino PIN_CATEGORY_PREVIEW, para renderizar o fluxo de visualização. Ignore esta chamada se não quiser visualizar o vídeo.
Para ambas as chamadas para RenderStream, o tipo de mídia é MEDIATYPE_Interleaved, o que significa vídeo DV intercalado. Nesse código, o Construtor de Graph de Captura adiciona automaticamente todos os filtros necessários, exceto o filtro de captura MSDV.
Tópicos relacionados