Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Mp3 einbinden (https://www.delphipraxis.net/82611-mp3-einbinden.html)

PudelDesTodes 16. Dez 2006 10:42


Mp3 einbinden
 
huhu

Also ich hab ein Programm geschrieben..und möchte das da Musik im Hintergrund läuft.
Das man das mit dem MediaPlayer machen kann, hab ich inzwischen rausgefunden.

Aber was genau muss ich damit machen?
Hab die Suchfunktion benutzt aber die Beschreibungen dort sind für mich chinesisch Rückwärts (bin ein delphi- noob ;) ).

Wär also sehr an einer genauen schrittweisen Erklärung interessiert *g*

Wünsche:
- Die mp3 (liegt als Datei auf dem Rechner vor) soll im Hintergrund automatisch abgespielt werden wenn das Programm gestartet wird
- Es soll in einer Dauerschleife spielen bis das Programm beendet wird

Xtras (optional):
- Ein Mute-Knopf für den Benutzer


Kann mir da wer helfen? :)

Nils_13 16. Dez 2006 10:44

Re: Mp3 einbinden
 
Schau dir mal in der Hilfe (F1) die Komponente TMediaPlayer an. Dort findest du dann Sachen, wie z.B. Play. Du musst also erst lieder laden und dann abspielen. Ist recht einfach.
Imho:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  MP.FileName := 'Pfad';
  MP.Open;
  MP.Play;
end;
So etwas, wie Mute müsste es eigentlich auch geben -> Hilfe.


Du könntest auch Audiobibliotheken, wie z.B. BASS oder FMOD benutzen, aber da du ja (zitiert) ein Noob bist, würde ich das an deiner Stelle vorerst lassen.

PudelDesTodes 16. Dez 2006 15:57

Re: Mp3 einbinden
 
ahh erst ma danke für die Hilfe :)

Also den Code hab ich soweit verstanden
thx :)

aber.. das is ja mit nem button

wie mach ich das denn das es ohne button geht? halt automatisch angehen/ausgehen
Wo/Wie muss ich den Teil mit play ect. reinschreiben?

stifflersmom 16. Dez 2006 16:00

Re: Mp3 einbinden
 
Na, wie wäre es mit dem OnActivate oder OnShow Ereignis Deines Formulars?

Moin

Gentleman 16. Dez 2006 16:08

Re: Mp3 einbinden
 
Hallo,

Zum MediaPlayer:
Schau dir doch mal die ganzen Funktionen des Mediaplayers an, oder suche einfach mal hier im Forum danach, es gibt eigentlich ganz eindeutige Befehle dafür.

Delphi-Quellcode:
MP.Play
Wie schon gesgat ins OnActive oder OnShow Event.

Delphi-Quellcode:
MP.Stop
Vielleicht ans Ende also z.B ins OnClose Event.

Delphi-Quellcode:
MP.Pause
In das Event des Buttuns, der die Mutefinktion ausführen soll
(Das ist zwar kein Stumm schalten, aber ich glaube es würde den selben Zweck erfüllen)


Gruß,
Lennard

Nils_13 16. Dez 2006 16:15

Re: Mp3 einbinden
 
Du solltest es in OnCreate oder OnActivate schreiben, bei OnShow, wird der Code ständig ausgeführt.

DP-Maintenance 16. Dez 2006 16:49

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Projekte" nach "VCL / WinForms / Controls" verschoben.
Nix Projekte sondern Kompos.

PudelDesTodes 18. Dez 2006 18:34

Re: Mp3 einbinden
 
Sooo

Also erst mal hat das mit der Musik geklappt.
Es läuft über eine Dauerschleife und bei Bedarf kann man sie mit einem Knopf anhalten bzw. wieder weiterlaufen lassen.

Jetzt hab ich nur noch ein letztes Problem bei dieser Sache:

Ich habe beim ersten Versuch beim Filenamen natürlich den kompletten Pfad zur Datei angegeben.
'D:blablabla/blabla/Projektordner/Musikdatei.mp3'

Da ich das in der Schule geschrieben hab.. stimmt dieser Pfad bei mir zuhause natürlich nicht mehr.

