Freigeben über


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.

Windows Media Capture Graph

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.

Aufzeichnen von Videos in einer Datei