Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi MP3 in Cache "zwischenspeichern" (https://www.delphipraxis.net/48931-mp3-cache-zwischenspeichern.html)

kurtm1 2. Jul 2005 20:05


MP3 in Cache "zwischenspeichern"
 
Ist es irgendwie möglich einen Teil einer MP3 Datei (die letzten 2 Sekunden) einzulesen (Stream oder sowas ähnliches), und diese dann abzuspielen?
(Außerdem müsste ich dann noch die Lautstärke des Abspielens ändern können)

Daniel G 2. Jul 2005 20:21

Re: MP3 in Cache "zwischenspeichern"
 
Hmm... Kommt darauf an, wie. Du könntest die Datei öffnen und dann soweit vorspulen, bis du bei (Gesamtzeit - 2 Sekunden) angekommen bist,

oder

du liest die Datei halt mit TFileStream aus, wobei du dann natürlich auch den Header entsprechend verarbeiten musst. (Nein, das ist sicher nicht einfach, vor allem bei VBR)

kurtm1 2. Jul 2005 20:29

Re: MP3 in Cache "zwischenspeichern"
 
Zitat:

Zitat von Daniel G
Hmm... Kommt darauf an, wie. Du könntest die Datei öffnen und dann soweit vorspulen, bis du bei (Gesamtzeit - 2 Sekunden) angekommen bist,

Das ist mir auch klar, nur qäre es nicht wirklich effektiv, wenn ich nur 2 Sekunden spielen will...

Daniel G 2. Jul 2005 21:50

Re: MP3 in Cache "zwischenspeichern"
 
Zitat:

Zitat von kurtm1
Zitat:

Zitat von Daniel G
Hmm... Kommt darauf an, wie. Du könntest die Datei öffnen und dann soweit vorspulen, bis du bei (Gesamtzeit - 2 Sekunden) angekommen bist,

Das ist mir auch klar, nur qäre es nicht wirklich effektiv, wenn ich nur 2 Sekunden spielen will...

Jo, das stimmt. Tja, wie gesagt, dann bleibt dir nur die Möglichkeit, den Header zu analysieren um herauszufinden, wo die letzten 2 Sekunden beginnen. Wobei ich mir nicht sicher bin, ob du die Daten so ohne weiteres aus dem Stream "abspielen" kannst. Zumal ich auch so gar keinen Plan hab', wozu du das brauchst und ob das dem Aufwand gerecht wird.

MP3-Formatspezifikationen gibt es auf www.wotsit.org, vllt. findest du ja auf swissdelphicenter.net noch mehr zum Thema MP3-Header.

kurtm1 3. Jul 2005 14:44

Re: MP3 in Cache "zwischenspeichern"
 
Zitat:

Zitat von Daniel G
Zitat:

Zitat von kurtm1
Zitat:

Zitat von Daniel G
Hmm... Kommt darauf an, wie. Du könntest die Datei öffnen und dann soweit vorspulen, bis du bei (Gesamtzeit - 2 Sekunden) angekommen bist,

Das ist mir auch klar, nur qäre es nicht wirklich effektiv, wenn ich nur 2 Sekunden spielen will...

Jo, das stimmt. Tja, wie gesagt, dann bleibt dir nur die Möglichkeit, den Header zu analysieren um herauszufinden, wo die letzten 2 Sekunden beginnen. Wobei ich mir nicht sicher bin, ob du die Daten so ohne weiteres aus dem Stream "abspielen" kannst. Zumal ich auch so gar keinen Plan hab', wozu du das brauchst und ob das dem Aufwand gerecht wird.

MP3-Formatspezifikationen gibt es auf www.wotsit.org, vllt. findest du ja auf swissdelphicenter.net noch mehr zum Thema MP3-Header.

Ich brauche es dazu, um Übergänge zwischen verschiedenen Liedern herzustellen

omata 3. Jul 2005 16:43

Re: MP3 in Cache "zwischenspeichern"
 
Moin,

ich habe so etwas gerade erstellt. Auf Basis des BASS-Systems.
Ich nehme allerdings nicht die letzten 2 Sekunden, sondern messe die letzten 20 Sekunden des Liedes aus. Wenn das Lied gestartet wird, starte ich es in einem zweiten Programm-Thread, in einem lautlosen Kanal parallel. Dort springe ich an die letzten 20 Sekunden, spiele das Lied ab und speichere die Pegel.
Dann gehe ich vom Ende zurück und suche eine bestimmte (selbst definierte) Pegelstelle, bei der das Lied enden soll. Man erhält so nach 20 Sekunden die Abbruchzeit für das aktuelle Lied.
Diese Vorgehensweise ist lieder notwendig, weil man nur dann die Pegel auslesen kann, wenn der Stream abgespielt wird (beim BASS-System).
Wenn du das allerdings mit eigenen Mitteln berechnen willst, dass würde mich dann auch mal interessieren.

Die Endzeit des aktuellen Liedes ist die Startzeit des nächsten Liedes.
Jedes Lied wird bis zum Ende abgespielt. Es entsteht also kein abrupter Wechsel, sondern ein sauberes Überblenden.

MfG
Thorsten

kurtm1 3. Jul 2005 17:00

Re: MP3 in Cache "zwischenspeichern"
 
Ja wigentlich wollte ich genau das selbe coden.

Mit Bass sollen "einfach" 2 Lieder übergeblendet werden.


Ich habe mein Programm jedoch auf Basis der Bass Komponente erstellt, und wollte zunächst 2 Player für die Realisierung des Fadings nehmen, bis ich erkennen musste, dass die Komponente nur einmal im Programm verwendet werden kann.

Daher suche ich nach Alternativen das fading zu coden...

omata 3. Jul 2005 17:32

Re: MP3 in Cache "zwischenspeichern"
 
Du brauchst doch das BASS-System nur einmal, dir stehen doch dann mehrere Kanäle zur Verfügung.
Ich habe sogar zwei Soundkarten und habe durch einen Trick (DLL wird zweimal geladen) in einer Anwendung das BASS-System zweimal gestartet, für jede Soundkarte. Damit kann man auf der einen Soundkarte abspielen (mehrere Kanäle mischen) und die anderen Soundkarte kann als Monitor benutzt werden.

Ich verstehe also nicht ganz, wo dein Problem liegt.

MfG
Thorsten

kurtm1 3. Jul 2005 17:43

Re: MP3 in Cache "zwischenspeichern"
 
ok das klingt alles super.

Mein "Problem" ist, dass ich diese Komponente benutze:
http://www.delphipraxis.net/internal...=376329#376329

Um deine Idee zu realisieren, müsste ich ja wahrscheinlich direkt die bass.dll verwenden..

omata 3. Jul 2005 18:43

Re: MP3 in Cache "zwischenspeichern"
 
Ja, ich habe das BASS-System direkt benutzt.

Das ist eigentlich auch nicht sehr schwer. Der Code der Komponente ist ja auch gegeben.
Mich juckte das gerade, denn die Komponente ist eigentlich noch sehr gut ausbaufähig. Besonders das dynamische Laden der DLL gefällt mir.
Nur leider funktioniert diese Komponente bei mir überhaupt nicht. Schade.
Nicht als Normaler Benutzer und auch nicht als Administrator.
Beim Starten des Beispielplayers bekomme ich einen Integer-Überlauf.

Nja, dann eben nicht.
Kann dir leider mit dieser Komponente nicht weiterhelfen.

MfG
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 Uhr.
Seite 1 von 4  1 23     Letzte »    

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