Et encore un nouveau media player (pas trop compliqué et avec plein d'options)! (avec thread+opengl+directdraw...!)

Soyez le premier à donner votre avis sur cette source.

Vue 10 574 fois - Téléchargée 1 998 fois

Description

Au menu:
-gestion des couleurs de la vidéo (possibilité d'ajuster le contraste, luminosité, la teinte, les couleurs...)
-possibilité d'inclure des fichiers de sous-titre standards (ex: *.srt)
-gestion du ratio, des symétries de la vidéo, du degré de lissage, de la qualité...
-...

En fait, le lecteur est fonctionnel, mais il lui manque encore quelques fonctionnalités. Par exemple, tout simplement la gestion d'une playlist... Si jamais ça intéresse quelqu'un de l'améliorer, qu'il me contacte! Dites-moi aussi si le lecteur en lui-même vous intéresse, et si vous êtes intéressés pour l'utiliser en tant que lecteur pour windows, alors je m'arrangerai pour le finir. Pour l'instant, l'interface est TRES laide, mais je pourrais éventuellement la rendre skinable...

Source / Exemple :


Donc, comme je le disais, ce programme utilise à la fois DirectDraw (pour construire, à partir des codecs installés sur l'ordinateur, les primitives nécessaire à la lecture d'un fichier vidéo, mpeg, avi, WMV ou même ASF je crois mais il faut vérifier). 
Opengl est utilisé pour effectuer les corrections de couleur, de contraste... ainsi que pour afficher le texte des sous-titres. Je n'arrivais pas à le faire avec les primitives standard graphiques de Windows (c'est à dire avec le TCanvas de Delphi), car Windows a une gestion assez bizarre des palettes de Bitmaps, et je n'ai pas assez de connaissances en DirectX pour le faire par ce biais là...
La boucle d'affichage du film est gèrée par un thread synchronisé.
Enfin, l'architecture du tout est assez modulaire. Par exemple, on peut considérer que les éléments du pagecontrol situé sur la gauche sont des plug-ins, qu'on peut faire évoluer indépendamment les uns des autres. Pour les types de sous-titres reconnus (pour l'instant je n'y ai mis que les 2 principaux), on doit "enregistrer" des classes de sous-titres, qui ont des méthodes de classes (par exemple pour savoir quelles sont les extensions de fichiers correspondantes).

Voilà, je crois que j'ai à peu près tout dit, dès que j'ai le temps, je commence à mettre des commentaires. Et même si vous m'affirmerez le contraire au début, le code n'est pas si compliqué que ça quand on le regarde de plus près. A part pour DirectDraw, bien sûr, mais il suffit de suivre à la lettre les instructions de Microsoft pour arriver à lire un fichier média. D'ailleurs, l'exemple peut servir si l'on veut programmer un objet en 3D avec OpenGl sur lequel on souhaite appliquer une vidéo en texture, le principe est le même.

Conclusion :


Tout est dans le zip!

Ah oui, au fait, j'ai oublié de le mentionner:
les fichiers d'interface pour DirectDraw, DirectX et autres ne sont pas de moi!
D'ailleurs c'est précisé dans les en-tête. Les fichiers qui sont de moi sont tous-ceux où l'auteur n'est pas précisé, il doit y en avoir 4 ou 5 je crois. Et une dernière précision: je doute qu'on puisse compiler ce code avec une version antérieure à Delphi7 :-(
Mais si jamais le lecteur vous intéresse quand même, demandez-moi et je peux vous en envoyer une version précompilée.

Ah, et j'allais oublier:
vive Uma Thurman!

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
jeudi 27 octobre 2005
Statut
Membre
Dernière intervention
14 juin 2007

Merci beaucoup ;)
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
En ce moment je n'ai pas trop le temps, mais je pense poster bientôt un exemple où il y a une classe qui fait tout ça. Patience, donc :-)

Je te préviens quand je le poste
Messages postés
2
Date d'inscription
jeudi 27 octobre 2005
Statut
Membre
Dernière intervention
14 juin 2007

Le son marche chez moi mais pas la video :(

Si tu as le courage d'en faire un qui marche, je suis preneur ;)

Moi jaurais besoin de lire une video avant de lancer mon application DirectX (un jeu que j'ai commencé à développer). Je me suis renseigné sur DSPack mais impossible de l'installer... :( Non seulement les tutos que je trouve ne sont plus a jour mais en plus j'utilise Delphi10lite donc y a plein de bugs partout a cause de la non-compatibilité ><

Si tu sais ou je pourrais trouver de l'aide (tuto, code)...

Merci davance ;)
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
Salut,

en fait ce prog commence à dater un petit peu... et je n'étais pas encore au top niveau programmation opengl à l'époque, donc c'est mal optimisé, et ça peut expliquer pourquoi ça rame. Si le sujet t'intéresse je sais comment l'optimiser pour qu'il rame beaucoup moins.

En fait, l'endroit où ça pose problème c'est que j'utilise une texture OpenGl, or la norme impose pour celle-ci que les longueurs de ses côtés doivent être une puissance de 2 (par exemple 2, 4, 8, 16, 32 etc...). Par conséquent dans cette version-là je fais un "stretch" des pixels capturés depuis DirectDraw en utilisant des fonctions en accélération logicielles (donc très lentes). Or ce "stretch" de l'image est parfaitement inutile si l'on se contente de ne modifier qu'une partie de la texture OpenGl (en s'arrangeant pour allouer une puissance de 2 strictement plus grande que la taille réelle). Il faut alors modifier les coordonnées de mappage sur le carré de l'écran de façon à ne visualiser que le sous-ensemble des pixels modifiés.

Je ne sais pas si c'est très clair, mais en tout cas je l'ai fait dans un autre prog et ça fonctionne en utilisant à peine 3-4% du processeur. Si j'ai le courage je modifierai cette source (ou même en posterai une nouvelle sur le même principe)... En attendant si tu veux plus de détails sur la façon dont ça fonctionne n'hésite pas à m'envoyer un MP.
Messages postés
259
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
22 novembre 2010
2
Je l'ai testé, comme d'habitude tu m'impressionne plus que tout...
J'ai essayé de le tester je dis bien essayer car en faite je n'y suis pas arrivé !

Il compile très bien, mais en faite dés que j'ouvre une vidéo ben j'ai bien mes codecs ffdshow se mettent bien en route, mais je n'ai pas d'image.
Par contre j'ai bien le son, et en bas à droite la résolution de la vidéo est bien trouvée.
Donc je comprend pas trop, dés qu'elle est ouverte, je ne peux plus rien faire du programme, je suis obligé de l'arrêter de force dans le gestionnaires des tâches.

J'ai remarqué aussi, quand je clique sur le bouton "open" tant que je suis sur la fenêtre pour sélectionner ma vidéo, le processus est pris à 95% non stop, c'est normal ?

@+

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.