Hallo ihr,
gibt es eine Sound Engine für C# um Mp3 Streams abzuspielen?
Bereits getestet habe ich fmod, allerdings müsste ich mir da einen Wrapper selbst schreiben. Auf DirectX und den WMP würde ich gerne verzichten... ;-)
Danke für eure Antworten,
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
das sind schön einfache Beispiele, nur leider nur für VB und C++. Wäre ein gutes Thema für einen Artikel hier im Board. Wie man einfach Sound abspielen kann, sowas kann man immer brauchen.
Wenn du Lust dazu hast, da was zu schreiben, wende dich an Alexander, der trägt dich als Autor ein.
Hmm, könnte ich eigentlich machen
In Kürze werd ich da mal nen Artikel schreiben.
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
Ich schreib den Artikel trotzdem, da solche Fragen ja immer wieder auftauchen.
Die Wrapper Klasse werd ich noch um einige zusätzliche Features erweitern. CD-Audio, Video, usw. ...
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
Ja, aber da braucht man eine spezielle Bibliothek dafür. Die muss mit der Anwendung mitgeliefert werden.
Wenn man nur ein kleines Programm schreiben möchte, das Mp3s abspielen können soll, ist es doch schön, wenn man mit Boardmitteln auskommen kann, auch wenn die Funktionen sehr rudimentär sind. Besonders, wenn es so einfach ist.
Für komplexere Geschichten ist eine fertige Bibliothek besser geeignet, keine Frage.
Momentan verwende ich die Klasse von Programmierhans, in einem Projekt, in dem das Abspielen einer MP3-Datei völlig ausreicht.
Meine Frage ist jetzt, ob es die Möglichkeit gibt, die Klasse zu erweitern, um festzustellen, ob eine MP3-Datei fertig abgespielt ist, d.h. das Ende festzustellen.
Sehr einfach zu verwenden für die Wiedergabe von Audio- und Video-Material ist Managed DirectX, die Erweiterung für DirectX seit DirectX 8. Wer die DirectX Redistributional schon mal installiert hat (wer hat das eigentlich nicht), dem ist vielleicht am Ende das kleine Fenster mit "Managed blabla" aufgefallen.
Um damit zu entwickeln lädt man sich am besten das DirectX SDK (aktuelle Version Feburar 05 Update) herunter. Danach kann man in seine Projekte die "DirectX.AudioVideoPlayback.dll" einbinden. Danach ist die Sache einfach.
using Microsoft.DirectX.AudioVideoPlayback;
...
string filename = "Song.mp3";
Audio audioPlayback = new Audio(filename);
audioPlayback.Play();
...
Die Klasse Audio bietet noch viele weitere Eigenschaften und Methoden an das Playback zu steuern, z.B. Position, Lautstärke, u.s.w.
Im Hintergrund verwendet DirectX Codecs, die auf dem Rechner installiert sind. Daher wird das Playback auch für andere Formate wie WAV, WMA, u.s.w. funktionieren.
Video-Playback ist übrigens ähnlich einfach. Dies regelt (wie sollte es anders sein) natürlich die Klasse "Video". Viel Spaß beim Probieren.
Geduldet euch nur
Ich setze den Artikel heute Abend online.
Er wird auch erklären, wie man die aktuelle Abspielposition ermittelt.
Ein kleiner simpler Medien-Player, mit dem man Videos, MP3s, WMAs und CDs abspielen kann, werd ich mit zum Artikel packen.
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
mciSendString(string.Format("play {0} from 0 notify",this._Alias),string.Empty ,0,this.Handle);
dann kann man im Fenster ode Control welches this.Handle repräsentiert eine Benachrichtigung abfangen wenn der play fertig ist.
protected override void WndProc(ref Message m)
{
base.WndProc (ref m);
if (m.Msg==MM_MCINOTIFY)
{
//ich hatte hier ein Problem, dass er hier immer 2 mal reingelaufen ist
//mit einem ganz kurzen Thread.Sleep trat es nimmer auf
Thread.Sleep(1);
//schliessen
mciSendString(string.Format("close {0}",this._Alias),string.Empty ,0,this.Handle);
//Play Complete
}
}
}
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
So der Artikel ist online.
Ich hoffe das Beispielprogramm demonstriert die Verwendung von MCI ganz gut.
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
Weis keiner was zu der Fehler nummer? ich habe mitlerweile mehrere beispiele aus dem internet ausprobiert. leider haben alle nicht funktioniert. gibt es noch eine alternative zu mci? am besten etwas das voraussichtlich auf jedem rechner laufen wird.
ok ich glaube ich weiß was der fehler war. im thread [Tutorial] Audio- und Videowiedergabe mit MCI steht die antwort. und zwar muss die applikation als [STAThread] eingestellt sein.
ich habe das jetzt nur hier auf der arbeit getestet und werde das zu hause nochmal überprüfen da ich hier den fehler 266 bekommen habe und zuhause 265.
ich habe das nun zuhause nochmal auf meinem 62 bit windows ausprobiert aber da bekomme ich nun die fehlermeldung "The specified device is not open or is not recognized by MCI."
allerdings ist der code der selbe wie auf dem 32 bit system.
gibt es noch andere voraussetzungen die für MCI erfüllt sein müssen?
Original von Zebes
ok das wars wohl doch noch nciht so ganz.
ich habe das nun zuhause nochmal auf meinem 62 bit windows ausprobiert aber da bekomme ich nun die fehlermeldung "The specified device is not open or is not recognized by MCI."
Ev. ist Dein Windows defekt... scheint so als hättest Du 2 bits verloren :-)
PS: Ja ich gebe es zu mein Post ist nicht wirklich todernst gemeint :-)
Gruss
Programmierhans
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Ich habe zu der Klasse vom Programmierhans mal eine kleine Frage:
vorab: sie funktioniert tadellos, sprich ich kann damit problemlos MP3s abspielen.
Aber: ich habe Störgeräusche dabei, als eine Art "Ploppen" bei manchen Tiefen. Habe ich bei der selben Datei abgespielt mit WinAMP oder dem MediaPlayer nicht.
Jemand eine Ahnung, woran es liegen könnte?
Edit: Hat sich erledigt, ich Löse es nun ohne dieses Knacken per DirectX
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Dragosani am .
Das Beispiel von Programmierhans funktioniert perfekt.
Danke dir!
Dies bezieht sich aber auf MP3-Dateien.
Ich wollte noch einen Radio Stream auf ein OnClick Button setzen. Hat sich schwer gestaltet^^. Wie macht man das am besten?
Ich habe dies nun nicht wirklich schon gemacht. Habe eine Batchdatei erstellt, die den stream startet und auf das OnClick des Buttons startet der Batch!