2014 LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER Atef bentahar LA CONCEPTION
2014 LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER Atef bentahar LA CONCEPTION ET LA [ REALISATION DE MEDIAPLAYER ] Un nouveau lecteur multimedia avec une nouvelle conception, il est programmé sous la plateforme code gear 2009 (delphi). LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 1 1. INTODUCTION Nous découvrerons dans ce chapitre un nouveau lecteur multimedia avec une nouvelle conception, il est programmé sous la plate forme code gear 2009 (delphi). Cette dernière permet une grande flixibilite de programmation délicate de l’interface graphique basée sur les fonctions du système d’exploitation. Nous allons clarifier les princips fondamentaux de la réalisation de ce lecteur, ses caractéristiques, ses différentes fonctionalitées, ses tâches (nécessaires et optionelles) ainsi que montrer les aventages et quelques limitations. Nous choisissons Bentaplayer comme un nom pour ce nouveau lecteur. 2. C’EST QUOI BENTAPLAYER ? Bentaplayer : Est un lecteur multimedia qui possède une interface graphique permettant de lire les fichiers audios et vidéos et les écouter à travers des haut- parleurs (enceintes). Il permet de lire la plusparts des formats de fichiers : audio comme :mp4 , mp3, mp2, wma, wav, asf, cda(cd audio),cde...ex vidéo comme :mp4 , avi, mpeg, mpg, mov, wmv…ex. Son interface graphique non-ambigue est enrichi avec des animations qui permettent une bonne présentation et une ambiance graphique adéquate, ainsi que sa liste de lecture qui affiche d’une façon graduelle, de haut en bas et vise versa. En plus, l’utilisateur peut modifier l’aparance du fond-écran (skin). Bentaplayer possède deux modes d’interface graphique : mode normal. mode minimisé. Bentaplayer a tous les éléments nécessaires pour faciliter son utilisation, il affiche toutes les informations nécessaires pendant la lecture d’une piste telles que le titre de la piste, durée, temps passé …ex. LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 2 3. PRESENTATION DE L’INTERFACE GRAPHIQUE DE BENTAPLAYER 3.1. Les éléments de bentaplayer Figure 1. Mode normal Figure 2. Mode minimisé Le tableau suivant décrit les différents éléments de ce lecteur : 1 Titre (bentaplayer + date +heure) 2 Adresse de la piste en cours 3 Ambiance graphique 4 Temps passé de la piste en cours (en chiffre) 5 Durée de la piste 6 Temps total de la lecture des pistes 7 Position de la piste en cours 8 durée passée de la piste en cours (sur la barre) 9 Ouvrir des fichiers audio\vidéo (open) 10 lecture (play)\pause LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 3 11 Stop 12 Piste précédente (previous track) 13 Suivant (next track) 14 Activer la lecture aléatoire (random) 15 Activer la répétition d’une piste 16 Ajouter des pistes a la liste de lecteur 17 Supprimer des pistes de la liste de lecture 18 Afficher la liste de lecture 19 La barre de volume 20 Changer l’apparence de l’arrière-plan (skin) 21 Basculer en mode minimisé\mode normal 22 A propos 23 Enregistrer (record) Table 3.1. Composants de Bentaplayer 4. LES PRINCIPES FONDAMENTAUX DE PROGRAMMATION DE BENTAPLAYER La programmation de Bentaplayer est basée sur trois axes: 1) La Programmation relative au système d'exploitation : Est un type de programmation qui vise au développement des programmes qui font partie du système d’exploitation d’un ordinateur ou qui réalisent les fonctions. Contrairement à la programmation des applications, elle s’intéresse pas au traitement des données, mais aux interfaces, protocoles et à la gestion des ressources, telles que le temps, son system, audio, périphériques audio/vidéo, haut-parleur …ex. Elle inclut, en outre, l’accès aux fichiers, la programmation du clavier, de l’écran et, en général, la programmation de tous les périphériques qui font entrer ou sortir de l’information d’un ordinateur. Le module de MMSYSTEM fournit un ensemble de procédures et de fonctions relatives au système d'exploitation. A noter que le comportement de ces opérateurs peut être varié selon les systèmes. Pour utiliser ce module, la ligne (uses 'mmsystem') doit être incluse dans l'en-tête du fichier source ( unité.pas). 2) Utilisation des composants de type "Timer" : Sont des composants non- visuels dotés également de propriétés et de méthodes. Leur nombre est toutefois assez limité. Les composants de type "Timer" sont disponibles dans la palette des LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 4 composants, dans l'onglet Système. Nous verrons que ce type de composant est très utile. Il permet de définir une variable de temps qui s’incrémente à chaque évènement "OnTimer" afin de réaliser ce tous ce qui dépend de l’animation et du temps tels que: La date et l’heure La durée de la piste Position de la piste en cours Temps passé de piste en cours (en chiffre) Durée passé de piste en cours sur la barre Temps total de la lecture des pistes Temps d’enregistrement L’animation de l’adresse de la piste en cours L’animation de l’affichage de la liste de lecture Réaliser l’ambiance graphique 3) Utilisation des boutons animés : C’est l’animation de plusieurs images pour qu’elles apparaissent comme un bouton. Exemple : Bouton désactivé : , bouton activé (mouse up) Positionnement du curseur sur l’image (bouton) Clic sur l’image (mouse down ) LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 5 5. PARTIE PROGRAMMATION ET DESCRIPTION DE FONCTIONNALITE DES ELEMENTS DE BENTAPLAYER 5.1. Initialisation du niveau de volume (son) Pour contrôler le son, il nous faut: Une procédure MPSetVolume qui affecter la valeur entière (Volume: Integer) au niveau de volume (son) de Bentaplayer ; procedure MPSetVolume(MP: TMediaPlayer;Volume: Integer); var p: MCI_DGV_SETAUDIO_PARMS; begin p.dwCallback := 0; p.dwItem := MCI_DGV_SETAUDIO_VOLUME; p.dwValue := Volume; p.dwOver := 0; p.lpstrAlgorithm := nil; p.lpstrQuality := nil; mciSendCommand(MP.DeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p)) ; end; {Get Volume, range 0 - 1000} Et une fonction MPGetvolume qui permet d’affecter la valeur de niveau de volume (son) à une variable entière. function MPGetVolume(MP: TMediaPlayer): Integer; var p: MCI_STATUS_PARMS; begin p.dwCallback := 0; p.dwItem := MCI_DGV_STATUS_VOLUME; mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM,Cardinal(@p)); Result := p.dwReturn; end; LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 6 5.2. Créer l'interface Figure 3. L’interface de Bentaplayer (1ere exécution) procedure TForm1.FormCreate(Sender: TObject); begin ***Affecter la valeur de volumebar (figure 1 élément 19) au niveau de volume (son) de mediaplayer*** MPSetVolume(MediaPlayer1, volumeBar.Position) ; ***les dimensions initiales de bentaplayer*** form1.Height:=241; form1.Width:=390; ***pour l’apparence graphique*** volumeBar.Visible:=false; image58.Visible:=false; imgopen.Picture.Graphic:=image17.Picture.Graphic; image56.Picture.Graphic:=teteactive.Picture.Graphic; image57.Picture.Graphic:=teteactive.Picture.Graphic; *** Initialisation des valeurs des variables dont chacune sera expliquée en ce qui suit*** afi:=0;reco:=0;med2:=0;aff:=0;index:=0;ti:=0;ren:=false; t:=false;btnpause.Enabled:=false;io:=0;re:=0;rep:=0;ou:=0; ra:=0;ha:=1;actutabrendom:=1;itabrandom:=1;u:=1;r:=0; ***Initialisation des valeurs de tableau (tab) à utiliser pour l’ambiance graphique*** tab[0]:=image2.Picture.graphic; tab[1]:=image3.Picture.graphic; tab[2]:=image4.Picture.graphic; tab[3]:=image3.Picture.graphic; . tab[33]:= image1.Picture.graphic; ***tabrendom : est un tableau pour enregistrer l’ordre des pistes lues (cas de lecteur aléatoire)*** while itabrandom<=100 do LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 7 begin tabrendom[itabrandom]:=-1; itabrandom:=itabrandom+1; end; itabrandom:=1; end; L’interface nécessite la procédure TForm1.FormCreate dont on définit les dimensions initiales de lecteur ainsi que les valeurs initiales des variables utilisées. 5.3. Afficher l’adresse de piste en cours Pour afficher l’adresse de la piste en cours de lecture (l’élément 2 dans la figure 1 ), on procède comme suit : procedure TForm1.TimeradressepisteTimer(Sender: TObject); begin if adressepiste.Left>=-430 then adressepiste.Left:=adressepiste.Left-5 else adressepiste.Left:=420; end; Cette procédure permet de faire un mouvement périodique (de droite à gauche) de l’adresse de piste en cours de lecture. 5.4. Ouvrir des fichiers audio\vidéo (open) L’ouverture des fichiers (l’élément 9 dans la figure 1 ) est faite sur deux parties, la première fait l’animation quand le curseur soit sur le bouton ouvrir et ça nécessite deux procédures TForm1.imgopenMouseMove et TForm1.imgopenMouseDown. L’autre partie présente le fait du clic (TForm1.openmClick). ***animation du bouton *** procedure TForm1.imgopenMouseMove(Sender: TObject); begin imgopen.Picture.Graphic:=image28.Picture.Graphic; end; procedure TForm1.imgopenMouseDown(Sender: TObject) LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 8 begin if imgopen.Enabled=true then imgopen.Picture.Graphic:=image52.Picture.Graphic; end; ***Le fait du clic*** procedure TForm1.openmClick(Sender: TObject); begin tete.Visible:=true; Imgrecord.Cursor:=crhandpoint;imgrendom.Cursor:=crhandpoint; imgrepete.Cursor:=crhandpoint; open.Execute; if open.Files.Count<1 then exit else aff:=1; ***qui indique que bentaplayer est actif tempspass.Enabled:=true; pisteduree.Enabled:=true; btnpause.Enabled:=true; btnnext.Enabled:=true; btnback.Enabled:=true; ajoute.Enabled:=true; remove.Enabled:=true; listeheight.Enabled:=true; liste.Items:=open.Files; form3.form3liste.items:=form1.liste.items ; mediaplayer1.FileName:=liste.Items[0]; ***bentaplayer prend la tête de la liste comme une première piste à lire*** btnpause.Enabled:=true; filte.Filter:=open.Filter; mediaplayer1.Open; if face.Transparent=true then adressepiste.Font.Color:=clnavy else adressepiste.font.Color:=clskyblue; play.Enabled:=true; Imgstop.Enabled:=true; play.Picture.Graphic:=image17.Picture.Graphic; Imgstop.Picture.Graphic:=image18.Picture.Graphic; Timertempspass.Enabled:=true; adressepiste.Caption:=open.FileName; Timertempstotal.Enabled:=true; Timerambiance.Enabled:=true; face.Picture.Graphic:=image9.Picture.Graphic; Btnplay.Enabled:=false; quickstop.Enabled:=true; btnpistedureeClick(Sender); ***affichage de la Durée de la piste en cours (cela fait l’objet de la procédure Suivante) *** Imgrecord.Enabled:=true;imgrendom.Enabled:=true; imgrepete.Enabled:=true; MPSetVolume(MediaPlayer1, volumeBar.Position) ; mediaplayer1.Play; Buttonminimi.Enabled:=true; LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER A. Bentahar Page 9 play.Picture.Graphic:=image39.Picture.Graphic; end; 5.5. Calculer et afficher la durée de la piste en cours L’affichage de la durée de la piste en cours de lecture est de la forme mm:ss. La réalisation de l’élément 5 dans la figure 1 se faite par la procédure suivante : procedure TForm1.btnpistedureeClick(Sender: TObject); begin o := MediaPlayer1.Length; {durée en milli-seconde} o:=o div 1000; mi:=o div 60; se:=o-(mi*60); if mi>9 then begin if se>9 then pisteduree.Caption := IntToStr(mi)+(':')+IntToStr(se) else pisteduree.Caption := IntToStr(mi)+(':')+('0')+IntToStr(se) end else begin if se>9 then pisteduree.Caption := ('0')+IntToStr(mi)+(':')+IntToStr(se) else pisteduree.Caption :('0')+IntToStr(mi)+(':')+('0')+IntToStr(se) end ; Remarque : vu la quantité importante des procédures réalisant notre application, consultez l’index pour trouver le reste des procédures. 6. LES AVANTAGES ET LES INCONVÉNIENTS 6.1. les avantages : la lecture de la plusparts des formats uploads/Litterature/ la-conception-et-la-realisation-d-x27-un-mediaplayer.pdf
Documents similaires
-
71
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 26, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 1.3266MB