Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi MP3 mit kompilieren (https://www.delphipraxis.net/53012-mp3-mit-kompilieren.html)

Flocke 8. Sep 2005 17:01

Re: MP3 mit kompilieren
 
Zitat:

Zitat von dizzy
Warum sollte man ein mp3 als Wave gelten lassen, wenn es doch eh .mp3 heisst und auch die darin zu erwartenden Daten enthält!? Ein RIFF-Header hat imho noch weniger etwas in einem mp3 verloren als mp3-Daten in einem RIFF-Wave :stupid:
Das führt für mein Verständnis zunächst lediglich zu einer Vermischung der Formate und damit einhergehender Uneindeutigkeit insbesondere der Dateiendung.

Du hast natürlich nicht ganz Unrecht, mit dem RIFF-Header ist aber so (bei MP3s wird eh' der Anfang übersprungen bis das erste gültige SyncWord gefunden wird).

Hab' gerade schon mal angefangen was zu hacken 8)

Wenn's fertig ist (kann allerdings noch ein paar Tage dauern), dann wird's analog wie PlaySound funktionieren, allerdings mit MP3-Dateien (über Delphi-Streams + acm-Streaming + Wave-Ausgabe im eigenen Thread --- das braucht bestimmt mind. 3 Tage Debugging :stupid: ).

dizzy 8. Sep 2005 17:17

Re: MP3 mit kompilieren
 
Lecker! Mh, wäre dass dann sogar als (kleiner) Ersatz für die BASS.DLL anzusehen? Ich bin gespannt!

Flocke 9. Sep 2005 19:38

Re: MP3 mit kompilieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich hab' auf jeden Fall schon mal ein kleines Tool für 150gozilla gemacht, mit dem man MP3s ohne wirkliche Konvertierung in WAVEs umwandeln kann (es wird dann ein entsprechender RIFF-Header davor gesetzt und mit der Erweiterung WAV abgespeichert).

Das Resultat kann man dann als Ressource einbinden und mit PlaySound direkt abspielen 8)

150gozilla 12. Sep 2005 07:55

Re: MP3 mit kompilieren
 
Hi ;) danke für das tool, nur funzt es nicht.

ist keine gültige win 32 anwendung^^

Das ist alle hier nen bissl kompliziert

Flocke 12. Sep 2005 08:44

Re: MP3 mit kompilieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Eigentlich sollte es gehen ... ich schau gerade mal ...

[Weiter]

Huch, du hattest Recht. Ich hatte versucht, die JCL-Debug-Infos mit dem GNU-Utility "strip" rauszumachen, aber das hat wohl die EXE zerschossen.

Als Anlage eine neuere Version, mit der es einwandfrei klappen sollte. Einfach ein MP3-File draufziehen und dann auf "Convert to wav" klicken. Die Sourcen kommen später nach, ich bin gerade mitten im Coden des ACM-Streaming.

Noch ein Hinweis: PlaySound "mag" keine VBR-MP3s, da werden vom Ende immer ein paar Zehntelsekunden weggelassen - in dem Fall solltest du einfach ca. 1 Sekunde Stille anhängen.

turboPASCAL 12. Sep 2005 08:57

Re: MP3 mit kompilieren
 
Funzt auch, ist bestimmt ein Fehler in der Datei (exe) ...

[edit=turboPASCAL]Anhang entfernt. siehe Post von Flocke[edit]

150gozilla 12. Sep 2005 09:01

Re: MP3 mit kompilieren
 
Also er hat mir eine Wave draus gemacht :) *danke nochmal*

und wie binde ich die jetzt in mein Programm ein, damit es nur ein file ist (meine .exe)?

turboPASCAL 12. Sep 2005 10:14

Re: MP3 mit kompilieren
 
Zitat:

Zitat von 150gozilla
und wie binde ich die jetzt in mein Programm ein, damit es nur ein file ist (meine .exe)?

Das ist bestimmt mit der Suchfunkeion der DP herrauszufenden Hier im Forum suchensound in resource einbinden :wink:

Soundressourcen

" gehört nicht zum Code... ;)

Flocke 12. Sep 2005 12:16

Re: MP3 mit kompilieren
 
In den Posts, die turboPASCAL aufgeführt hat, steht's schon recht deutlich. Hier noch einmal eine Zusammenfassung:

1. RC-Datei erstellen

Erstelle eine Textdatei mit der Endung RC (geht so weit ich weiß auch über Delphi). Als Inhalt gibst du jeweils eine Zeile mit
a) Name der Ressource
b) Typ der Ressource (hier immer WAVE)
c) Dateiname der Ressource
Beispiel:
Code:
BGSOUND WAVE "bgsound.wav"
2. RES-Datei erstellen

Rufe eine Kommandozeile auf, wechsle in dein Projektverzeichnis und rufe BRCC32 mit deiner bei (1) erstellten RC-Datei auf.
Sagen wir mal, deine Datei hieße "bgsound.rc". Beispiel:
Code:
BRCC32 bgsound.rc
Es müsste dann die Datei "bgsound.res" erstellt worden sein.

3. Ressource einbinden

Binde diese Ressource in irgendeine deiner Units ein, z.B. in das Hauptformular.
-> Suche die Stelle hinter implementation, wo {$R *.dfm} steht und füge eine neue Zeile dahinter ein für die bei (2) erstellt RES-Datei.
Beispiel:
Delphi-Quellcode:
...
implementation

{$R *.dfm}
{$R bgsound.res}

...
4. Sound abspielen

Rufe PlaySound nun einfach mit einem der Namen (1a) aus der RC-Datei auf.
Beispiel:
Delphi-Quellcode:
PlaySound('BGSOUND', hInstance, SND_RESOURCE or SND_ASYNC);

Du kannst beliebig viele Sounds in die RC-Datei packen (natürlich mit unterschiedlichen Namen). Jeder Aufruf von PlaySound stoppt aber den vorhergehenden - du kannst also immer nur einen Sound gleichzeitig abspielen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr.
Seite 2 von 2     12   

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