Wie kann man den Pfad angeben, sodass man das Programm an jedem beliebigen PC benutzen kann?
Der Projektordner-Name bleibt natürlich immer gleich..aber wie sag ich dem Programm das er nur in seinem eigenen Ordner zu kucken braucht?

Namenloser 18. Dez 2006 18:37

Re: Mp3 einbinden
 
Delphi-Quellcode:
GetFilePath(application.exename)+'musik.mp3';

Balu der Bär 18. Dez 2006 18:37

Re: Mp3 einbinden
 
Delphi-Quellcode:
ExtractFilePath(ParamStr(0)) + 'datei.mp3'

PudelDesTodes 18. Dez 2006 18:43

Re: Mp3 einbinden
 
Liste der Anhänge anzeigen (Anzahl: 1)
hm ^^ oke.. darf mir dann eins aussuchen? ;)
das erste sieht irgendwie einfacher aus.

Und wo schreib ich das hin? an die stelle wo sonst der Pfad steht?
Also bei Mediaplayer1.Filename:= blabla?
Oder wo?

maah..ich hab echt von nix ne ahnung

und jetzt kommt ganze Zeit Fehlermeldung (siehe Anhang) und ich weiß net warum :'(


hm..
GetFilePath(application.exename)+'musik.mp3';

Was muss ich dann für application hinschreiben?
und exename.. is dann nur Pschnee (so heißt dat ^^) oder Pschnee.exe

Gentleman 18. Dez 2006 19:08

Re: Mp3 einbinden
 
Also angenommen du hast die Mp3-Datei im selben Verzeichnis liegen, wie auch deine Exe-Datei, dann machst du folgendes:
  • Du suchst dir den Pfad der Programmdatei, da du den ja ganz einfach rausbekommen kannst ... Das ganze geht folgendermaßen:
    Application.Exename, der Rückgabewert dieser Funktion ist der gesamte Pfad zur Programmdatei, also z.B. "C:\Programme\MeinProgramm\MP3.exe"
  • Da du aber nur den Pfad zur Programmdati brauchst (weil deine Mp3-Datei im selben Verzeichnis liegt) suchst du dir nur den Pfad, ohne Dateiname:
    ExtractFilePath(Application.Exename) diese Funtion liefert dir nur den Pfad, im Beispiel wäre es also "C:\Programme\MeinProgramm\"
  • Den Dateinamen der Mp3 zu dem gerade herausgefunden Pfad hinzufügen, dass heißt also du packst einfach Pfad und bekannten Dateinamen in einen String:
    ExtractFilePath(Application.Exename) + 'meine_mp3.mp3';
    Ergebnis: "C:\Programme\MeinProgramm\meine_mp3.mp3"
  • Das Ganze musst du nun einfach als FileName für den Mediaplayer zuweisen, also:
    MP.FileName:= ExtractFilePath(Application.Exename) + 'meine_mp3.mp3';

Gruß,
Lennard

PudelDesTodes 18. Dez 2006 19:40

Re: Mp3 einbinden
 
Zitat:

* Den Dateinamen der Mp3 zu dem gerade herausgefunden Pfad hinzufügen, dass heißt also du packst einfach Pfad und bekannten Dateinamen in einen String:
ExtractFilePath(Application.Exename) + 'meine_mp3.mp3';
Ergebnis: "C:\Programme\MeinProgramm\meine_mp3.mp3"

* Das Ganze musst du nun einfach als FileName für den Mediaplayer zuweisen, also:
MP.FileName:= ExtractFilePath(Application.Exename) + 'meine_mp3.mp3';

aaalso
mal sehen ob ich das richtig verstanden hab..

Mein Pfad zur Exe lautet:
C:\Dokumente und Einstellungen\HP_Besitzer\Eigene Dateien\Schneemannx
Wobei Schneemannx der Ordner für das Projekt ist.

Muss ich jetzt schreiben

MediaPlayer1.Filename:= ExtractFilepath(C:\Dokumente und Einstellungen\HP_Besitzer\Eigene Dateien\Schneemannx) + 'ja-der-schnee.mp3'; ?

Oder ohne Klammer? oder Mp3 in die Klammer?


hm.. hab das jetzt mal so eingegeben,,da wird immer fehler angezeigt:

undefinierter bezeichner C
Semikolon fehlt
ungültoges Zeichen in Eingabedatei "\"
Verwendete Unit ... kann nicht kompiliert werden (Fataler fehler °°)

Darkchild 20. Dez 2006 14:01

Re: Mp3 einbinden
 
Hallo,

mal eine kurze gegenfrage:

Muss es immer diese bestimmte MP3 sein oder soll der Benutzer die Möglichkeit haben evt. eine beliebige Mp3 von seinem Rechner zu wählen und diese wird dann immer wieder abgespielt und wenn er die Nase von dem lied voll hat dann kann er eine andere Wählen ?

Denn das könntest Du recht simple mit dem OpenDialog erledigen und dann nur FileName an den MediaPlayer übergeben.

Gruss
Darkchild

inherited 20. Dez 2006 14:08

Re: Mp3 einbinden
 
Du sollst ja anstelle des Pfads "ParamStr(0)" nehmen, da dieser immer (egal wo die Exe ausgeführt wird) den Ort, wo sie ausgeführt wird (inklusive Dateiname) beinhaltet. Da der Pfad aber nicht zB C:\test\test.exemeinemp3.mp3 ist, sondern C:\test\meinemp3.mp3 muss man den Dateinamen abschneiden. Das funktioniert ganz einfach mit ExtractFilePath.

Muetze1 20. Dez 2006 14:13

Re: Mp3 einbinden
 
Zitat:

Zitat von PudelDesTodes
aaalso
mal sehen ob ich das richtig verstanden hab..

Mein Pfad zur Exe lautet:
C:\Dokumente und Einstellungen\HP_Besitzer\Eigene Dateien\Schneemannx
Wobei Schneemannx der Ordner für das Projekt ist.

Muss ich jetzt schreiben

MediaPlayer1.Filename:= ExtractFilepath(C:\Dokumente und Einstellungen\HP_Besitzer\Eigene Dateien\Schneemannx) + 'ja-der-schnee.mp3'; ?

Nein, schliesslich hat der letzte Punkt doch schon alles geschrieben:

Delphi-Quellcode:
 MP.FileName:= ExtractFilePath(Application.Exename) + 'meine_mp3.mp3';
ExtractFilePath(Application.EXEName) liefert dir immer den Pfad, wo die EXE gerade ausgeführt wird. Wenn du die EXE somit irgendwo hinkopierst und startest, dann liefert dir die Funktion wieder den richtigen, neuen, Pfad.

PudelDesTodes 20. Dez 2006 18:16

Re: Mp3 einbinden
 
Also hab jetzt eingesetzt

MediaPlayer1.FileName:= ExtractFilePath(Application.Exename) + 'ja-der-Schnee.mp3';


jetzt kommt zumindest kein gemecker mehr am Code..

Aber diese blöde Fehlermeldung die ich weiter oben gepostet hab kommt immernoch.
Und dann deutet ein Pfeil bei der Unit auf Application.Run;

da es vorher alles lief muss es irgendwie mitdem player zusammenhängen.

inherited 20. Dez 2006 18:42

Re: Mp3 einbinden
 
Welche Fehlermeldung denn, ich find da keine :gruebel:

Thorben_K 21. Dez 2006 15:13

Re: Mp3 einbinden
 
als ich dir das in der schule gemacht, ähm meine natürlich erklärt) habe, lief alles, würde gerne mal wissen was du geschaffst hast...

also poste den quell text, (oder schick in mir) und man kann dir auch helfen... :)

gruss Thorben

PudelDesTodes 21. Dez 2006 18:54

Re: Mp3 einbinden
 
Zitat:

Zitat von inherited
Welche Fehlermeldung denn, ich find da keine :gruebel:

Da müsste ein Anhang sein.. bei meinem thread nach den 2 Vorschlägen

okidoki@Thorben


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz