Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi How to play WAV files with Wave API (https://www.delphipraxis.net/103087-how-play-wav-files-wave-api.html)

DIET3RIX 9. Nov 2007 18:22


How to play WAV files with Wave API
 
Hallo Leute,

ich habe mich ein bissle mit low-level-api beschäftigt, wozu ich leider zu wenig Lesestoff gefunden habe.
Nun bin ich an dem Punkt angelangt, wo ich mich frage wie ich MP3 Dateien (oder andere Formate wie ogg, wma usw.) abspielen kann.

Hat da einer Ahnung von und kann mir ein bissle dabei helfen? Lesestoff zu low-level-api allg. wäre auch sehr hilfreich.

Ich bedanke mich voraus.

MFG
DIET3RIX


PS: Ich weiss das es viele MP3-Player usw. gibt, aber ich mache es für mich und um mein Wissen zu erweitern, aber auch weil Musik mein Hobby ist :)

[edit=SirThornberry]Titel geändert - Mfg, SirThornberry[/edit]

Muetze1 9. Nov 2007 20:23

Re: low-level-api: MP3 abspieln
 
Die Frage die sich für mich stellt ist: was ist für dich eine "Low-Level-API". Also entweder ich spiele sie über die WinAPI ab (ACM->WaveOut) oder ich gehe auf "low-level" und decodiere die MP3 Datei selber. Ganz Low Level wäre dann das direkte ansprechen der Soundkarte mit einem Treiber und Ausgabe des Sounds oder um hier ein wenig mehr die "higher-level API" zu nutzen, falle ich auf WaveOut zurück.

Wie schön doch solche Modewörter sind - sie sind genauso schwammig wie auch die Definition der Leute. Jeder stellt sich was anderes darunter vor, darum: was stellst du dir unter dem Begriff vor?

DIET3RIX 10. Nov 2007 09:53

Re: low-level-api: MP3 abspieln
 
Hi,

sagen wir es mal so.
- MCI (Media Controll Interface) zu verwenden will ich vermeiden.
- Hab leider nichts gefunden, wie ich die Soundkarte direkt ansprechen kann.
- Dann würde ich doch sagen, dass ich das ganze über die "higher-level API" (waveOutWrite) probieren möchte. (Es sei denn du hast Lesestoff zum 2. Punkt)

Ich hab mir schon gedacht, dass ich die MP3-Dateien selber decodieren muss, aber wie schnell bzw. wie langsam ist solch eine Methode?


MFG
DIET3RIX

BullsEye 10. Nov 2007 11:22

Re: low-level-api: MP3 abspieln
 
http://www.delphipraxis.net/internal...t.php?t=119063

http://www.delphipraxis.net/internal...=bassdllplayer
<--runterladen,installieren und nutzen ;)

Progman 10. Nov 2007 11:33

Re: low-level-api: MP3 abspieln
 
@BullsEye: Das ist ihm zu einfach, er will doch Low-Level-API-Programmieren und mp3 selbst entschlüsseln..... ;)

Muetze1 10. Nov 2007 16:40

Re: low-level-api: MP3 abspieln
 
Das schrottige MCI Interface hatte ich auch nicht vermutet. Grundlegend kannst du die MP3 Dateien auch dekodieren lassen, schliesslich ist genau dafür der ACM geschaffen worden und er liefert schon ein Datenformat welches du direkt an WaveOut weitergeben kannst. Weiterer Vorteil: Du kannst durch den ACM auch viele weitere Formate unterstützen, so lange es den entsprechenden Codec gibt. (MP3 Codec zum dekodieren ist in Windows vorinstalliert).

Und zum zweiten Punkt: Es gibt genug und genauso keine Informationen dazu. Jeder Hersteller kocht sein Süppchen beim HW Interface zu den Soundkarten etc. Manche sind gut dokumentiert, andere total schlecht bzw. gar nicht. Ausserdem müsstest du dann für jede beliebige Soundkarte bzw. Hersteller eine extra Unterstützung bauen. Dies nehmen dir sonst die Treiber vom Hersteller für Windows ab. Das ist aber nichtmal das einzige Problem. Wenn du die HW Informationen hättest, müsstest einen Treiber programmieren - und lass dir gesagt sein, dass die Welt in Windows eine komplett andere ist. Es ist nichtmal ansatzweise einfach sowas zu machen - selbst für einen erfahrenen Windows GUI Programmierer. Vor allem kannst du mit dem Teil sehr leicht für Verstimmung im System sorgen und vom totalen Hardwareverlust bis zum dauerhaften Blue-Screen System alles hinbekommen - und das noch nicht mal mit Absicht...

DIET3RIX 10. Nov 2007 17:35

Re: low-level-api: MP3 abspieln
 
Vielen Dank für die Information :thumb:

Dann werde ich den zweiten Punkt wieder schnell vergessen, da sich die Mühe nicht wirklich lohnt.

D.h. also das ich (wma, ogg usw.) MP3-Dateien in WAV-Dateien dekodieren muss und die dann abspielen, oder?
Dann muss ich wohl sehen, wie ich das Dekodieren umsetzen kann, ohne viel Performance zu verbrauchen.

Bitte korrigier mich, wenn ich falsch liege.

Progman 10. Nov 2007 17:53

Re: low-level-api: MP3 abspieln
 
Und warum nimmst du dazu nicht eine gängige DLL (bass.dll, fmod.dll, squall.dll)?
Da ist das alles schon realisiert. Man muss es nur noch nutzen.

Muetze1 10. Nov 2007 18:51

Re: low-level-api: MP3 abspieln
 
Zitat:

Zitat von DIET3RIX
D.h. also das ich (wma, ogg usw.) MP3-Dateien in WAV-Dateien dekodieren muss und die dann abspielen, oder?

Das machen die beim ACM registrierten Audio Codecs doch schon. Vor allem sind die garantiert performanter als jeder Code von dir.

DIET3RIX 10. Nov 2007 19:18

Re: low-level-api: MP3 abspieln
 
Ahso, ok, jetzt habe ich es verstanden. Vielen Dank!
Hast du evtl. bissle Lesestoff für mich? Wäre sehr hilfreich.

@ Progman

Weil ich die schon ausprobiert habe. Jetzt bin ich an dem Zeitpunkt angelangt, wo ich versuche das ganze selber zu programmieren.
So habe ich meinen eigenen Player wie ich den haben will und zusätzlich erweitere ich mein Wissen (höhrer Priorität).

Muetze1 10. Nov 2007 21:53

Re: low-level-api: MP3 abspieln
 
Zitat:

Zitat von DIET3RIX
Hast du evtl. bissle Lesestoff für mich? Wäre sehr hilfreich.

Naja grundsätzlich natürlich die MSDN: Audio Compression Manager (ACM), Audio Mixers und natürlich Waveform Audio.

Dann sind noch weitere Quellen im Internet zu finden, z.B. Zarko Gajic: Converting WAV to MP3 and back, in C: Playing Audio in Windows using waveOut Interface, etc.

Muetze1 11. Nov 2007 00:08

Re: low-level-api: MP3 abspieln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe in der letzten Stunde mal zum ausprobieren die MSDN und darin WaveOut und mmIO angeschaut. Mit den Funktionalitäten kann man wirklich schnell was abspielen. Im Anhang ein kleines Projekt welches eine angegebene WAVE Datei lädt und abspielt. Die Buttons einfach der Reihe nach von oben nach unten drücken.

Es ist nur ein grundlegendes Beispiel, d.h. für eine richtige Verwendung muss man noch einiges machen. U.a. sollte man immer nur häppchenweise das Wave File einlesen und auch nur so immer an WaveOut verfüttern. Bisher wird ein grosser Block gelesen und der wird abgespielt - somit steigt natürlich der App Speicherhunger...

Aber ich denke für ein grundlegenden Einblick sollte es nutzbar sein...

DIET3RIX 11. Nov 2007 10:17

Re: low-level-api: MP3 abspieln
 
Wow, super! Vielen Dank, dass du dir Mühe gibst mir zu helfen.
Vielleicht hast du Lust für mich alles zu programmieren und dann behaupte ich, dass es von mir wäre :lol: (nicht ernst nehmen ;) )

