Partager via


Méthode ICaptureGraphBuilder2 ::SetOutputFileName (strmif.h)

[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.]

La SetOutputFileName méthode crée la section d’écriture de fichier du graphique de filtre.

Syntaxe

HRESULT SetOutputFileName(
  [in]  const GUID      *pType,
  [in]  LPCOLESTR       lpstrFile,
  [out] IBaseFilter     **ppf,
  [out] IFileSinkFilter **ppSink
);

Paramètres

[in] pType

Pointeur vers un GUID qui représente le sous-type de média de la sortie ou l’identificateur de classe (CLSID) d’un filtre de multiplexeur ou d’un filtre d’enregistreur de fichiers. Si vous spécifiez un sous-type de média, il doit s’agir de l’un des éléments suivants :

Valeur Description
MEDIASUBTYPE_Avi AVI (Audio-Video Interleaved)
MEDIASUBTYPE_Asf ASF (Advanced Systems Format)

[in] lpstrFile

Pointeur vers une chaîne de caractères larges qui contient le nom du fichier de sortie.

[out] ppf

Adresse d’un pointeur qui reçoit l’interface IBaseFilter du multiplexeur.

[out] ppSink

Adresse d’un pointeur qui reçoit l’interface IFileSinkFilter de l’enregistreur de fichiers. Peut être NULL.

Valeur retournée

Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.

Code de retour Description
S_OK
Réussite.
E_FAIL
Échec.
E_POINTER
Argument pointeur NULL .

Remarques

Cette méthode crée un filtre de multiplexeur basé sur la valeur du paramètre pType . Pour AVI, il crée le filtre AVI Mux. Pour ASF, il crée l’enregistreur ASF WM. Pour les autres valeurs, elle crée le filtre identifié par le CLSID. Il ajoute le multiplexeur au graphique de filtre et retourne un pointeur vers son interface IBaseFilter dans le paramètre ppf .

Si le multiplexeur prend en charge l’interface IFileSinkFilter , la méthode appelle IFileSinkFilter ::SetFileName pour définir le nom du fichier de sortie, en utilisant la valeur indiquée dans le paramètre lpwstrFile . Si le multiplexeur ne prend pas en charge l’interface IFileSinkFilter , la méthode ajoute le filtre enregistreur de fichiers au graphique de filtre, connecte le multiplexeur au writer de fichiers et utilise l’interface IFileSinkFilter de l’enregistreur de fichiers pour appeler SetFileName. Si le paramètre pSink n’est pas NULL, il reçoit un pointeur vers l’interface IFileSinkFilter .

Vous pouvez utiliser le pointeur vers le filtre de multiplexeur, retourné dans le paramètre ppf , comme paramètre pSink dans la méthode ICaptureGraphBuilder2 ::RenderStream .

Pour les filtres de multiplexeur personnalisés, la méthode échoue si le filtre ne prend pas en charge une connexion sur sa broche de sortie avant que ses broches d’entrée ne soient connectées. Par exemple, l’exemple de filtre WavDest inclus avec le Kit de développement logiciel (SDK) présente cette limitation.

Si la méthode réussit, l’interface IBaseFilter retournée dans le paramètre ppf a un nombre de références en attente. Si la méthode réussit et que pSink n’a pas la valeur NULL, l’interface IFileSinkFilter a également un nombre de références en suspens. Veillez à libérer les deux interfaces lorsque vous avez terminé de les utiliser.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

ICaptureGraphBuilder2, interface