2010-06-09 10 views
0

J'essaie de créer un fichier .wmv de sortie en utilisant le filtre d'écriture WM Asf. Voici mon code.Ecriture d'un fichier .wmv à l'aide du filtre sf WMA

IBaseFilter * pASFWriter; CoCreateInstance (CLSID_WMAsfWriter, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void **) (& pASFWriter));
pGraphBuilder-> AddFilter (pASFWriter, L "FileWriter");
IFileSinkFilter * pSink2 = NULL;
pASFWriter-> QueryInterface (IID_IFileSinkFilter, (void **) & pSink2); pSink2-> SetFileName (OUTFILENAME, NULL);

Tout ce qui précède renvoie S_OK mais il n'y a pas de fichier créé. Je ne suis pas en mesure de comprendre pourquoi c'est ainsi?

Répondre

0

Tout ce que vous faites ici est de créer un filtre DirectShow et de le configurer pour écrire dans un fichier. Rien ne se passera jusqu'à ce que le filtre soit connecté à d'autres filtres qui lui fournissent des données et que le graphique soit exécuté. Le fichier ne sera pas créé avant la réception des premières données valides. Voir this MDSN rubrique pour plus d'informations.

+0

Eh bien, je l'essaie. Je veux recadrer un fichier .wmv en plus petits fichiers .wmv durée .So c'est ce que je fais - Filtre de source-> Sample Grabber Filter-> WMA SF écrivain. Les 2 derniers sont connectés par 2 broches (vidéo et audio). Ensuite, spécifiez la durée désirée en utilisant IMediaPostion pour les heures de début et de fin.Puis, je lance le graphique.Tout d'autre retourne S_OK mais la commande run graph renvoie un E_FAIL. Je ne sais pas pourquoi cela se passe – Manish