Capture de vidéo dans un fichier Windows Media
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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.]
Pour capturer une vidéo et l’encoder dans un fichier Vidéo Windows Media (WMV), connectez la broche de capture au filtre enregistreur WM ASF , comme illustré dans le diagramme suivant.
Le moyen le plus simple de générer ce graphe consiste à spéculer MEDIASUBTYPE_Asf dans la méthode 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).
La valeur MEDIASUBTYPE_Asf indique à Capture Graph Builder d’utiliser le filtre Enregistreur ASF WM comme récepteur de fichiers. Capture Graph Builder crée le filtre, l’ajoute au graphique et appelle IFileSinkFilter::SetFileName pour définir le nom du fichier de sortie. Il retourne un pointeur vers le filtre en tant que paramètre sortant (
pASFWriter
dans l’exemple précédent).
Utilisez l’interface IConfigAsfWriter sur l’enregistreur WM ASF pour définir le profil Windows Media. Vous devez effectuer cette opération avant de connecter des broches sur l’enregistreur WM ASF.
IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
// Configure the ASF Writer filter.
pConfig->Release();
}
Pour plus d’informations sur la définition du profil, consultez Création de fichiers ASF dans DirectShow.
Appelez ICaptureGraphBuilder2::RenderStream pour connecter le filtre de capture à l’enregistreur 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).
Chaque broche d’entrée sur le filtre WM ASF Writer correspond à un flux dans le profil Windows Media. Vous devez connecter chaque broche afin que le contenu du fichier corresponde au profil.
Rubriques connexes