begin process at 2010 02 10 12:02:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimedia

 > ET ENCORE UN NOUVEAU MEDIA PLAYER (PAS TROP COMPLIQUÉ ET AVEC PLEIN D'OPTIONS)! (AVEC THREAD+OPENGL+DIRECTDRAW...!)

ET ENCORE UN NOUVEAU MEDIA PLAYER (PAS TROP COMPLIQUÉ ET AVEC PLEIN D'OPTIONS)! (AVEC THREAD+OPENGL+DIRECTDRAW...!)


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Multimedia Niveau :Initié Date de création :26/01/2004 Vu / téléchargé :7 324 / 1 535

Auteur : Forman

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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.
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!

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip TRADUCTION DE DOKAN EN DELPHI: UN DRIVER "USER-MODE" POUR DI...
Source avec Zip Source avec une capture TASK MANAGER EN MODE TEXTE (ÉMULATION MODE 03H)
Source avec Zip Source avec une capture CHRONOMÈTRE POUR LE THÉ
Source avec Zip UTILITAIRE POUR LANCER UN PROGRAMME DEPUIS UN AUTRE COMPTE (...
Source avec Zip Source avec une capture DÉMONSTRATION DE LA GESTION DES OBJETS EN MÉMOIRE PAR DELPHI...

 Sources de la même categorie

Source avec Zip Source avec une capture SCREENCAMTURE 0.2 par JulioDelphi
Source avec Zip Source avec une capture CHANGEUR DE FOND D'ÉCRAN par John Dogget
Source avec Zip Source avec une capture SCAN THREAD : BASS par Nicolas___
Source avec Zip Source avec une capture PEDALE MULTI EFFETS [BASS ASIO] par Nicolas___
Source avec Zip Source avec une capture POPUP ALERTE STYLE MSN AVAST par strobinateur

Commentaires et avis

Commentaire de Also know as le 06/05/2007 11:18:16

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 ?

@+

Commentaire de Forman le 06/05/2007 19:47:06

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.

Commentaire de Yohmax le 14/06/2007 09:20:11

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 ;)

Commentaire de Forman le 14/06/2007 17:20:39

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

Commentaire de Yohmax le 14/06/2007 17:26:58

Merci beaucoup ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales