![]() |
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] |
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? |
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 |
Re: low-level-api: MP3 abspieln
![]() ![]() <--runterladen,installieren und nutzen ;) |
Re: low-level-api: MP3 abspieln
@BullsEye: Das ist ihm zu einfach, er will doch Low-Level-API-Programmieren und mp3 selbst entschlüsseln..... ;)
|
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... |
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. |
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. |
Re: low-level-api: MP3 abspieln
Zitat:
|
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). |
Re: low-level-api: MP3 abspieln
Zitat:
![]() ![]() ![]() Dann sind noch weitere Quellen im Internet zu finden, z.B. ![]() ![]() |
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... |
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. |
Re: low-level-api: MP3 abspieln
Zitat:
|
Re: low-level-api: MP3 abspieln
Das war ja auch nur spaß ;)
Ich hab hier noch was schönes gefunden: ![]() |
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. |
How to play WAV files with Wave API
Nein, kann ich leider aus Technischen Gründen nicht
|
Re: low-level-api: MP3 abspieln
Dann mach ich es mal extra für hathor:
![]() |
Re: low-level-api: MP3 abspieln
@Muetze1:
Du Spassvogel! |
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:
![]() |
Re: low-level-api: MP3 abspieln
Zitat:
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... |
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: ![]() ![]() ![]() ![]() und wie bereits gepostet (für die Übersicht): ![]() 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 09:55 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 by Thomas Breitkreuz