Aperçu de la vidéo (DirectShow)
[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 générer un graphe en préversion vidéo, appelez la méthode ICaptureGraphBuilder2::RenderStream comme suit :
ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder
// Initialize pBuild (not shown).
IBaseFilter *pCap; // Video capture filter.
/* Initialize pCap and add it to the filter graph (not shown). */
hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,
pCap, NULL, NULL);
Cet exemple suppose ce qui suit :
- pBuild a été initialisé, comme décrit dans À propos du Générateur de graphiques de capture.
- pCap a été initialisé en créant une instance du filtre de capture et en l’ajoutant au graphique de filtre, comme décrit dans Sélection d’un appareil de capture.
Le premier paramètre de la méthode ICaptureGraphBuilder2::RenderStream spécifie une catégorie de broche ; pour un graphique en préversion, utilisez PIN_CATEGORY_PREVIEW. Le deuxième paramètre spécifie un type de média, en tant que GUID de type principal. Pour la vidéo, utilisez MEDIATYPE_Video. Les appareils DV fournissent des éléments audio et vidéo entrelacés, pour lesquels le type de média est MEDIATYPE_Interleaved. (Pour plus d’informations sur la capture DV, consultez Digital Video in DirectShow.)
Le troisième paramètre est un pointeur vers l’interface IBaseFilter du filtre de capture. Les deux paramètres suivants ne sont pas nécessaires dans cet exemple. Ils sont utilisés pour spécifier des filtres supplémentaires qui peuvent être nécessaires pour restituer le flux. Si le dernier paramètre a la valeur NULL , capture graph builder sélectionne un convertisseur par défaut pour le flux, en fonction du type de média. Pour la vidéo, Capture Graph Builder utilise toujours le filtre Video Renderer comme convertisseur par défaut.
Notes
Dans Windows XP et versions ultérieures, bien que le générateur de rendu de mixage vidéo (VMR) soit le convertisseur vidéo par défaut pour les méthodes IGraphBuilder , il n’est pas le convertisseur par défaut pour la méthode RenderStream . Sur n’importe quelle plateforme, Capture Graph Builder utilise toujours l’ancien filtre Video Renderer, sauf indication contraire.
Bien que la catégorie de broches soit donnée en tant que PIN_CATEGORY_PREVIEW, peu importe si le filtre a réellement une épingle d’aperçu; il peut avoir une broche de port vidéo ou simplement une broche de capture. Dans les deux cas, Capture Graph Builder génère automatiquement le graphique approprié.
Le diagramme suivant montre le graphique le plus simple possible pour l’aperçu de la vidéo.
Dans ce diagramme, le filtre de capture a une broche d’aperçu, qui se connecte directement au convertisseur vidéo.
Si le filtre de capture n’a qu’une broche de capture, Capture Graph Builder insère un filtre Smart Tee , qui fractionne le flux en un flux de capture et un flux d’aperçu. Cela est décrit plus en détail dans La combinaison de la capture vidéo et de la préversion.
Dans certains cas, le flux vidéo doit passer par le filtre Mélangeur de superposition. Si c’est le cas, la méthode RenderStream l’ajoute automatiquement au graphique.
Rubriques connexes