Lecteur video opengl

Soyez le premier à donner votre avis sur cette source.

Vue 15 263 fois - Téléchargée 1 435 fois

Description

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

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.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005

Qui dit 3D ne dit pas forcément jeu vidéo. Je pense à quelque chose d'un peu plus esthétique que les interfaces 2D traditionnelles de Windows/Linux. Et en 3D, on peut faire pas mal de choses, qui sont en plus accélérées par la carte graphique.
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Ouais, un explorateur 3D où faudrait se diriger avec un joystick, tirer sur des fichiers-zombies pour les détruire...chaque dossier étant une grotte...ouais ça serait sympa :)
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 :)
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005

Ce ne sont que quelques petits bugs qui n'empêchent pas d'utiliser le prog :)

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).
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Effectivement je viens de télécharger la version sur mon site et il n'y a pas les glTexParameteri()...merci de me l'avoir signalé, j'update tout ça avec en plus la modification du timer et celle de jpeb2cjv.c. Heureusement que t'es là pour corriger mes erreurs ;)

Juste par curiosité, tu comptes utiliser le lecteur vidéo dans un projet particulier...?
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005

Oki, j'ai réussi à faire une vidéo :)

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^
Afficher les 17 commentaires

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.