!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LE CODE COMPLET EST ICI :
http://perso.wanadoo.fr/funto/CJVVideo.zip
les touches :
-P pour Play/Pause
-B pour mettre en boucle ou pas
-S pour Stop
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
lisez-moi.txt
=============
Comme je n'ai rien trouvé de satisfaisant pour faire de la lecture vidéo (le lecteur de AVI de NeHe n'étant pas portable, et puis y'a beaucoup de trucs que j'aimais pas...), j'ai créé une classe CJVVideo de lecture vidéo (j'ai surtout créé ça pour un projet commun avec AmK, Cf le forum de Coder-Studio - Concours #3 - petit coup de pub :p)).
Le format CJV est en fait un format personnel, que j'ai inventé donc, et qui utilise la compression JPEG. Je n'ai pas fait de compression vidéo (autre que JPEG, je parle des calculs de l'image suivante en fonction de la précédente comme avec les codecs modernes) d'une part parce que c'est trèèèès compliqué et d'autre part parce que je n'en avais pas besoin.
Le code utilise SDL pour le fenêtrage, pour les types (comme Uint32) et pour le timer (SDL_GetTicks()). L'affichage est fait avec OpenGL.
Il faut noter que l'affichage se fait sur une texture (d'ailleurs je redimensionne l'image en utilisant la matrice de texture ^^), ce qui veut donc dire que l'on peut appliquer la vidéo sur un objet 3D, ou rajouter des effets de brouillard, ou un système de particules par-dessus...bref toutes les possibilités qu'offre OpenGL :)
Aussi, comme j'utilise le format JPEG et que celui-ci est très compliqué, j'utilise la libjpeg (une des 2 seules "véritables" libs pr manipuler le JPEG, avec celle d'Intel ^^).
Donc si vous voulez compiler le code, il vous la faudra.
Pour ça, je vous recommande le site de BeLZeL (si vous êtes sous Dev-C++) :
http://belzel.free.fr/
Sinon, allez voir du côté de GameTutorials.com, le dernier tutorial sur le chargement de textures JPEG, si vous êtes sous Visual C++.
Je remercie Keirua (alias Cyberboy/CyberKeirua) pour son soutient, BeLZeL pour son aide quant à l'install de la libjpeg, DigiBen (Cf GameTutorials.com) pr le code de chargement d'images JPEG, NeHe pour la vidéo, AmK pr mener le projet dans lequel fait partie ce lecteur avec moi...et puis les membres du forum de Coder-Studio.com pr leur aide et leurs conseils (surtout quand j'étais en galère avec glTexImage2D qui faisait que ça ne marchait que chez moi, merci à tous; Wett, mr-prog, Kirua, Pixel...etc ;)).
UPDATE : et MickaGL pour avoir réussi à me corriger le bug lié à glTexImage2D, 1000 mercis ;)
UPDATE 2 : et re-BeLZeL pour avoir aussi réussi à corriger le bug du timer :)
PS : pour convertir une vidéo de l'AVI vers le format CJV, il vous faut VirtualDub. Explications dans conversion/conversion.txt.
1 oct. 2004 à 19:10
26 sept. 2004 à 16:38
J'imaginerais bien avec une heightmap en dessous, dans un style Mars (mais en laissant le tout personnalisable...)
Moui il me plaît ton projet :)
En ce qui concerne le fait que j'utilise un format personnel, c'est justement, je trouve ça moins courageux que de s'attaquer à un format existant (se taper la doc en anglais mal faite et compliquée...marre quoi lol).
Enfin bref jusque là ça marche alors ça me convient :)
26 sept. 2004 à 14:49
J'aime bien ton projet parce que tu as créer un format personnel et que tu as fait le lecteur OGL qui va avec. Je trouve ca tout aussi courageux que de faire un lecteur utilisant un format vidéo déjà existant. Là, on est sûr de ne pas avoir de pb de codecs ;) Et pis je suis comme toi, je n'aimais pas le programme de NeHe. Et c'est parfois intéressant de mettre une telle "texture animée" dans un jeu, une texture qui ne soit visible que dans le jeu (et pas autrement).
J'aime bien ce genre de projet. Je me suis intéressé également à un explorateur de fichiers OGL. J'aimerais bien un petit explorateur 3D capable de faire un peu de tout (viewer d'image, lecteur vidéo, lecteur mp3, avec quelques effets 3D sympatiques).
26 sept. 2004 à 10:24
Juste par curiosité, tu comptes utiliser le lecteur vidéo dans un projet particulier...?
26 sept. 2004 à 02:04
Un petit détail dans jpeg2cjv.c. Bizarrement, il commencait l'encodage à partir de la 8è image. J'ai juste modifier la ligne 28 "int i=0;" (en initialisant i).
Ensuite, toujours dans jpeg2cjv.c, ca bug au niveau du répertoire JPG car str_nom_dossier_jpeg est limité à 100 caractères !!! Il existe la variable MAX_PATH. J'ai testé et ca règle le pb.
char str_nom_video[MAX_PATH];
char str_nom_dossier_jpeg[MAX_PATH];
char str_nom_fichier_jpeg[MAX_PATH];
Dans la version que j'ai DL, il n'y avait pas de glTexParameteri(); C'est pour ca.
Voilou ^o^
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.