Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi 2 Fragen zu Mp3 (https://www.delphipraxis.net/73890-2-fragen-zu-mp3.html)

Gast 25. Jul 2006 10:24


2 Fragen zu Mp3
 
Hallo,

da ich leider in diesem Gebiet ein Anfänger bin, frage ich euch nun um Hilfe, nachdem ich bei der Suche nichts passendes gefunden habe.
Ich habe vor ein Programm zu schrieben welches 2 Sachen machen könnte:

1. Man sollte 4 MP3 Dateien wählen können und dann sollten diese 4 verbunden werden und zu einer gemacht werden. Nacheinander halt.
2. Man sollte evtl. noch eine Hintergrund MP3 wählen können, welche dann im Hintergrund von der anderen MP3 Datei mitspielt.

Ich hoffe, dass man soetwas mit Delphi umsetzen kann und freue mich schon jetzt auf eure Hilfe.

EDatabaseError 25. Jul 2006 10:25

Re: 2 Fragen zu Mp3
 
Such mal im Forum nach "Bass" / BassPlayer da gibts ne komponente für MP3

Gausi 25. Jul 2006 11:00

Re: 2 Fragen zu Mp3
 
Wenn die 4 Einzel-Mp3s nur Musik enthalten, eine konstante Bitrate haben, und keine weiteren Informationen (auch keine ID3-Tags!), dann kann man sie einfach ineinanderkopieren. Also einen großen Filestream, und die vier Dateien nacheinander da rüberkopieren.

Sind doch ID3-Tags (oder andere Tags oder Header vorhanden), wirds etwas komplizierter. Die sicherste Möglichkeit wäre dann, die einzelnen MPEG-Frames in den vier Dateien in eine neue zu kopieren.

Ich hatte mal ein Programm, was in einer MP3-Datei die Frames auseinanderfriemelt, aber da ist der Code verlorengegangen. Ich weiß nur noch, dass ein wichtiger Bestandteil die Funktion GetFrameLength aus meinen MP3FileUtils war, mit der man aus dem Frame-Header die Länge eines Frames ermitteln kann, um dann entsprechend viele Bytes zu kopieren.

Wenn die MP3s auch noch variable Bitrate haben, wirds noch ein bißchen komplizierter, da diese noch einen Xing-Header haben, den ich zwar lesen und teilweise auswerten kann, aber mich noch nicht damit beschäftigt habe, einen neuen zu schreiben. Zwar ist dieser nur optional, aber VBR-Dateien ohne diesen Header mag ich persönlich gar nicht (bzw. meine Unit mag die nicht) ;-)

Hintergrundmusik mit reinzukopieren dürfte direkt nicht möglich sein - da hilft nur ein dekodieren, zusammenfügen der beiden Dateien wie in einem Wave-Editor und anschließendes neues kodieren.

Mit der bass.dll kann man das nur so lösen, dass man als Ergebnis eine Wave-Datei erhält, die man dann z.B. mit Lame wieder kodieren könnte. Direkte Manipulation von mp3-Dateien (auch das zusammenkopieren) ist damit nicht möglich.

Muetze1 25. Jul 2006 14:57

Re: 2 Fragen zu Mp3
 
Zitat:

Zitat von Gausi
Wenn die 4 Einzel-Mp3s nur Musik enthalten, eine konstante Bitrate haben, und keine weiteren Informationen (auch keine ID3-Tags!), dann kann man sie einfach ineinanderkopieren. Also einen großen Filestream, und die vier Dateien nacheinander da rüberkopieren.

Wieso die Bedingung mit der konstanten BitRate? bei VBR würde nur jeder Frame eine andere BitRate haben, das wäre doch egal für diesen Fall!

Zitat:

Zitat von Gausi
Ich hatte mal ein Programm, was in einer MP3-Datei die Frames auseinanderfriemelt, aber da ist der Code verlorengegangen. Ich weiß nur noch, dass ein wichtiger Bestandteil die Funktion GetFrameLength aus meinen MP3FileUtils war, mit der man aus dem Frame-Header die Länge eines Frames ermitteln kann, um dann entsprechend viele Bytes zu kopieren.

Ich habe noch ein Programm rumliegen, welches dei Frames sucht und dann von Frame zu Frame die Datei durchgeht. War nur ein Test, funktioniert grundsätzlich und kann noch optimiert werden. Könnte ich auf Wunsch zur Verfügung stellen.

Gausi 25. Jul 2006 15:42

Re: 2 Fragen zu Mp3
 
In der Regel ist der erste MPEG-Frame in einem VBR-MP3-File ein sogenannter Xing-Header, der zwar vom Header her mit einem MPEG-Frame kompatibel ist, aber keine Audio-Informationen enthält, sondern u.A. die Anzahl der Frames in der Datei (daraus eine schnelle Längenberechnung möglich) und ein Sprungstellenarray.
Wenn man das einfach mitkopiert, und davon mehrere in einer Datei hat, kommt es zum einen zu möglicherweise falschen Längenangaben bei einigen Playern (die nur den XING-Header auswerten, und nicht die ganze Datei), und zum anderen zu kleinen Knacksern bei der Wiedergabe, da zwischendurch ungültige Audio-Frames stecken.

Gast 25. Jul 2006 16:18

Re: 2 Fragen zu Mp3
 
Ersteinmal Danke für die Antworten, doch ich muss zugeben, dass es einfach eine Nummer zu hoch für mich ist und ich das ganze deswegen wohl am besten aufgebe :/ trotzdem vielen Dank.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 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