Laden...

Mp3-Klasse

Letzter Beitrag vor 16 Jahren 23 Posts 19.188 Views
Mp3-Klasse

Diese Klasse ermöglicht mittels DirectX die Wiedergabe von Mp3Dateien und mittels der Id3TagLib auch das automatische Lesen gängiger ID3Tags sobald ein Mp3Objekt erzeugt wird.

Im anhängenden Zip-Archiv befindet sich sowohl das Projekt, als auch die Mp3Lib.dll. Die zusätzlich benötigte ID3TagLib findet Ihr im Mp3Lib-Projekt oder unter folgendem Link:

Bibliothek für ID3v1/ID3v2 Tags in mp3-Dateien

Für Anregungen, Fehlerberichte und/oder Kritik (auch was das Klassendesign betrifft) bin ich natürlich sehr dankbar.

Einen Fehler hab ich schon selber gefunden: Beim abrufen der Titel-Eigenschaft kommt es zu einem Stackoverflow. Ist korrigiert und liegt in der aktuellen Version vor.

Viel Spaß damit!

In der vorhandenen Version sind alle Eigenschaften und Methoden der Klasse kommentiert. Damit die Kommentare angezeigt werden, muss sich die Mp3Lib.xml im selben Verzeichnis wie die Mp3Lib.dll befinden auf die Ihr in eurem Projekt verweist.

  • "Du hast ihn umgebracht!"

  • "Nein. Die Kugel und der Sturz aus dem Fenster haben ihn umgebracht."

Bevor ich die Library installiere frage ich mal was:
Kann man damit auch etwas anderes als MP3 abspielen, vor allem WMA wäre mir wichtig
Leuchtturm

Wma-Dateien können damit auch abgespielt werden. Jedoch können die Tags nicht gelesen und geschrieben werden. Bei Ogg-Dateien bin ich mir nicht sicher ob diese auch abgespielt werden können. Werde ich demnächst testen. Ich stelle heute Mittag übrigens eine neue Version mit noch ein paar Fehlerkorrekturen online.

  • "Du hast ihn umgebracht!"

  • "Nein. Die Kugel und der Sturz aus dem Fenster haben ihn umgebracht."

Danke für die Antwort.
Das ist genau das was ich gesucht habe.

Hi ich bins nochmal,
könntest du bitte mal kurz erklären wie die Library benutzt wird??
Ich bekomme nähmlich ein Fehler wenn ich Mp3File mit <Mp3File>.Play(); abspiele. 🙁
Wäre echt nett 👍
Leuchtturm

Hier nochmal der Code:

Mp3File MusicFile = new Mp3File(@"E:\Musik\01 - Billy Talent - Devil in a midnight mass.mp3");
MusicFile.Play();

Fehlermeldung:

LoaderLock wurde erkannt.
Message: Die DLL "C:\WINDOWS\assembly\GAC\Microsoft.DirectX.AudioVideoPlayback\ 1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.AudioVideoPlayback.dll" unternimmt einen Versuch, innerhalb der Sperre für den OS-Loader eine verwaltete Ausführung durchzuführen. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.

Wie kann ich den fehler umgehen??
Leuchtturm
PS:Auch try-catch klappt nicht 🙁

Das Abspielen läuft über DirectX, d.h. du musst das DirectX-SDK installieren (s. Link unten), dann auf Microsoft.DirectX und Microsoft.DirectX.AudioVideoPlayback in deinem Projekt verweisen (Rechtsklick Verweise -> Verweis hinzufügen, unter dem Reiter .Net). Dann bindest du die Dlls per using-Direktiven ein.


using DirectX;
using DirectX.AudioVideoPlayback

Und das war's dann auch schon.

DirectX-SDK Download:
http://download.microsoft.com/download/3/3/f/33f1af6e-c61b-4f14-a0de-3e9096ed4b3a/dxsdk_aug2007.exe

  • "Du hast ihn umgebracht!"

  • "Nein. Die Kugel und der Sturz aus dem Fenster haben ihn umgebracht."

Ich hab ein Problem damit...

An meiner Soundkarte hängt ein 5.1 Soundsystem. Wenn ich eine einzelne Mp3 Abspiele funktioniert alles Tadellos. Wenn ich mehrere Mp3s hintereinander laufen lassen, dann funktionieren nach einer halben Stunde nur noch die Front Lautsprecher von dem 5.1 System. Rückwärtige, Center und Subwoofer bleiben stumm.

Nach einem Neustart der Anwendung funktionierts wieder... weißt du woran das liegen kann??

Mitn Media Player habsch das Problem net...

gruß Sieben

Nur die Kogge schwimmt! 😁

Original von Sieben
Ich hab ein Problem damit...

Wenn ich mehrere Mp3s hintereinander laufen lassen, dann funktionieren nach einer halben Stunde nur noch die Front Lautsprecher von dem 5.1 System. Rückwärtige, Center und Subwoofer bleiben stumm.

