AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi MP3 in Cache "zwischenspeichern"
Thema durchsuchen
Ansicht
Themen-Optionen

MP3 in Cache "zwischenspeichern"

Ein Thema von kurtm1 · begonnen am 2. Jul 2005 · letzter Beitrag vom 13. Jul 2005
Antwort Antwort
Seite 2 von 4     12 34      
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#11

Re: MP3 in Cache "zwischenspeichern"

  Alt 3. Jul 2005, 21:17
Hast du vielleicht irgendwo einen Beispiel -Player in dem du direkt mit der bass.dll arbeitest?
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#12

Re: MP3 in Cache "zwischenspeichern"

  Alt 3. Jul 2005, 21:45
Ja diese Komponente.
Du schaust dir den Sourcecode an und baust deine Sachen da ein und soweit sie Sinnvoll sind veröffentlicht du sie wieder.

Was du willst heisst übrigens crossfade.

Ich hab das selber übrigens schon integriet muss mir aber erstmal überlegen ob ich das veröffentliche.
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: MP3 in Cache "zwischenspeichern"

  Alt 3. Jul 2005, 21:58
Moin,

habe mich nochmal mit dieser Komponente beschäftigt.

Und das darf ja wohl nicht war sein!
Jeder, der ein Programm mit dieser Komponente fehlerfrei starten kann, hat seine Bereichs- und Überlaufs-Fehlerprüfung nicht eingeschaltet!

Das heisst alle die so programmieren, programmieren unsicher.

Ich bin zur zeit dabei diese Komponente und alles was damit zusammenhängt zu überarbeiten.
Böse Befehle wie Exit und Halt werden entfernt. Fehlermeldungen, die einfach durch eine MessageBox ausgegeben werden werden in Exceptions gewandelt.
Leider enthält der DLL-Loader auch noch ein Speicherleck.

Die Komponente schränkt die Benutzung das BASS-System unnötig ein, dies möchte ich eingentlich beheben.

Also ich arbeite noch dran...

MfG
Thorsten
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#14

Re: MP3 in Cache "zwischenspeichern"

  Alt 3. Jul 2005, 22:04
Ich habe schon mit dem User "turboPASCAL", der die Bass Komponente zu der oben der Link steht, gecodet hat gesprochen (wegen dem Crossfaden):

Er sagt dazu:
"1. Im constructor TBassdllPlayer.Create wird schon ein Recording Device inizialisiert...
Quellcode: markieren
if not BASS_RecordInit(0) then
begin
BASS_RecordFree;
BASS_Free();
MessageDlg('Cannot start default recording device!', mtError, [mbOk], 0);
halt;
end;

...und zweimal das gleiche Gerät öffnen geht einfach nicht.

Also kann man nicht 2 oder mehr BassdllPlayer in einem Prg. verwenden.

2. Es darf nur eine BASS.DLL in den Speicher geladen werden sonst gibt das eventuell einen Konflikt.

Man müsste das gesamte Ding fast komplett umschreiben auf "Mehrfachbenutzung".
Wenn Du mehrere Sounds gleichzeitig abspielen möchtest ist die BassdllPlayer-Kompo. (leider) nicht geeignet. "
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#15

Re: MP3 in Cache "zwischenspeichern"

  Alt 4. Jul 2005, 02:00
Ich habe mir das Ganze noch mal durch den Kopf gehen lassen, das einfachste um ein Crossfade zu realisieren ist wohl ein simples "Channelblending".

dazu im Demo verwendet:BASS_ChannelSetAttributes(DWORD handle, int freq, int volume, int pan); BASS_ChannelSlideAttributes eignet sich nur zum Ausblenden.

Im Anhang ist dazu eine einfache Demo (Source) es benötigt die Bass.pas und Bass.Dll.

Man kann dies auch umgehen und von der TBassDLLPlayer Komponente die Dateien Bass_Dynamic.pas und DLLLoader.pas in das Verzeichnis kopieren, und in der uMain.pas die Unit Bass(.pas) in der Uses-Klausel durch die Bass_Dynamic(.pas) zu ersetzen damit die Bass.Dll in das Programm mit eingebunden wird.

Die MP3-Dateinamen müssen im Code angepasst werden (kein OpenDialog...) und sie sollten ungefähr gleichlang sein, weiterhin ist das Crossfade nur manuell.


Will man nun Song1 automatisch zu Song2 blenden gibt es eine einfache Lösung im Forum von
www.un4seen.com/ >>>---> Threaded Fade unit

