MP3-Player

Wünsche, Anträge, Fehlermeldungen
dongyros
Interessierter
Interessierter
Beiträge: 69
Registriert: Donnerstag 4. März 2004, 21:15

MP3-Player

Beitrag von dongyros »

Hallo,

ich wollte gern mal wissen ob diese Art Playlist im MP3-Player zwingend nötig ist. Damit meine ich die Tatsache das ich immer erst irgendwelche Verzeichnisse usw. meiner Liste "hinzufügen" muss bevor ich etwas abspielen kann.
Wäre es nicht sinnvoller direkt das gemountetet Verzeichnis, also die Dateistruktur, anzuzeigen und bei Auswahl einer MP3-Datei sofort das Abspielen zu beginnen, eben so wie im Movieplayer?

Gruß, donygros
Sepp776
Semiprofi
Semiprofi
Beiträge: 1173
Registriert: Samstag 1. September 2001, 00:00

Beitrag von Sepp776 »

hmm, ich glaube beim MP3-Player ist es eher die Ausnahme, dass man ein einzelnes File abspielt oder?
Philips Sat
Astra 19.2°
dongyros
Interessierter
Interessierter
Beiträge: 69
Registriert: Donnerstag 4. März 2004, 21:15

Beitrag von dongyros »

Sepp776 hat geschrieben:hmm, ich glaube beim MP3-Player ist es eher die Ausnahme, dass man ein einzelnes File abspielt oder?
Ja natürlich aber wenn ich sofort meine Filestruktur sehe kann ich doch gleich mehrere einzelne Files markieren und die dann abspielen. ohne das ich vorher den Weg über "Hinzufügen" gehe, dort alles markiere auf "OK" drücke
dann meine eigentliche Playlist sehe und dann über "OK" dann letzendlich etwas starte.
Ausserdem solllte man wenn man z.B. ganze Alben auf der Platte abgelegt hat eh ein Playlistfile in dem Ordner haben (ist zumindest meine Meinung). Wählt man dieses Playlistfile aus und drück auf "OK" wird ebend das komplette Album gespielt. Will ic h dagegen nur ein bestimmtes Stück hören, wähle ich es eben aus und drück auf "OK" was dann das sofortige Abspielen bewirken sollte.

Ich denke das dieses Vorgehen auch einigen Leuten das Leben einfacher machen könnte die die DBOX z.B. ohne Fernseher betreiben, also nur Musik hören. Davon gibt es ja auch einige.


Gruß, dongyros
Sepp776
Semiprofi
Semiprofi
Beiträge: 1173
Registriert: Samstag 1. September 2001, 00:00

Beitrag von Sepp776 »

Der Unterschied ist doch bei deinem Vorschlag im Endeffekt nur, dass man einmal weniger OK drückt...

Man könnte das so realisieren, dass der Player beim Verlassen des Filebrowsers automatisch anfängt zu spielen. Das müsste doch genau den Effekt haben den du meinst oder?
Philips Sat
Astra 19.2°
dongyros
Interessierter
Interessierter
Beiträge: 69
Registriert: Donnerstag 4. März 2004, 21:15

Beitrag von dongyros »

Nicht ganz, wenn ich den MP3-Player starte will ich schon direkt die Filestruktur sehen. Also nicht erst eine leere Liste wo ich erst was hinzufügen muss. Deswegen auch meine Frage weiter oben ob dieser Schritt über diese Liste nötig ist?
Ich mein natürlich wäre dein Vorschlag auch schonmal nicht schlecht aber wieso sehe ich erst eine leere Liste? Das ist zumindest in meinen Augen unsinnig.

Eigentlicher Vorgang:
MP3-Player starten->Grüne Taste(hinzufügen)->Gelbe Taste(markieren)->OK->OK

Besserer Vorgang:
MP3-Player starten->Gelbe Taste(markieren)->OK

Das wären dann 2 Schritte weniger.
Sepp776
Semiprofi
Semiprofi
Beiträge: 1173
Registriert: Samstag 1. September 2001, 00:00

Beitrag von Sepp776 »

ach so, verstehe. Das wäre ja auch ganz leicht zu realisieren:

Code: Alles auswählen

//beim start des mp3-players:
wenn (playlist_leer)
  öffne_filebrowser;
sonst
  zeige_playlist;
Philips Sat
Astra 19.2°
dongyros
Interessierter
Interessierter
Beiträge: 69
Registriert: Donnerstag 4. März 2004, 21:15

Beitrag von dongyros »

Bist du dir sicher das das so einfach ist? Ich mein wir kennen wahrscheinlich beide nicht den Code des MP3-Players.
Ist nicht "gagga" einer der (oder Der) Entwickler des MP3-Players? Wäre schön wenn er auch was dazu sagen könnte.
In was ist der MP3-Player eigentlich geschrieben (C,C++) ?
gagga
Senior Member
Beiträge: 782
Registriert: Dienstag 25. Februar 2003, 21:35

Beitrag von gagga »

Neenee. Ich bin unschuldig. Von MP3 Player habe ich noch weniger Ahnung als von den Dingen an denen ich ein wenig rumprogrammiere ;)
Sepp776
Semiprofi
Semiprofi
Beiträge: 1173
Registriert: Samstag 1. September 2001, 00:00

Beitrag von Sepp776 »

na den source kannst du dir doch problemlos angucken :wink:
http://cvs.tuxbox-cvs.sourceforge.net/c ... cvs-markup

Die show() Funktion müsste hier wohl angepasst werden. Würde das ja gerne einbauen, aber leider habe ich gerade keinen Linux-Rechner mit dem ich ne Yadd zum testen laufen lassen könnte :(
Philips Sat
Astra 19.2°
jotwee
Einsteiger
Einsteiger
Beiträge: 147
Registriert: Mittwoch 5. Mai 2004, 10:41

Beitrag von jotwee »

OT, aber dennoch:
viel wichtiger fänd ich eine funktion zum abspeichern von playlists als .m3u (am besten auf einem mnt) - ginge das prinzipiell?
Sepp776
Semiprofi
Semiprofi
Beiträge: 1173
Registriert: Samstag 1. September 2001, 00:00

Beitrag von Sepp776 »

Ist machbar. m3u's sind ja stinknormale Textdateien...
Philips Sat
Astra 19.2°
jotwee
Einsteiger
Einsteiger
Beiträge: 147
Registriert: Mittwoch 5. Mai 2004, 10:41

Beitrag von jotwee »

Folgende Funktionen bzw. Fehlerbereinigungen wünsche ich mir für den mp3-player, den ich fast ausschließlich fürs musik hören benutze:

- bug: nach sound-mitteilung, dass neue mails auf dem server liegen, kann der player erst wieder nach einem box reset gestartet werden.
- feature: abspeichern von playlists (als m3u)
- feature: fortschrittsbalken in der lcd anzeige (analog zum tv modus)
- bug: anzeige der titeldauer bei vbr codierten mp3s (hier stimmen die initial angezeigten werte überhaupt nicht)

ist da was machbar?
Zwen
Developer
Beiträge: 867
Registriert: Mittwoch 14. August 2002, 19:50

Beitrag von Zwen »

jotwee hat geschrieben: - bug: nach sound-mitteilung, dass neue mails auf dem server liegen, kann der player erst wieder nach einem box reset gestartet werden.
Denke mal das ist das Problem, das npq heute morgen gefixt hat...
- feature: fortschrittsbalken in der lcd anzeige (analog zum tv modus)
Das müsste sich recht schnell machen lassen, schau ich mir mal an...
- bug: anzeige der titeldauer bei vbr codierten mp3s (hier stimmen die initial angezeigten werte überhaupt nicht)
Die durchschnittliche Bitrate steht AFAIK halt nirgends im File, genausowenig wie die Tracklänge. Deswegen lässt sich die Tracklänge nur berechnen indem man die Bitraten aus allen Frames des mp3 nimmt und dann den Durschnitt bildet. Man muss das File quasi komplett durchscannen und das dauert halt sehr lang.Im Moment werden deswegen nur ein paar frames am Anfang gelesen und dementsprechend ungenau ist halt die durschnittliche Bitrate und somit auch die Tracklänge. Während des Abspielens müssen die einzelnen Frames dann eh gelesen werden und dabei wird dann auch die durschnittliche Bitrate und die Tracklänge korrigiert.
Ich weiss im Moment nicht wie das performant zu lösen wäre.
Wenn man sich zB mal winamp anschaut, dann merkt man auch, dass der bei vbr mp3's vergleichsweise lange braucht, um die Tracklänge anzuzeigen...
Zwen
jotwee
Einsteiger
Einsteiger
Beiträge: 147
Registriert: Mittwoch 5. Mai 2004, 10:41

Beitrag von jotwee »

wow! herzlichen dank für diese ausführliche antwort :-) da freue ich mich ja schon monstermäßig auf das nächste release... mp3-hören über die dbox ist mir nämlich fast ebenso zur gewohnheit geworden wie fernsehen...
Sepp776
Semiprofi
Semiprofi
Beiträge: 1173
Registriert: Samstag 1. September 2001, 00:00

Beitrag von Sepp776 »

Zu der ursprünglichen Sache mit der Playlist hätte ich noch einen Vorschlag (muss etwas weiter ausholen :wink: ):
Ein schönes Hintergrundbild würde dem Audioplayer sehr gut stehen. Das bringt aber nur was, wenn man auch was vom Hintergrund sieht.
Wenn einfach nebenbei Musik läuft braucht man die Playlist, die den größten Teil des Bildes ausmacht, eh nicht unbedingt. Wie wäre es also, wenn man die Verwendung der Playlist generell optional macht.
- Wenn sie eingeschaltet ist, bleibt alles wie bisher.
- Wenn sie ausgeschaltet ist, wird beim Start direkt der Filebrowser angezeigt. Nach der Auswahl startet direkt das Abspielen, ohne dass die Playlist angezeigt wird. Die Tastenbelegungen müssten dann allerdings unter die Track-Info oder ganz an den unteren Bildschirmrand wandern.

@Zwen: Vielleicht hast du ja 2-3 Tage übrig *duck* :wink:

Ciao,
Sepp.
Zwen
Developer
Beiträge: 867
Registriert: Mittwoch 14. August 2002, 19:50

Beitrag von Zwen »

Neh, das ist nix für mich, da fehlt der thrill :)
Ich will das das Zeugs funktioniert, wer blaue Schleifchen oder Blümchen haben will, soll das selber machen.
Es könntet ja auch jemand den Screensaver erweitern, dass es ein Bildchen zeigt, da muss man dann nicht die ganze Playlist rauscoden.
Tja und ob jetzt ein Tastendruck mehr oder weniger bis zum Starten des Musik-Vergnügens vonnöten ist :roll: Sag ich jetzt mal nix zu :wink:
jotwee
Einsteiger
Einsteiger
Beiträge: 147
Registriert: Mittwoch 5. Mai 2004, 10:41

Beitrag von jotwee »

hi zwen,

im aktuellen jtg-snap vom 2.6. ist ja schon ein neues lcd layout drin :-)
super!
zwei bemerkungen dazu:
1.) nach verlassen des audioplayers wird die lautstärkeanzeige nicht aktualisiert (bleibt auf dem stand des fortschrittsbalkens)
2.) kannst du denfortschrittsbalken nicht nach oben nehmen (also den neutrino-schriftzug ersetzen)?

gruß,
j
Zwen
Developer
Beiträge: 867
Registriert: Mittwoch 14. August 2002, 19:50

Beitrag von Zwen »

jotwee hat geschrieben: 1.) nach verlassen des audioplayers wird die lautstärkeanzeige nicht aktualisiert (bleibt auf dem stand des fortschrittsbalkens)
Hm, bei mir schon, da erscheint immer nach dem Verlassen des MP3-Players die akt. Lautstärke auf dem TV und dem LCD, ich kann das aber auch explizit setzen, dann sollte es auf jeden Fall gehen...
2.) kannst du denfortschrittsbalken nicht nach oben nehmen (also den neutrino-schriftzug ersetzen)?
Nein, die obere Zeile ist tabu (zumindest halt ich das so), die gehört zum Corporate Design.
Zwen
jotwee
Einsteiger
Einsteiger
Beiträge: 147
Registriert: Mittwoch 5. Mai 2004, 10:41

Beitrag von jotwee »

danke für die Antworten, Zwen :-)

hoffe nicht, dass ich jetzt hier unverschämt werde, aber :oops:
wie stehst du zu der "playliste als m3u speichern"-option?
Zwen
Developer
Beiträge: 867
Registriert: Mittwoch 14. August 2002, 19:50

Beitrag von Zwen »

Keine Antwort ist auch ne Antwort, oder ? ;-)
Meine Meinung dazu:
nice 2 have, stört mich nicht wenns drinn ist, zum Implementieren fehlt mir die Lust bzw. der persönliche Nutzen.
jotwee
Einsteiger
Einsteiger
Beiträge: 147
Registriert: Mittwoch 5. Mai 2004, 10:41

Beitrag von jotwee »

Zwen hat geschrieben:... zum Implementieren fehlt mir die Lust bzw. der persönliche Nutzen.
hmm... was kann ich tun, um dich zu überzeugen ;-)

ich fänds halt megapraktisch, wenn ich mir playlists bquem vom sofa aus erstellen kann (da gelingt einem schon manchmal der ultimative mix...) und diese playlists dann später am rechner auf meinen tragbaren mp3-player schieben kann.

da ich einige tausend mp3s auf meinem rechner habe, wär das für mich mehr als nice2have...

aber ok, ich will ja nicht betteln... :cry:

:wink:
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

hi,

also ich habe da mal was gemacht:

ist ziemlich einfach gehalten:
Wenn nichts abgespielt wird speichert ? eine m3u playlist in /tmp/playlist.m3u
die Pfade sind absolut, also mit den mounts.

Hier mal ein diff, ich hoffe das waren alle Dateien :-)

Code: Alles auswählen

Index: data/locale/deutsch.locale
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/data/locale/deutsch.locale,v
retrieving revision 1.305
diff -u -r1.305 deutsch.locale
--- a/data/locale/deutsch.locale	6 Jun 2004 14:10:59 -0000	1.305
+++ b/data/locale/deutsch.locale	6 Jun 2004 20:13:34 -0000
@@ -461,6 +461,7 @@
 mp3player.shuffle Shuffle
 mp3player.stop Stopp
 mp3player.title_artist Titel, Interpret
+mp3player.save_playlist Playlist speichern
 networkmenu.broadcast Broadcast
 networkmenu.dhcp DHCP
 networkmenu.gateway Standard Gateway
Index: data/locale/english.locale
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/data/locale/english.locale,v
retrieving revision 1.240
diff -u -r1.240 english.locale
--- a/data/locale/english.locale	6 Jun 2004 14:10:59 -0000	1.240
+++ b/data/locale/english.locale	6 Jun 2004 20:13:36 -0000
@@ -461,6 +461,7 @@
 mp3player.shuffle shuffle
 mp3player.stop Stop
 mp3player.title_artist Title, Artist
+mp3player.save_playlist save play list
 networkmenu.broadcast Broadcast
 networkmenu.dhcp DHCP
 networkmenu.gateway default gateway
Index: src/gui/audioplayer.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/audioplayer.cpp,v
retrieving revision 1.8
diff -u -r1.8 audioplayer.cpp
--- a/src/gui/audioplayer.cpp	4 Jun 2004 22:51:15 -0000	1.8
+++ b/src/gui/audioplayer.cpp	6 Jun 2004 20:13:38 -0000
@@ -62,6 +62,7 @@
 #include <algorithm>
 #include <sys/time.h>
 #include <fstream>
+#include <iostream>
 
 #if HAVE_DVB_API_VERSION >= 3
 #include <linux/dvb/audio.h>
@@ -555,10 +556,14 @@
 			}
 			else
 			{
-				if(m_state!=CAudioPlayerGui::STOP)
+			        if(m_state!=CAudioPlayerGui::STOP)
 				{
 					key_level=1;
 					paintFoot();
+				} else {
+				  if (!playlist.empty()) {
+				    savePlaylist();
+				  }
 				}
 			}
 		}
@@ -819,6 +824,11 @@
 	{
 		frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_OKAY, x + 1* ButtonWidth2 + 25, y+(height-info_height-buttonHeight)-3);
 		g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->RenderString(x + 1 * ButtonWidth2 + 53 , y+(height-info_height-buttonHeight)+24 - 4, ButtonWidth2- 28, g_Locale->getText(LOCALE_AUDIOPLAYER_PLAY), COL_INFOBAR, 0, true); // UTF-8
+		if (m_state==CAudioPlayerGui::STOP) {
+		  // help will store a playlist file
+		  frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_HELP, x+ 0* ButtonWidth + 25, y+(height-info_height-buttonHeight)-3);
+		  g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->RenderString(x+ 0* ButtonWidth +53 , y+(height-info_height-buttonHeight)+24 - 4, ButtonWidth2- 28, g_Locale->getText(LOCALE_AUDIOPLAYER_SAVE_PLAYLIST), COL_INFOBAR, 0, true); // UTF-8
+		}
 	}
 	if(m_state!=CAudioPlayerGui::STOP)
 	{
@@ -1358,3 +1368,26 @@
 	}
 }
 
+void CAudioPlayerGui::savePlaylist() {
+
+  // .m3u playlist
+  // http://hanna.pyxidis.org/tech/m3u.html
+
+  std::ofstream playlistFile("/tmp/playlist.m3u");
+  if (!playlistFile) {
+    std::cout << "could not create play list file " 
+	      << "/tmp/playlist.m3u" << std::endl;
+    return;
+  }
+  playlistFile << "#EXTM3U" << std::endl;
+
+  CPlayList::const_iterator it;
+  for (it = playlist.begin();it!=playlist.end();it++) {
+    //    std::cout << "file: " << it->Filename << std::endl;
+    playlistFile << "#EXTINF:" << it->Duration << ","
+		 << it->Artist << " - " << it->Title << std::endl;
+    playlistFile << it->Filename << std::endl;
+  }
+  playlistFile.close();
+}
+
Index: src/gui/audioplayer.h
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/audioplayer.h,v
retrieving revision 1.1
diff -u -r1.1 audioplayer.h
--- a/src/gui/audioplayer.h	30 May 2004 16:47:36 -0000	1.1
+++ b/src/gui/audioplayer.h	6 Jun 2004 20:13:38 -0000
@@ -140,6 +140,7 @@
 	void updateTimes(const bool force = false);
 	void showMetaData();
    void screensaver(bool on);
