Bibliothèque pour lire fichier vidéo

Résolu
D_A_R_K_O_S Messages postés 98 Date d'inscription vendredi 1 février 2013 Statut Membre Dernière intervention 23 juin 2015 - 9 mars 2014 à 13:28
D_A_R_K_O_S Messages postés 98 Date d'inscription vendredi 1 février 2013 Statut Membre Dernière intervention 23 juin 2015 - 12 mars 2014 à 13:59
Bonjour,
Je suis à la recherche d'un bibliothèque pour lire un fichier vidéo dans mon programme ( en c++ ) type bande annonce. Est ce que quelqu'un en connaîtrait une ? ( mes recherche n'ont pas était concluante...)
Je programme sous windows avec code::block.
Merci d'avance ! :)

2 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
11 mars 2014 à 20:22
Salut,

La lib. DirectShow est la plus performante.
Elle lit tout les formats et est assez simple d'utilisation (COM)

Dans le style :

#include <dshow.h>

// Les interfaces utiles
IGraphBuilder *g_pGraphBuilder;
IMediaControl *g_pMediaControl;
IMediaSeeking *g_pMediaSeeking;
IBaseFilter   *g_pSourceCurrent;
IBaseFilter   *g_pSourceNext;
IMediaEventEx *g_pEvent;
IVideoWindow  *g_pVidWin;


// Le graph DirectShow
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder,reinterpret_cast<void **>(&g_pGraphBuilder));

// IMediaControl Interface
g_pGraphBuilder->QueryInterface(IID_IMediaControl, reinterpret_cast<void **>(&g_pMediaControl));

// IMediaSeeking Interface
g_pGraphBuilder->QueryInterface(IID_IMediaSeeking, reinterpret_cast<void **>(&g_pMediaSeeking));
    


// Un rendu Direct
g_pGraphBuilder->RenderFile(pFile, NULL);
g_pMediaControl->Run();
g_pEvent->WaitForCompletion(INFINITE, &evCode);




// Ou avec un dialog perso
if( CreateMediaDialog(pParent, sTitre, cx, cy) ) // CreateDialogIndirectParam
{
	g_pGraphBuilder->RenderFile(pFile, NULL);
	g_pGraphBuilder->QueryInterface(IID_IVideoWindow, (void **)&g_pVidWin);
	
	// placer l'overlay DirectShow dans la fenêtre principale
	g_pVidWin->put_Owner((OAHWND)g_hwndMedia);

	// mettre en place la redirection des événements vers la fenêtre principale
	g_pEvent->SetNotifyWindow((OAHWND)g_hwndMedia, WM_GRAPHEVENT, 0);
	
	g_pMediaControl->Run();
}





Sinon y'a les AVIStream
Mais beaucoup plus limité

#include <mmsystem.h>
#include <vfw.h>

PAVISTREAM m_pasMovie;              
AVISTREAMINFO m_asiMovie;      

AVIStreamOpenFromFile(&m_pasMovie, lpszFilename, streamtypeVIDEO, 0, OF_READ,NULL);

// ect ...


bye...
0
D_A_R_K_O_S Messages postés 98 Date d'inscription vendredi 1 février 2013 Statut Membre Dernière intervention 23 juin 2015
12 mars 2014 à 13:59
Merci beaucoup c'est exactement ce que je cherchais !
0
Rejoignez-nous