Leider konnte ich wegen Zeitmangel momentan kein besseres Demo schreiben, Sorry.
Angehängte Dateien
Dateityp: zip crossfade_292.zip (13,4 KB, 60x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#16

Re: MP3 in Cache "zwischenspeichern"

  Alt 4. Jul 2005, 16:19
Das Beispiel ist 1A!!

Und wenn man dies jetzt noch "benutzer/anfängerfreundlich" machen könnte, sprich in die Komponente integrieren, dass man 2 Tonspuren gleichzeitig spielen kann, dann wäre das absolut TOP!
  Mit Zitat antworten Zitat
BenTech

Registriert seit: 16. Jun 2003
Ort: Dortmund
60 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: MP3 in Cache "zwischenspeichern"

  Alt 4. Jul 2005, 17:43
Ich weiß nicht, ob du inzwischen zu einem Ergebnis gekommen bist, jedoch habe ich vor kurzem mal eine Komponente erstellt, die Crossfading betreiben kann.
Ein Beispielproggi, das sämtliche Funktionen beschreibt, liegt bei...

Download der Komponente

Die Komponente ist noch nicht komplett fertig. Zum Beispiel fehlt die Lautstärkeregelung. Diese Features dürften aber nicht allzu schwer zu implementieren sein.

Falls verständnisschwierigkeiten aufkommen sollten, helfe ich natürlich gerne

Beschreibung der Komponente und Website

Zur weiteren Erklärung der Funktionsweise:
Ich erstelle zwei Streams die parallel Laufen (hiervon kann man im Prinzip beliebig viele erstellen, wenn man "zuviel" Speicher hat ).
Mit BASS_ChannelSetSync erstelle ich dann eine Callback Prozedur, die automatisch aufgerufen wird, sobald eine bestimmte Stelle im vorangegangenen Track erreicht wurde. Dann wird mit BASS_ChannelSlideAttributes das Fading initialisiert. Eigentlich ganz simpel
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: MP3 in Cache "zwischenspeichern"

  Alt 4. Jul 2005, 17:53
So,

hat einen Moment gedauert...


ich habe jetzt alles überarbeitet und die Begrenzungen, die einem die BassDllPlayer-Komponente auferlegt hat beseitigt.
Das Speicherleck der DllLoader-Unit konnte ich leider noch nicht stopfen!
(aber das habt ihr ja bei der alten Komponente auch nicht gemerkt)

Trotzdem, vielleicht findet ja irgendwer den Fehler bzw. kann ihn beheben. Das Problem ist das die vier erstellen Sections.Base-Elemente durch VirtualFree nicht freigegeben werden. Die Unit ist richtig programmiert (so weit ich das sehen konnte). Der Speicher wird freigegeben aber MemProof sagt mir, dass bei dieser Freigabe ein Fehler passiert ist. Ich habe keine Ahnung, was da los ist
(eventuell liegt es an SP2)

Naja, egal kommen wir jetzt zur Komponente...
Jetzt kann man endlich die Bereichs- und Überlauf- Fehlerprüfungen eingeschaltet lassen. hurra!

Es können jetzt unendlich viele Komponenten (BassDllPlayerEx) in einem Programm verwendet werden.
Jeder Komponente wird dabei eine Soundkarte zugewiesen. Bei neueren Soundsystemen kann man auch einfach mehrere Komponenten der gleichen Soundkarte zuordnen.
Dies ist aber nicht erforderlich, da in jeder Komponente jetzt unendlich viele Kanäle definiert werden können. (Um Probleme mit älteren Soundsystemen zu vermeiden sollte man nur eine Komponente pro Soundkarte einsetzen - das geht dann immer!)

Ich habe mal ein kleines Beispiel angehängt.
Es existiert keine Playlist mehr, sorry hatte ich jetzt keine Lust mehr drauf.
Die Komponente muss nicht installiert werden, einfach entpacken, kompilieren und wohlfühlen...

Das Programm testet fünf Soundkarten und legt für jede in einem PageControl eine Seite an. Wenn man nur eine Soundkarte hat, werden (in der IDE) vier Exceptions ausgelöst (also einfach weiterausführen). Wenn die Exe läuft bekommt man natürlich nichts davon mit. Ich breche die Schleife der Soundkarten nicht mit EXIT ab (weil: ich hasse exit, halt, break, goto).
Auf jeder Soundkartenseite im PageControl können dann über die rechte Maustaste Kanäle hinzugefügt bzw. entfernt werden.

Auf die Aufnahmemöglichkeiten der BassDllPlayer-Komponente bin ich nicht weiter eingegangen. Ich habe einfach die Vorgaben von der BassDllPlayer-Komponente übernommen. Ob das alles so funktioniert weiss ich nicht, mich interresierte nur das Abspielen - vielleicht kann das ja mal einer testen.

Ich möchte mich hier ausdrücklich bei meinen Vorgängern (Gandalfus & turboPascal)
bedanken.
Eure Vorarbeit (im Besonderen das Einbetten der DLL in die EXE) hat mir sehr gefallen.
Ich hoffe euch beiden (und natürlich jeden den es interessiert) gefallen meine Erweiterungen.
Ich bin einfach konsequent den Weg weitergegangen, den Ihr beiden angefangen seit zugehen.
Also nochmal danke für die Möglichkeit.

MfG
Thorsten
Angehängte Dateien
Dateityp: zip bassplayerex-source_116.zip (182,7 KB, 45x aufgerufen)
  Mit Zitat antworten Zitat
BenTech

Registriert seit: 16. Jun 2003
Ort: Dortmund
60 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: MP3 in Cache "zwischenspeichern"

  Alt 4. Jul 2005, 18:00
@omata
Ich finde es nicht so glücklch, die Bass dll mehrfach zu laden. Dafür gibt es doch die Möglichkeit innerhalb von Bass weitere Streams zu erzeugen.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: MP3 in Cache "zwischenspeichern"

  Alt 4. Jul 2005, 18:03
ja, schade dass du es nicht verstanden hast.

Man kann mit der Bass.dll nur eine Soundkarte ansprechen und auf dieser dann mehrere Channel miteinander mischen.

Wenn man aber mehr als eine Soundkarte hat, dann braucht man für jede Soundkarte eine eigene Dll.
Und dann muss man eben die Dll mehrfach (so oft wie Soundkarten vorhanden sind) laden.

MfG
Thorsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 Uhr.
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