Nach einem Neustart der Anwendung funktionierts wieder... weißt du woran das liegen kann??

Mitn Media Player habsch das Problem net...

gruß Sieben

Sorry, da bin ich echt überfragt, allerdings kenn ich auch mich mit DS gar nicht aus. Welche Version hast du denn? Hab am 7.9. ne neue Version reingestellt, in der n paar ablauftechnische Fehler gefixt wurden.

Aber betrachte das Problem nochmal genau. "Nach ner halben Stunde" ist zu ungenau um den Fehler zu finden.

Danke für den Problembericht!

  • "Du hast ihn umgebracht!"

  • "Nein. Die Kugel und der Sturz aus dem Fenster haben ihn umgebracht."

Original von T-Rip
Das Abspielen läuft über DirectX, d.h. du musst das DirectX-SDK installieren (s. Link unten), dann auf Microsoft.DirectX und Microsoft.DirectX.AudioVideoPlayback in deinem Projekt verweisen (Rechtsklick Verweise -> Verweis hinzufügen, unter dem Reiter .Net). Dann bindest du die Dlls per using-Direktiven ein.

  
using DirectX;  
using DirectX.AudioVideoPlayback  
  

Und das war's dann auch schon.

DirectX-SDK Download:

>

Genau so mache ich es! Wenn ich das programm aus dem Explorer starte geht es auch. Nur beim abspielen kommt eine LoaderLock

Der Fehler ist in einer der ersten Versionen der Dll aufgetreten, weil ich versehentlich versucht hab in der Set-Methode einer Eigenschaft ihr selbst etwas zuzuweisen, statt dem Member.

Also falls du die Dll vor dem 7.9. runtergeladen hast, dann zieh sie dir nochmal. Ich hab auch versucht den Fehler nachzustellen, aber ohne Erfolg. Das hätte ich ja schon früher gemerkt.

  • "Du hast ihn umgebracht!"

  • "Nein. Die Kugel und der Sturz aus dem Fenster haben ihn umgebracht."

Danke erstmal.
Ich habe es mir jetzt noch mal runtergeladen und wieder neu referenziert aber immernoch das selbe.
Das passiert auch wenn ich direkt mit der DirectX-Dll Musik abspiele 🙁
Leuchtturm

Hab mal nach Loader Lock gesucht und bin dann auf folgendes gestoßen.

http://www.microsoft.com/germany/msdn/coding4fun/antme/problemloesungen.mspx#lwe

Versuch mal ob's dann klappt.

  • "Du hast ihn umgebracht!"

  • "Nein. Die Kugel und der Sturz aus dem Fenster haben ihn umgebracht."

Vielen Dank, es funktioniert 👍
Nach was hast du gesucht??
Ich habe nähmlich auch gesucht aber habe nichts gefunden
Ab sofort wird deine Library für meinen MusicPlayer benutzt
Leuchtturm

Freut mich, dass es jetzt doch klappt! Ich hab nach "LoaderLock unternimmt einen Versuch" gesucht. Hab ziemlich schnell was passendes gehabt.

  • "Du hast ihn umgebracht!"

  • "Nein. Die Kugel und der Sturz aus dem Fenster haben ihn umgebracht."

Hätte da noch eine frage.
gibt es dazu noch eine dokumentation wenn nicht wie funktioniert das mit der Lautstärke?
So funktioniert es jedenfalls nicht:
Mp3File musicfile = new Mp3File("C:\music.mp3");
musicfile.Volume=10;
...

...
musicfile.Volume=100;
es ist keine Änderung der Lautsärke erkennbar.

Hi, mithos.

Die Lautstärke muss komischerweise zwischen -1000 und 0 liegen. Weis zwar nicht, warum, aber es ist scheinbar so.

Gruß, Christian.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`

Die Lautstärke muss komischerweise zwischen -1000 und 0 liegen. Weis zwar nicht, warum, aber es ist scheinbar so.

Hmm - könnten Hundertstel dB sein - -10dB ist allerdings nicht unbedingt stumm. Vielleicht sind's ja Zehntel.

Hallo, lassen sich mit der Klasse auch Album Covers auslesen und in einer MP3 Datei speichern?

Ich bezweifle es fast da bisher jede Anwendung die ich kenne die Cover seperat ablegt und jeweils mappt. (z.B. in einem XML-File den Pfad des Tracks (oder albums) und des Covers)

Also The GodFather speichert die glaub ich wirklich in der MP3 Datei.

Hallo,

mit dem Tag-Editor des Windows-Mediaplayers ist es ebenfalls möglich das Cover in der Datei zu speichern.

Gruss
tscherno

To understand recursion you must first understand recursion

http://www.ilja-neumann.com
C# Gruppe bei last.fm

Also mit der MP3 Klasse kann man das Cover auch lesen und schreiben.