Wenn ich Zeit finde, dann werde ich mich hinsetzen und langsam mit meinem Projekt beginnen.
Evtl. poste ich hier dann mein Fortschritt.

Muetze1 11. Nov 2007 12:04

Re: low-level-api: MP3 abspieln
 
Zitat:

Zitat von DIET3RIX
Vielleicht hast du Lust für mich alles zu programmieren ...

Nö, denn du wolltest doch was lernen. Aber ich denke ich werden zwischendurch mal versuchen das abspielen nach meinen eigenen Anmerkungen umzustellen und dann werde ich auch nochmal ein wenig probieren den ACM zu nutzen...

DIET3RIX 11. Nov 2007 15:12

Re: low-level-api: MP3 abspieln
 
Das war ja auch nur spaß ;)

Ich hab hier noch was schönes gefunden: http://juhara.com/article-14-Playing...-Wave-API.html

hathor 11. Nov 2007 16:06

Re: low-level-api: MP3 abspieln
 
@DIET3RIX:

Kannst Du bitte den bl.... Titel nicht ändern in:

How to play WAV files with Wave API

Damit könnte dann jeder was damit anfangen.

DIET3RIX 11. Nov 2007 18:41

How to play WAV files with Wave API
 
Nein, kann ich leider aus Technischen Gründen nicht

Muetze1 11. Nov 2007 20:35

Re: low-level-api: MP3 abspieln
 
Dann mach ich es mal extra für hathor: Playling WAV with Wave API

hathor 11. Nov 2007 21:37

Re: low-level-api: MP3 abspieln
 
@Muetze1:

Du Spassvogel!

SirThornberry 12. Nov 2007 06:27

Re: How to play WAV files with Wave API
 
und hier gibts auch noch ein Beispiel von mir wie das ganze mit Callbacks und mehreren Buffern geht:
http://www.delphipraxis.net/internal...=657793#657793

Muetze1 12. Nov 2007 08:26

Re: low-level-api: MP3 abspieln
 
Zitat:

Zitat von hathor
@Muetze1:

Du Spassvogel!

Wieso?

1. Der Thread will darauf hinaus, MP3 Dateien abzuspielen. Warum sollte er also den Threadtitel ändern?
2. Das abspielen von WAVE ist der erste Schritt dahin um dann nachher den ACM dazwischen zu schalten um dann halt auch MP3 zu unterstützen.
3. Der letzte Link von DIET3RIX hat genau diesen Titel den du vorgeschlagen hast, somit war es für mich eindeutig, dass du diesen meintest.
4. Warum sollten wir einen Thread english benennen by default?
5. Ich habe gepostet, damit dadurch bei der Suche auch der entsprechende Link unter dem Titel von den Nutzern zu finden ist (visuell), da der Titel der gelinkten Seite keine Leerzeichen enthält und somit auch bei der Suche vllt. nicht gefunden wird.

Warum DIET3RIX nun den gesamten Thread (in meinen Augen falsch) umbenannt hat, verstehe ich nicht. Warum du das für den Thread forderst noch weniger. Warum wir hier darüber diskutieren noch weniger...

DIET3RIX 26. Dez 2007 13:28

Re: How to play WAV files with Wave API
 
Hallo,
nach langer Zeit melde ich mich wieder.
Hab mich in letzter Zeit ein bissle damit beschäftigen können und habe einige Sachen hinbekommen.
Eingie Links will ich nicht vorenthalten:

http://wwwswt.informatik.uni-rostock...g06/index.html
http://www.delphi-library.de/topic_W...+API_7163.html
http://www.it.fht-esslingen.de/~schm...L/node107.html
http://msdn2.microsoft.com/en-us/lib...8VS.85%29.aspx
und wie bereits gepostet (für die Übersicht): http://juhara.com/article-14-Playing...-Wave-API.html

Jetzt möchte ich andere Formate wiedergeben. Für welche Methode soll ich mich entscheiden?
ACM wär bestimmt nicht verkehrt, doch ich schaffe den Anfang irgendwie nicht.
Hat einer von euch 'n Code-Schnipsel o.ä? (Am besten für MP3-Format)

Und ich habe den Titel nicht geändert, ich hab nicht die nötigen Rechte zu ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 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