Laden...

[erledigt] CD von C# aus rippen

Erstellt von Xwin7userX vor 12 Jahren Letzter Beitrag vor 12 Jahren 5.804 Views
X
Xwin7userX Themenstarter:in
11 Beiträge seit 2010
vor 12 Jahren
[erledigt] CD von C# aus rippen

Hallo zusammen,

erstmal eine kurze vorgeschichte: Meine Mutter hat heute zu ihrem Geburtstag einen MP3-Player bekommen. Jetzt hat sie allerdings immer wieder Probleme damit, sich Musik da drauf zu machen (rippen > auf MP3-Player Ordner für Lieder anlegen > Musik rüber kopieren). Ich weiß, das ist eigentlich nicht so schwer, aber manche Leute haben damit eben ihre Probleme 😄 Jetzt dachte ich, dass man das vielleicht ein wenig automatieren könnte. Deshalb hab ich angefangen zu googlen, wie man denn mit C# eine CD rippt. Inzwischen hab ich auch folgenden Code zusammen:


//Verweis auf C:\Windows\System32\wmp.dll
WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayer();
WMPLib.IWMPCdrom cd = wmp.cdromCollection.Item(0);
for (int i = 0; i < cd.Playlist.count; i++)
       cd.Playlist.get_Item(i);
WMPLib.IWMPCdromRip ripper = (WMPLib.IWMPCdromRip)cd;
ripper.startRip();

Das funktioniert auch soweit ganz gut, allerdings wird immer nur das erste Lied "gerippt". Die anderen werden einfach weggelassen, auch wenn ripper.ripState immer noch auf ripping steht. Da ich aber den Ordner wo die Dateien gespeichert werden nachdem das erste Lied gespeichert ist ohne Probleme löschen kann, geh ich mal davon aus, dass das Programm keinerlei Ordnerzugriffe mehr tätigt. Dazu bleibt ripper.ripProgress immer auf 0 stehen, wodurch es unmöglich wird, eine ProgressBar zu implementieren. Weiß einer wie ich das lösen kann? Wenn dann noch einer weiß, wie ich nach dem Ripvorgang herrausfinden kann, wo genau die Dateien gespeichert wurde, wäre das Programm schon so gut wie fertig 😄
Vielen Dank im Vorraus!

Edit: Falls das irgendwas zu sagen hat:
Mein Laufwerk röhrt nach dem Starten des Rippens durchgehend, selbst wenn ich das Programm beende, und hört erst auf, wenn ich es auf und wieder zu mache.
Edit2: Wenn jemand eine andere Methode zum Rippen einer CD kennt, wäre das natürlich auch super 😄

mfg
Xwin7userX

C
252 Beiträge seit 2007
vor 12 Jahren

Also ich hab mit dem C Sharp Ripper gute Erfahrungen gemacht. Einzig bei mixed CDs(also Audio- mit Daten-Tracks) hat er manchmal etwas rumgezickt.

X
Xwin7userX Themenstarter:in
11 Beiträge seit 2010
vor 12 Jahren

Danke für den Link! Den Ripper hatte ich eigentlich schon gefunden, nur hat der bei meiner Test-CD "versagt", da m_drive.IsReady() immer false zurückgegeben hat. Jetzt wo Du den mir aber empfohlen hast, dachte ich so schlecht kann er dann ja vielleicht auch nicht sein und hab noch andere CDs ausprobiert und siehe da es läuft 😄 Und mit der DLL kann ich sogar wählen, wohin gerippt wird.

mfg
Xwin7userX

4.931 Beiträge seit 2008
vor 12 Jahren

Ja, den kann ich auch empfehlen.
Ausgehend davon habe ich selber einen Ripper implementiert (inkl. CD-Text und MP3-Encoding), s. CD-Text einer AudioCD auslesen - WMPLib.dll (die Demo-Anwendung dort rippt nur 29s - aus GEMA-Gründen!!!)

Das MP3-Encoding habe ich vom selben Autor des obigen Artikels: C# MP3 Compressor

Gelöschter Account
vor 12 Jahren

Das passiert beim zusammenkopieren von Code 😉

du holst hier das erste Item:

WMPLib.IWMPCdrom cd = wmp.cdromCollection.Item(0);

Dann hast du eine Sinnfreie Schleife, die nichts wirkliches macht...
Und dann kommt der eigentliche Rip-Vorgang:

WMPLib.IWMPCdromRip ripper = (WMPLib.IWMPCdromRip)cd;
ripper.startRip();

Fällt dir was an den Zeilen auf?

Du rufst das Rip nur für das erste Item auf, das du in den ersten Zeilen holst.

Gruß
Jack30lena

X
Xwin7userX Themenstarter:in
11 Beiträge seit 2010
vor 12 Jahren

Ganz so wie Du schreibst ist es nicht. wmp.cdromCollection.Item(0); stellt das 1. CDRom-Laufwerk da. Da ohne das cd.Playlist.get_item(0) überhaupt nichts gerippt wurde, und mit nur der erste Track, dachte ich, dass ich vielleicht für jedes Item get_item aufrufen muss, hat aber auch nichts bewirkt.

mfg
Xwin7userX

U
1.688 Beiträge seit 2007
vor 12 Jahren

Hallo,

wie groß ist denn cd.Playlist.count? Steht da nur der erste Eintrag drin?
Das Auslesen hat sicher keinen Sinn, aber vielleicht muss man die Titel erst hinzufügen?

X
Xwin7userX Themenstarter:in
11 Beiträge seit 2010
vor 12 Jahren

Die playlist.count hat genau die Anzahl der Titel auf der CD. Aber da ich jetzt die oben genannte Library nutze ist das jetzt egal. Danke für eure Hilfe!

mfg
Xwin7userX