C# ähnliche Klasse wie SoundPlayer für mp3s?

1pressaltf4

Cadet 3rd Year
Registriert
Jan. 2011
Beiträge
58
Hi Leute!

Ich möchte in meinen Windows-Forms-Anwendungen Sounds abspielen. Cih habe schon die Kalsse SoundPlayer entdeckt udn verwendet, allerdings kann man sie ja nur für wav Dateien verwenden, und diese werden ziemlich große. Deshlab bin ich auf der Scuhe nach einer ähnlichen Klasse, die mit mp3s arbeiten kann, bzw. nach einer anderen Möglichkeit...

LG
Philipp
 
Hi,

DirectX schon in Betracht gezogen?
Microsoft.DirectX.AudioVideoPlayback.dll einbinden in dein Projekt und dann:

using Microsoft.DirectX.AudioVideoPlayback;

public void PlayAudioFile(string fileName)
{
Audio audio = new Audio(fileName);
audio.Play();
}

Sollte mit allen erdenklichen Medienformaten zurechtkommen denke ich.

VG,
Mad
 
OK, vielen Dank, ich werde es ausprobieren ;)

LG
Philipp

P.S: Wie binde ich eine dll ein? Entschuldigt die Frage, ich bin noch Anfänger...
 
Zuletzt bearbeitet:
Also, habs gerade damit probiert, funktioniert einwandfrei mit MP3-Dateien :)

VG,
Mad
 
Über das Menü "Projekt / Verweis hinzufügen..." sollte ein Dialog erscheinen, wo du die DLL auswählen kannst.
 
Lass den WinForms Kram -> nimm WPF dann hast du auch ein MediaElement was alles kann, was auch der WMP kann.
 
Ähm...DirectX hat nicht zwingend was mit WinForms oder WPF zu tun. In der Tat wäre WPF zwar die bessere weil zukunftsträchtigere Variante, aber da ich annehme, dass er Anfänger ist geht es hier wohl zunächst um die Grundlagen. Und da ist er mit WinForms doch ganz gut dabei. Ausserdem ist sein Projekt wohl so wie es klingt schon ein wenig fortgeschritten. Alles über den Haufen zu werfen macht nicht immer Sinn.

VG,
Mad
 
Also...
ich habe mich jetzt viel mit dem DirectX beschäftigt, allerdings bekomme ich es nicht zum laufen...
Ich bekomme immer folgende Exeption:

Code:
LoaderLock wurde erkannt.
Message: DLL 'C:\Windows\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll' is attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang.
Ich habe auch schon in der MSDN Hilfe gelesen, allerdings nichts gefunden, was zur Problemlösung beiträgt.
Ich hoffe ihr könnt mir nocheinmal helfen...
 
Ähm...DirectX hat nicht zwingend was mit WinForms oder WPF zu tun.
Habe ich das behauptet?
Nein, aber wer jetzt damit anfängt sollte sich nicht noch an WinForms gewöhnen. Das macht den Umstieg auf WPF und das schätzen der WPF Möglichkeiten nur schwerer.

dass er Anfänger ist geht es hier wohl zunächst um die Grundlagen.
Gerade dann sollte man dich nicht mehr mit dem veralteten Kram und deprecated DirectX Wrappern herumschlagen oder?
 
Also zum anfangen kann er nehmen WAS IMMER ER GERADE HAT, guter Stil hat und saubere Programmierung hat nichts mit der verwendeten Sprache zu tun. Als Anfänger gehts erstmal um die Basics, nicht um die sprachenspezifischen Eigenheiten. Und die kann er - wenn er will - sogar mit Pascal lernen.

WPF hat gegenüber WinForms sicher in gewissen Bereichen Vorteile, aber ein bestehendes Projekt komplett umzuwerfen als Anfänger macht keinen Sinn. Wenn er das nächste anfängt kann er sich ja WPF angucken.

VG,
Mad
 
I press ALT+F4:
Ohne Code lässt sich relativ wenig aus der Exception auslesen. Also poste mal soviel du preis geben kannst und willst. Jedes für dich noch so unscheinbare Detail ist da wichtig! Zum Beispiel: Welche Verweise hast du im Projekt, d.h. welche DLL sind mit deinem Projekt/Programm verknüpft?

Allgemein:
Programmieren ist nicht das Benutzen eines Features X des Frameworks Y. Sprachen, Frameworks und alles drumherum ändert sich, viele Dinge sterben, neue Dinge werden geboren. Man kann nun wie ein Lemming jedem Hype hinterher rennen ... aber wie war das doch gleich mit den Lemmingen, die immer vorne liefen?
 
Ich denke, dass ist der "klassische" Fehler, dass du eine WebForms-Anwendung für ein höheres .NET-Framework kompilieren willst und dafür eine ältere DX-Version verwendest. Dafür gibt es in VS eine Möglichkeit:

Gehe unter dem Punkt "Debuggen" auf den Punkt "Ausnahmen". Dort unter "Managed Debugging Assistants" erweitern und bei "LoaderLock" den Haken herausnehmen.

Sollte dann klappen :)

VG,
Mad
 
So...
Jetzt kommt kein LaoderLcok sondern eine DirectXexeption:freak:
Wenn ich die Exeption in einer MessageBox ausgeben lasse, steht nur "Error in the Application".
Ein paar Auszüge aus meinem Code:

die using:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Media;
using System.Runtime.InteropServices;
using Microsoft.DirectX.AudioVideoPlayback;

die Problemmethoden:
private void ton(string dateiname)
{
try
{
Audio ton = new Audio(dateiname);
ton.Play();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}

private void Form1_Load(object sender, EventArgs e)
{
OpenFileDialog odf = new OpenFileDialog();
odf.Multiselect = false;
if (odf.ShowDialog() == DialogResult.OK)
{
ton(odf.FileName);
}
}

Ich hoffe das hilft euch..
(und mir :D )
LG
Philipp
 
Hab grad getestet: Das Gleiche passiert bei mir, wenn ich eine MP3 mit eingefügtem Album-Cover benutze. Sobald ich das Cover entferne gehts.

Liegt also an deiner MP3 würde ich schätzen :)

VG,
Mad
 
Ich habe es gerade versucht, und es funktioniert trotzdem nicht :eek:
Aber was mir aufgefallen ist: beim ersten Aufruf der EMthode passiert ncihts, wenn ich sie anhand eines Buttons öfter aufrufe, crasht sie schließlich, sonst passiert einfach gar nichts..
 
Hm... kannst du mir evtl die Datei, mit der du testest, irgendwo hochladen? Dann kann ichs mir anschauen.

Mal eine andere Datei versucht?

VG,
Mad
 
unzählige Dateien versucht, ich habe auch testweise einen Song von youtube runtergeladen und auch dies hat nciht funktioniert...
 
Interessant. Bei mir ging nur eine Datei nicht auf dem System. Auch 1:1 mit deinem Code. Die DAtei mit dem Album-Cover drin.

Sehr merkwürdig. Kannst du dir irgendwie vorstellen, dass etwas falsch konfiguriert ist bei dir? DirectX Version, Codec-Pack o.Ä.?

VG,
Mad

Edit:

Mit diesen beiden Dateien hab ich getestet. Die DirectX-DLL die ich benutzt hab und eine Test-MP3. Und zwar mit deinem Code. Funktioniert einwandfrei. Wenns bei dir nicht geht: System-Problem. Wenns doch geht haben deine MP3s Probleme.

VG,
Mad
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben