Capture dans plusieurs fichiers

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Une fois que vous avez capturé une vidéo dans un fichier, vous pouvez basculer vers un nouveau fichier en arrêtant le graphique et en définissant le nom du fichier sur le filtre Enregistreur de fichiers. Appelez la méthode IFileSinkFilter::SetFileName sur l’enregistreur de fichiers. Vous pouvez obtenir un pointeur vers l’interface IFileSinkFilter lorsque vous générez le graphique, via le paramètre pSink de la méthode SetOutputFileName. Le code suivant illustre comment procéder :

IBaseFilter *pMux;
IFileSinkFilter *pSink
hr = pBuild->SetOutputFileName(&MEDIASUBTYPE_Avi, L"C:\\YourFileName.avi", 
    &pMux, &pSink);
if (SUCCEEDED(hr))
{
    hr = pBuild->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, 
        pCap, NULL, pMux);

    if (SUCCEEDED(hr))
    {
        pControl->Run();
        /* Wait awhile, then stop the graph. */
        pControl->Stop();
        // Change the file name and run the graph again.
        pSink->SetFileName(L"YourFileName02.avi", 0);
        pControl->Run();
    }
    pMux->Release();
    pSink->Release();
}

Capture de vidéo dans un fichier