Micro Music Player (mmp) un lecteur musicale écrity C++/C-Like.
Le 2016-01-10 07:43:59, par Luke spywoker, Membre expérimenté
J'annonce par ce présent message la sortie de Micro Music Player (mmp): un lecteur musical minimaliste. Il utilise la bibliothèque libvlc comme moteur audio et GTK+-3.0 pour construire l'IHM (Interface Humain Machine).
Présentation de Micro Music Player
Télécharger Micro Music Player (deb)
Télécharger Micro Music Player (tarball)
Micro Music Player README
Micro Music Player github
Présentation
Micro Music Player (mmp) un petit lecteur de musique minimal avec comme fonctionnalités :
- Play (jouer), Stop (arrêter), Pause ;
- Next (suivant), Previous (précédent) ;
- Shuffle (Mode lecture aléatoire) & Repeat All (Répéter la playlist) ;
- Contrôle du volume.
Micro Music Player (mmp) joue le contenu d'un dossier ou un simple fichier compatible, vous n'avez qu'à sélectionner un dossier (ou le passer comme argument en ligne de commande) pour en jouer le contenu lexicographiquement ordonné, ou un simple fichier. Après avoir fait la liste de lecture, MMP recherche une image de couverture d'album dans le dossier et l'affiche dans l'interface. S'il ne trouve pas d'image, il affiche l'image par défaut.
Fonctionnalités
- Jouer un fichier unique à la place du contenu d'un dossier.
- Afficher la playlist :
La playlist est affichée dans une fenêtre _toplevel_. La chanson ou le morceau de musique en cours de lecture est marqué avec une icône dans la marge. Vous pouvez faire un double-clic sur le titre de votre choix afin de le jouer immédiatement.
- Configurer Micro Music Player (mmp) à votre convenance.
1. Vous pouvez choisir entre 2 différents jeux d'icônes :
- HighContrast: des icônes noir et blanc.
- Oxygen: des icônes colorées.
2. Vous pouvez choisir entre 3 différentes tailles de l'interface.
- Petite taille.
- Moyenne taille.
- Grande taille.
3. Vous pouvez configurer le dossier par défaut lors de l'ouverture du sélecteur de dossiers musicaux.
4. Vous pouvez (dé)sélectionner les fonctions repeat all (Répéter la playlist) et shuffle (Mode lecture aléatoire) comme vous le désirez.
5. Vous pouvez changer le volume par défaut au démarrage du programme (de 0 a 100).
Les changements sont appliqués dès que vous les effectuez, excepté le réglage du volume. Mais vous devez appuyer sur le bouton _Apply_ pour garder la configuration souhaitée. Ainsi il démarrera avec les réglages que vous voulez.
Vous pouvez le lancer avec la ligne de commande suivante:
Ou en cliquant sur l'icône.
Formats de fichiers supportés
Formats de fichiers musicaux :
Formats de fichiers musicaux les plus communs :
- flac (Free Lossless Audio Codec).
- ogg (Ogg Vorbis).
- mp3 (MPEG-1 Audio Layer III ou MPEG-2 Audio Layer III).
- aac (Advanced Audio Coding).
- ac3 (Dolby Digital).
- wav (WAVEform audio file format).
- wma (Windows Media Audio).
- mid or midi (Musical Instrument Digital Interface).
- ape (Monkey’s Audio).
- mov (QuickTime).
Liste de Formats de fichiers musicaux gérés :
.3ga, .669, .a52, .aac, .ac3, .adt, .adts, .aif, .aifc, .aiff, .amb ,.amr, .aob, .ape, .au, .awb, .caf, .dts,.flac, .it, .kar, .m4a, .m4b, .m4p, .m5p, .mid, .mka, .mlp, .mod, .mpa, .mp1, .mp2, .mp3, .mpc, .mpga, .mus, .oga, .ogg, .oma, .opus, .qcp, .ra, .rmi, .s3m, .sid, .spx, .tak, .thd, .tta, .voc, .vqf, .w64, .wav, .wma, .wv, .xa, .xm.
(Pas tous testés mais gérés par libvlc)
Formats de fichiers d'images de couverture gérés :
- jpeg, jpg, jpe (Joint Photographic Experts Group).
- tiff, tif (Tagged Image File Format).
- png (Portable Network Graphics).
- bmp, dib (bitmap image file or device independent bitmap).
Ce que mmp ne fait pas:
- pas d'indexation de votre dossier de musique ;
- pas d'accès aux métadonnées ;
- pas de barre de progression du morceau en écoute (vraie lacune empêchant de positionner l'écoute dans un morceau) ;
- pas de connexion à une base de données ou de téléchargement pour la gestion des images de couverture.
Micro Music Player (mmp) reste aussi simple que possible, sans connexion Internet requise : MMP et votre dossier musical suffisent.
J'ai implémenté ce programme au début à des fins personnelles sans penser à le distribuer, mais finalement j'ai décidé de le publier parce qu'il est facile et simple dans le concept comme dans le code C++. Au point que vous pouvez l'utiliser ou le modifier librement selon les termes de la licence GPLv3.
Installer MMP
Il est d'ores et déjà disponible en paquetage Debian (*.deb) mais aussi en archive tarball.
Installation avec le tarball
Autotools est utilisé, le compiler et l'installer sera donc aussi simple qu'un ./configure, make, make install:
Afin de vérifier que votre système satisfait les dépendances. Puis entrez :
Enfin, et éventuellement :
Écoutez vos chansons préférées avec Micro Music Player (mmp) !!!
NOTES de l'auteur:
mmp est écrit en C++ dans un style C-Like.
Et est un bon code a lire pour ceux qui passe du C au C++ avec une library multimédia facile d'utilisation en complément.
Présentation de Micro Music Player
Télécharger Micro Music Player (deb)
Télécharger Micro Music Player (tarball)
Micro Music Player README
Micro Music Player github
Présentation
Micro Music Player (mmp) un petit lecteur de musique minimal avec comme fonctionnalités :
- Play (jouer), Stop (arrêter), Pause ;
- Next (suivant), Previous (précédent) ;
- Shuffle (Mode lecture aléatoire) & Repeat All (Répéter la playlist) ;
- Contrôle du volume.
Micro Music Player (mmp) joue le contenu d'un dossier ou un simple fichier compatible, vous n'avez qu'à sélectionner un dossier (ou le passer comme argument en ligne de commande) pour en jouer le contenu lexicographiquement ordonné, ou un simple fichier. Après avoir fait la liste de lecture, MMP recherche une image de couverture d'album dans le dossier et l'affiche dans l'interface. S'il ne trouve pas d'image, il affiche l'image par défaut.
Fonctionnalités
- Jouer un fichier unique à la place du contenu d'un dossier.
- Afficher la playlist :
La playlist est affichée dans une fenêtre _toplevel_. La chanson ou le morceau de musique en cours de lecture est marqué avec une icône dans la marge. Vous pouvez faire un double-clic sur le titre de votre choix afin de le jouer immédiatement.
- Configurer Micro Music Player (mmp) à votre convenance.
1. Vous pouvez choisir entre 2 différents jeux d'icônes :
- HighContrast: des icônes noir et blanc.
- Oxygen: des icônes colorées.
2. Vous pouvez choisir entre 3 différentes tailles de l'interface.
- Petite taille.
- Moyenne taille.
- Grande taille.
3. Vous pouvez configurer le dossier par défaut lors de l'ouverture du sélecteur de dossiers musicaux.
4. Vous pouvez (dé)sélectionner les fonctions repeat all (Répéter la playlist) et shuffle (Mode lecture aléatoire) comme vous le désirez.
5. Vous pouvez changer le volume par défaut au démarrage du programme (de 0 a 100).
Les changements sont appliqués dès que vous les effectuez, excepté le réglage du volume. Mais vous devez appuyer sur le bouton _Apply_ pour garder la configuration souhaitée. Ainsi il démarrera avec les réglages que vous voulez.
Vous pouvez le lancer avec la ligne de commande suivante:
Code : |
$ mmp folderpath volume[0-100] # mmp is a symbolic link.
Ou en cliquant sur l'icône.
Formats de fichiers supportés
Formats de fichiers musicaux :
Formats de fichiers musicaux les plus communs :
- flac (Free Lossless Audio Codec).
- ogg (Ogg Vorbis).
- mp3 (MPEG-1 Audio Layer III ou MPEG-2 Audio Layer III).
- aac (Advanced Audio Coding).
- ac3 (Dolby Digital).
- wav (WAVEform audio file format).
- wma (Windows Media Audio).
- mid or midi (Musical Instrument Digital Interface).
- ape (Monkey’s Audio).
- mov (QuickTime).
Liste de Formats de fichiers musicaux gérés :
.3ga, .669, .a52, .aac, .ac3, .adt, .adts, .aif, .aifc, .aiff, .amb ,.amr, .aob, .ape, .au, .awb, .caf, .dts,.flac, .it, .kar, .m4a, .m4b, .m4p, .m5p, .mid, .mka, .mlp, .mod, .mpa, .mp1, .mp2, .mp3, .mpc, .mpga, .mus, .oga, .ogg, .oma, .opus, .qcp, .ra, .rmi, .s3m, .sid, .spx, .tak, .thd, .tta, .voc, .vqf, .w64, .wav, .wma, .wv, .xa, .xm.
(Pas tous testés mais gérés par libvlc)
Formats de fichiers d'images de couverture gérés :
- jpeg, jpg, jpe (Joint Photographic Experts Group).
- tiff, tif (Tagged Image File Format).
- png (Portable Network Graphics).
- bmp, dib (bitmap image file or device independent bitmap).
Ce que mmp ne fait pas:
- pas d'indexation de votre dossier de musique ;
- pas d'accès aux métadonnées ;
- pas de barre de progression du morceau en écoute (vraie lacune empêchant de positionner l'écoute dans un morceau) ;
- pas de connexion à une base de données ou de téléchargement pour la gestion des images de couverture.
Micro Music Player (mmp) reste aussi simple que possible, sans connexion Internet requise : MMP et votre dossier musical suffisent.
J'ai implémenté ce programme au début à des fins personnelles sans penser à le distribuer, mais finalement j'ai décidé de le publier parce qu'il est facile et simple dans le concept comme dans le code C++. Au point que vous pouvez l'utiliser ou le modifier librement selon les termes de la licence GPLv3.
Installer MMP
Il est d'ores et déjà disponible en paquetage Debian (*.deb) mais aussi en archive tarball.
Installation avec le tarball
Autotools est utilisé, le compiler et l'installer sera donc aussi simple qu'un ./configure, make, make install:
Code : |
$ ./configure
Code : |
$ make
Code : |
$ sudo make install
NOTES de l'auteur:
mmp est écrit en C++ dans un style C-Like.
Et est un bon code a lire pour ceux qui passe du C au C++ avec une library multimédia facile d'utilisation en complément.
-
troumadRédacteur/ModérateurLe programme apporte quoi par rapport à l'existant ?
il ne gère pas les m3u ? C'est ce format que génère mon serveur domestique.le 11/01/2016 à 11:45 -
Luke spywokerMembre expérimentéEn faîtes je suis passer a libvlc car la version 1 de mmp utilisait SDL2_mixer comme moteur audio et plantait dès fois.
Sinon rien c'est un holydays work, vite fait bien fait.
Mais regarde ça: un exemple d'utilisation de libvlc avec gtk-2.0.
Code : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142// gcc -o gtk_player gtk_player.c `pkg-config --libs gtk+-2.0 libvlc` `pkg-config --cflags gtk+-2.0 libvlc` /* License WTFPL http://sam.zoy.org/wtfpl/ */ /* Written by Vincent Schüßler */ #include <stdlib.h> #include <gtk/gtk.h> #include <gdk/gdkx.h> #include <vlc/vlc.h> #define BORDER_WIDTH 6 void destroy(GtkWidget *widget, gpointer data); void player_widget_on_realize(GtkWidget *widget, gpointer data); void on_open(GtkWidget *widget, gpointer data); void open_media(const char* uri); void play(void); void pause_player(void); void on_playpause(GtkWidget *widget, gpointer data); void on_stop(GtkWidget *widget, gpointer data); libvlc_media_player_t *media_player; libvlc_instance_t *vlc_inst; GtkWidget *playpause_button; void destroy(GtkWidget *widget, gpointer data) { gtk_main_quit(); } void player_widget_on_realize(GtkWidget *widget, gpointer data) { libvlc_media_player_set_xwindow(media_player, GDK_WINDOW_XID(gtk_widget_get_window(widget))); } void on_open(GtkWidget *widget, gpointer data) { GtkWidget *dialog; dialog = gtk_file_chooser_dialog_new("Choose Media", data, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { char *uri; uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); open_media(uri); g_free(uri); } gtk_widget_destroy(dialog); } void open_media(const char* uri) { libvlc_media_t *media; media = libvlc_media_new_location(vlc_inst, uri); libvlc_media_player_set_media(media_player, media); play(); libvlc_media_release(media); } void on_playpause(GtkWidget *widget, gpointer data) { if(libvlc_media_player_is_playing(media_player) == 1) { pause_player(); } else { play(); } } void on_stop(GtkWidget *widget, gpointer data) { pause_player(); libvlc_media_player_stop(media_player); } void play(void) { libvlc_media_player_play(media_player); gtk_button_set_label(GTK_BUTTON(playpause_button), "gtk-media-pause"); } void pause_player(void) { libvlc_media_player_pause(media_player); gtk_button_set_label(GTK_BUTTON(playpause_button), "gtk-media-play"); } int main( int argc, char *argv[] ) { GtkWidget *window, *vbox, *menubar, *filemenu, *fileitem, *filemenu_openitem, *player_widget, *hbuttonbox, *stop_button; gtk_init (&argc, &argv); // setup window window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 400, 300); g_signal_connect(window, "destroy", G_CALLBACK(destroy), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 0); gtk_window_set_title(GTK_WINDOW(window), "GTK+ libVLC Demo"); //setup vbox vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); //setup menu menubar = gtk_menu_bar_new(); filemenu = gtk_menu_new(); fileitem = gtk_menu_item_new_with_label ("File"); filemenu_openitem = gtk_menu_item_new_with_label("Open"); gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), filemenu_openitem); gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileitem), filemenu); gtk_menu_bar_append(GTK_MENU_BAR(menubar), fileitem); gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0); g_signal_connect(filemenu_openitem, "activate", G_CALLBACK(on_open), window); //setup player widget player_widget = gtk_drawing_area_new(); gtk_box_pack_start(GTK_BOX(vbox), player_widget, TRUE, TRUE, 0); //setup controls //playpause_button = gtk_button_new_from_stock(GTK_STOCK_MEDIA_PLAY); playpause_button = gtk_button_new_with_label("gtk-media-play"); gtk_button_set_use_stock(GTK_BUTTON(playpause_button), TRUE); stop_button = gtk_button_new_from_stock(GTK_STOCK_MEDIA_STOP); g_signal_connect(playpause_button, "clicked", G_CALLBACK(on_playpause), NULL); g_signal_connect(stop_button, "clicked", G_CALLBACK(on_stop), NULL); hbuttonbox = gtk_hbutton_box_new(); gtk_container_set_border_width(GTK_CONTAINER(hbuttonbox), BORDER_WIDTH); gtk_button_box_set_layout(GTK_BUTTON_BOX(hbuttonbox), GTK_BUTTONBOX_START); gtk_box_pack_start(GTK_BOX(hbuttonbox), playpause_button, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbuttonbox), stop_button, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbuttonbox, FALSE, FALSE, 0); //setup vlc vlc_inst = libvlc_new(0, NULL); media_player = libvlc_media_player_new(vlc_inst); g_signal_connect(G_OBJECT(player_widget), "realize", G_CALLBACK(player_widget_on_realize), NULL); gtk_widget_show_all(window); gtk_main (); libvlc_media_player_release(media_player); libvlc_release(vlc_inst); return 0; }
Sinon il faut ajouter que libvlc est une excellente library pour faire du multimédia facile, car facile d'utilisation malgré que l'on peut utiliser les fonctions de bas niveau aussi.
PS: kezako m3u ?le 12/01/2016 à 6:58 -
troumadRédacteur/ModérateurBonjour
Je pense que si ton code est aussi court, tu devrait le commenter et le proposer comme exemple pour developpez.net .
Netjuke, c'est ce qui est utilisé par http://sourceforge.net/projects/netjuke/ (un vieux projet que j'utilise en interne par flemme de mise à jour).
Voici un exemple :Code : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16http://netjuke/var/music/hard/Nightwish/Once/07%20Dead%20Gardens.mp3 http://netjuke/var/music/hard/Nightwish/Wishmaster%20%5BBonus%20Tracks%5D/05%20Two%20for%20Tragedy.mp3 http://netjuke/var/music/hard/Nightwish/Century%20Child/08%20Feel%20for%20You.mp3 http://netjuke/var/music/hard/Nightwish/Wishmaster%20%5BBonus%20Tracks%5D/10%20Dead%20Boy%27s%20Poem.mp3 http://netjuke/var/music/hard/Nightwish/Over%20the%20hills%20and%20far%20awayA%20COMPLETER/05%20-%20The%20Kinslayer%20%28live%29%20.mp3 http://netjuke/var/music/hard/Nightwish/Nightwish%20-%20Escapist.mp3 http://netjuke/var/music/hard/Nightwish/Oceanborn%20%5BBonus%20Tracks%5D/08%20The%20Riddler.mp3 http://netjuke/var/music/hard/Nightwish/Oceanborn%20%5BBonus%20Tracks%5D/Imaginaerum/Nightwish%20-%20Rest%20Calm.mp3 http://netjuke/var/music/hard/Nightwish/Angels%20Fall%20First%20%5BBonus%20Tracks%5D/12%20Lappi%20%28Lapland%29%20IV-%20Eti%C3%A4inen%20%5B-%5D.mp3 http://netjuke/var/music/hard/Nightwish/Once/10%20Kuolema%20Tekee%20Taiteilijan.mp3 http://netjuke/var/music/hard/Nightwish/Once/08%20Romanticide.mp3 http://netjuke/var/music/hard/Nightwish/Dark%20Passion%20Play/Nightwish%20-%20The%20Islander.mp3 http://netjuke/var/music/hard/Nightwish/Century%20Child/05%20Slaying%20the%20Dreamer.mp3 http://netjuke/var/music/hard/Nightwish/Dark%20Passion%20Play/Nightwish%20-%20Sahara.mp3 http://netjuke/var/music/hard/Nightwish/Oceanborn%20%5BBonus%20Tracks%5D/12%20Nightquest%20%5B-%5D.mp3 http://netjuke/var/music/hard/Nightwish/Oceanborn%20%5BBonus%20Tracks%5D/Imaginaerum/Nightwish%20-%20I%20Want%20My%20Tears%20Back.mp3
le 12/01/2016 à 7:29 -
Luke spywokerMembre expérimentéSalut troumad,
Je le dit pas mais le lien le dit, ce n'est pas mon code mais un exemple d'utilisation de libvlc avec gtk+2 que j'ai trouver sur le site de libvlc, (les liens sont dans mon poste précédent).
Mais je crois que ce code est déprécier car il commence a daté:
libVLC Gtk example media player VideoLAN
Status: Closed Time to complete: 504 hrs Mentors: Pierre Ynard Tags: libVLC, VLC, GtK
Creating a small example of how to create a media player based on libVLC and Gtk on Windows/Linux. The code will then be pushed on the wiki to demonstrate the efficience of the libVLC API.
Uploaded Work
File name/URL File size Date submitted
Download Broken November 26 2010 14:38 UTC
Download Broken November 27 2010 16:27 UTC
le 12/01/2016 à 11:22