+   void savePlaylist();
 
  public:
 	CAudioPlayerGui();
Index: src/system/localize.h
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/system/localize.h,v
retrieving revision 1.38
diff -u -r1.38 localize.h
--- a/src/system/localize.h	6 Jun 2004 14:06:18 -0000	1.38
+++ b/src/system/localize.h	6 Jun 2004 20:13:43 -0000
@@ -532,6 +532,7 @@
 #define LOCALE_AUDIOPLAYER_SHUFFLE                             "mp3player.shuffle"
 #define LOCALE_AUDIOPLAYER_STOP                                "mp3player.stop"
 #define LOCALE_AUDIOPLAYER_TITLE_ARTIST                        "mp3player.title_artist"
+#define LOCALE_AUDIOPLAYER_SAVE_PLAYLIST                       "mp3player.save_playlist"
 #define LOCALE_NETWORKMENU_BROADCAST                           "networkmenu.broadcast"
 #define LOCALE_NETWORKMENU_DHCP                                "networkmenu.dhcp"
 #define LOCALE_NETWORKMENU_GATEWAY                             "networkmenu.gateway"
Schaut sich eigentlich gelegentlich jemand die locales an?
Ich habe da jetzt nur die deutschen und englischen geaendert.

Vielleicht könnte man ja in ein Verzeichnis des Audioplayers alle Playlists speichern und diese dann auch wieder ladbar machen.
Was mir auch nicht so ganz gefällt ist der absolute Pfad innerhalb der .m3u, aber egal.
Zumindest ist das hier mal ein Anfang.
Wenn die Audioplayer-Devs damit einverstanden sind, dann könnte ich da ein bisschen was machen, nachdem wir uns auf mögliche Änderungen/Erweiterungen geeinigt haben.
Falls irgendwas nicht ok ist (Code, Formatierung, Tastenauswahl, etc), dann bitte gleich sagen, sonst wird es noch schlimmer ;)
Ach ja, in nächster Zeit werde ich nicht unendlich viel Zeit haben, falls sich jemand mit mehr Zeit drum kümmern will...

Noch was: ich habe längere Zeit nicht mehr mitgelesen, kann der Player vielleicht schon .m3us abspielen? Ich habe zwar nichts derartiges gelesen, aber es wäre ja möglich.

ciao,

ChakaZulu
jotwee
Einsteiger
Einsteiger
Beiträge: 147
Registriert: Mittwoch 5. Mai 2004, 10:41

Beitrag von jotwee »

ChakaZulu hat geschrieben:...kann der Player vielleicht schon .m3us abspielen?
ja, m3u's kann man in die playliste laden und dann auch abspielen...

danke, das ist ja schon mal ein anfang...
optimal wäre:
- relative pfade in m3u
- abspeichern per tastendruck in bel. verzeichnis (also auch mnt)
- eingabe des dateinamens

Ich weiss, ich bin unverschämt... und wenn ich selbst programmieren könnte, würd ichs tun :-?
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

ja, m3u's kann man in die playliste laden und dann auch abspielen...
hm, interessant. als ich das gestern mal testweise probiert habe, hat das nicht funktioniert..

zu dem rest:
wenn niemand was dagegen hat, dann könnte ich das schon machen.
aber wie gesagt, es wird nicht allzu schnell passieren, falls es also jemand anderes dann doch machen will, sollte er das mitteilen. doppelte arbeit muss ja nicht gemacht werden.

und ein kommentar zu dem patch oben, ob das so ok ist, wäre auch nicht schlecht :) (nicht falsch verstehen, ich weiss dass ihr nicht den ganzen Tag im Forum unterwegs seid)

ciao,

ChakaZulu
Zwen
Developer
Beiträge: 867
Registriert: Mittwoch 14. August 2002, 19:50

Beitrag von Zwen »

ChakaZulu hat geschrieben:und ein kommentar zu dem patch oben, ob das so ok ist, wäre auch nicht schlecht :)
Syntaktisch und formal siehts gut aus...
Zwen