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.