![]() |
AW: WAV File Info?
Ich stelle hier mal die Ergebnisse des freundlicherweise von @venice2 debuggten Codes und der AudioWerkzeugeBibliothek (v2.0) von @Gausi anhand dieser WAV-Datei gegenüber:
C:\Windows\Media\Windows Logon.wav W32Waves: WaveFormat: 1 Channels: 2 SampleRate: 22050 BitsPerSample: 16 SamplesNumber: 384452 Length: 17,4354648526077 AudioWerkzeugeBibliothek (v2.0): Type: RIFF WAVE FileSize 384496 Bytes Duration 4 sec Bitrate 705 kBit/s Samplerate 22050 Hz Channels: 2 bzw. mit der von @Gausi vorgeschlagenen Divisions-Änderung: Type: RIFF WAVE FileSize 384496 Bytes Duration 4359 millisec Bitrate 705 kBit/s Samplerate 22050 Hz Channels: 2 |
AW: WAV File Info?
Da die Werte nicht übereinstimmen, und ich für eine der beiden Varianten verantwortlich bin, habe ich die Datei mal mit foobar2000 gestartet.
Der sagt mir eine Dauer von 4,359 Sekunden, bei 96113 Samples, 2 Channels und eine Bitrate von 706kbps. Die angezeigte Abspieldauer deckt sich auch mit der tatsächlichen Dauer beim Abspielen. Das entspricht (bis auf eine andere Rundung bei der Bitrate) den Werten meiner Unit. Die Dauer und die Anzahl der Samples bei der W32Waves-Variante weichen jeweils um den Faktor 4 ab. Woher das kommt, weiß ich nicht. |
AW: WAV File Info?
Zitat:
Auch Audacity gibt mir die gleichen werte. |
AW: WAV File Info?
Auch ich vertraue der LIBRARY AudioWerkzeugeBibliothek (v2.0).
|
AW: WAV File Info?
PS: Endlich mal ein schöner deutscher Name für eine Delphi Bibliothek!
|
AW: WAV File Info?
Liste der Anhänge anzeigen (Anzahl: 2)
EurekaLog meldet: Die AudioWerkzeugeBibliothek (v2.0) erzeugt Memory Leaks:
Anhang 55391 Hier ist der EurekaLog CallStack: Anhang 55392 |
AW: WAV File Info?
Man kann die Memory Leaks vermeiden, indem man diesen Code einsetzt:
Code:
Alternativ kann man auch diesen Code verwenden:
procedure TSimpleTagger.FormDestroy(Sender: TObject);
begin MainAudioFile.Free; end;
Code:
MainAudioFile := AudioFileFactory.CreateAudioFile(FileListBox1.FileName);
try if assigned(MainAudioFile) then begin MainAudioFile.ReadFromFile(FileListBox1.FileName); EdtTitle.Text := MainAudioFile.Title; EdtArtist.Text := MainAudioFile.Artist; EdtAlbum.Text := MainAudioFile.Album; EdtGenre.Text := MainAudioFile.Genre; EdtYear.Text := MainAudioFile.Year; EdtTrack.Text := MainAudioFile.Track; Memo1.Clear; Memo1.Lines.Add(Format('Type: %s', [MainAudioFile.FileTypeDescription])); Memo1.Lines.Add(Format('FileSize %d Bytes', [MainAudioFile.FileSize])); Memo1.Lines.Add(Format('Duration %d millisec', [MainAudioFile.Duration])); Memo1.Lines.Add(Format('Bitrate %d kBit/s', [MainAudioFile.Bitrate div 1000])); Memo1.Lines.Add(Format('Samplerate %d Hz', [MainAudioFile.Samplerate])); Memo1.Lines.Add(Format('Channels: %d', [MainAudioFile.Channels])); end else begin EdtTitle.Text := ''; EdtArtist.Text := ''; EdtAlbum.Text := ''; EdtGenre.Text := ''; EdtYear.Text := ''; EdtTrack.Text := ''; Memo1.Clear; end; finally MainAudioFile.Free; end; |
AW: WAV File Info?
Bei der Alternative solltest du dann aber nicht mehr auf "speichern" klicken. Denn dann ist das MainAudioFile schon zerstört, aber nicht NIL, so dass der Zugriff darauf dann (vermutlich) fehlschlägt. Das ist in dieser simplen Demo ein "globales" Objekt, und auch sonst ist es sinnvoll, das auf der global für die Form zu haben, nicht nur in den einzelnen Actions.
Das Free beim Beenden ist natürlich sinnvoll. Aber danach ist es ja eh weg. ;-) |
AW: WAV File Info?
Zitat:
Danke nochmals für die Bibliothek - es ist wirklich ein Glanzstück! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13: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