Acquisizione di video in un file Windows Media
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Per acquisire video e codificarlo in un file WINDOWS Media Video (WMV), connettere il pin di acquisizione al filtro WM ASF Writer , come illustrato nel diagramma seguente.
Il modo più semplice per compilare questo grafico consiste nell'specificare MEDIASUBTYPE_Asf nel metodo ICaptureGraphBuilder2::SetOutputFileName :
IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
&MEDIASUBTYPE_Asf, // Create a Windows Media file.
L"C:\\VidCap.wmv", // File name.
&pASFWriter, // Receives a pointer to the filter.
NULL); // Receives an IFileSinkFilter interface pointer (optional).
Il valore MEDIASUBTYPE_Asf indica a Capture Graph Builder di usare il filtro WM ASF Writer come sink di file. Capture Graph Builder crea il filtro, lo aggiunge al grafo e chiama IFileSinkFilter::SetFileName per impostare il nome del file di output. Restituisce un puntatore al filtro come parametro in uscita (
pASFWriter
nell'esempio precedente).
Usare l'interfaccia IConfigAsfWriter in WM ASF Writer per impostare il profilo Windows Media. È necessario eseguire questa operazione prima di connettere eventuali pin nel writer WM ASF.
IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
// Configure the ASF Writer filter.
pConfig->Release();
}
Per altre informazioni sull'impostazione del profilo, vedere Creazione di file ASF in DirectShow.
Chiamare ICaptureGraphBuilder2::RenderStream per connettere il filtro di acquisizione al writer ASF:
hr = pBuild->RenderStream(
&PIN_CATEGORY_CAPTURE, // Capture pin.
&MEDIATYPE_Video, // Video. Use MEDIATYPE_Audio for audio.
pCap, // Pointer to the capture filter.
0,
pASFWriter); // Pointer to the sink filter (ASF Writer).
Ogni pin di input nel filtro WM ASF Writer corrisponde a un flusso nel profilo Windows Media. È necessario connettere ogni pin, in modo che il contenuto del file corrisponda al profilo.
Argomenti correlati