Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi einer datei einen tag zuweisen? (https://www.delphipraxis.net/122699-einer-datei-einen-tag-zuweisen.html)

taaktaak 20. Okt 2008 21:49

Re: einer datei einen tag zuweisen?
 
Hm, habe mal in alten Unterlagen nachgeschaut: In den ersten 32 Bit eines mp3-Files soll eigentlich der mp3-Header placiert sein. Der enthält ja nun durchaus wichtige Informationen auch für die Wiedergabe.

Wenn ich nun 4 Bytes überschrieben habe, sollten damit eigentlich ALLE diese Informationen vernichtet sein. Seltsam, aber ich möchte im Augenblick nicht weiter ergründen wieso es trotzdem funktioniert.
Höre da lieber noch etwas Weihnachtsmusik :dancer:

Namenloser 20. Okt 2008 21:52

Re: einer datei einen tag zuweisen?
 
Geht es denn um "eigene" Dateien oder fremde Formate?

haentschman 21. Okt 2008 18:30

Re: einer datei einen tag zuweisen?
 
Hallo erstmal.... :-D
Zitat:

Erkläre doch mal näher, was du damit bezwecken willst.
...ich rate mal.

- du möchtest die Dateien über eine eindeutige Nummer ansprechen. ( Index )

Da fällt mir als Lösung eine StringList ein. Da hast du zu dem Dateinamen / Pfad einen eindeutigen Index.
Da kannst du sowohl über den Dateinamen den Index herausfinden als auch über den Index den Dateinamen.

bis bald... :hi:

PS: nach dem 3.Mal lesen 8)
- wenn die Datei immer die selbe Nummer tragen soll wird es mit der StringList schwierig, da nicht sicher gestellt ist, daß beim Einlesen der Dateiname immer an der gleichen Position landet. Es sei denn du sortierst dann nach deinen Vorgaben.

Gausi 21. Okt 2008 18:47

Re: einer datei einen tag zuweisen?
 
Zitat:

Zitat von taaktaak
Hm, habe mal in alten Unterlagen nachgeschaut: In den ersten 32 Bit eines mp3-Files soll eigentlich der mp3-Header placiert sein. Der enthält ja nun durchaus wichtige Informationen auch für die Wiedergabe.

Wenn ich nun 4 Bytes überschrieben habe, sollten damit eigentlich ALLE diese Informationen vernichtet sein. Seltsam, aber ich möchte im Augenblick nicht weiter ergründen wieso es trotzdem funktioniert.
Höre da lieber noch etwas Weihnachtsmusik :dancer:

Eine MP3-Datei besitzt keinen Header. Am Anfang der Datei kann der ID3v2-Tag stehen, beginnend mit "ID3" und Versions- und Größeninformationen des Tags. Danach kommen beliebig viele MPEG-Frames. Am Ende kommen manchmal Lyric-Tags und ggf. 128 Bytes für den ID3v1-Tag, beginnend mit "TAG".

Die 4 Bytes, von denen du sprichst, sind die 4 Byte der MPEG-Frame-Header. Jeder der zig-hundert oder tausend Frames hat diesen Header. Da mp3-Dateien an sich keinen Header haben, muss die Wiedergabe-Engine den ersten solchen MPEG-Frame in der Datei suchen. Das geschieht über den 11-Bit-Marker am Anfang des MPEG-Headers und Konsistenzprüfung der übrigen 21Bit in diesen 4 Bytes. Wenn der am Anfang nicht gefunden wird, suchen die meisten Player noch ein paar Kilobyte weiter.

Wenn man also die ersten 4 Bytes einer mp3-Datei überschreibt, wird nur der erste Frame zerstört (iirc 1/26 Sekunde), der Rest läuft normal. Nur unter bestimmten Umständen wird die gesamte Datei für viele Player unbrauchbar, nämlich dann, wenn der ID3v2-Tag zu Beginn der Datei vorhanden ist und größer ist als die Suchtiefe des Players nach dem ersten Frame. Durch das überschreiben wird der ID3-Tag-Header unbrauchbar, wodurch der Tag nicht vom Dekoder übersprungen werden kann.

Edit: Soviel zu OT. Die ersten 4 Bytes für einen Tag der Datei zu nutzen ist und bleibt aber eine schlechte Idee, auch wenn das bei mp3-Dateien manchmal ohne sicht/hörbare Auswirkungen bleibt.

taaktaak 21. Okt 2008 21:59

Re: einer datei einen tag zuweisen?
 
Hallo Gausi!
Vielen Dank für deine ausführliche Erläuterung :hi:


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

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