Aufzeichnen von Videos in einer Windows Media-Datei
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
Um Videos aufzunehmen und in eine WMV-Datei (Windows Media Video) zu codieren, verbinden Sie den Aufnahmepin mit dem WM ASF Writer-Filter , wie im folgenden Diagramm dargestellt.
Die einfachste Möglichkeit zum Erstellen dieses Graphen besteht darin, MEDIASUBTYPE_Asf in der ICaptureGraphBuilder2::SetOutputFileName-Methode zu angeben:
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).
Der Wert MEDIASUBTYPE_Asf weist den Capture Graph Builder an, den WM ASF Writer-Filter als Dateisenke zu verwenden. Der Capture Graph Builder erstellt den Filter, fügt ihn dem Diagramm hinzu und ruft IFileSinkFilter::SetFileName auf, um den Namen der Ausgabedatei festzulegen. Es gibt einen Zeiger auf den Filter als ausgehenden Parameter zurück (
pASFWriter
im vorherigen Beispiel).
Verwenden Sie die IConfigAsfWriter-Schnittstelle im WM ASF Writer, um das Windows Media-Profil festzulegen. Sie müssen dies tun, bevor Sie pins am WM ASF Writer verbinden.
IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
// Configure the ASF Writer filter.
pConfig->Release();
}
Weitere Informationen zum Festlegen des Profils finden Sie unter Erstellen von ASF-Dateien in DirectShow.
Rufen Sie ICaptureGraphBuilder2::RenderStream auf, um den Erfassungsfilter mit dem ASF Writer zu verbinden:
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).
Jeder Eingabenadel im WM ASF Writer-Filter entspricht einem Stream im Windows Media-Profil. Sie müssen jede Pin verbinden, damit der Dateiinhalt mit dem Profil übereinstimmt.
Zugehörige Themen