Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] CD von C# aus rippen
Xwin7userX
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

[erledigt] CD von C# aus rippen

beantworten | zitieren | melden

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 :D 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 :D
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 :D
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Xwin7userX am .
mfg
Xwin7userX
private Nachricht | Beiträge des Benutzers
chavez
myCSharp.de - Member



Dabei seit:
Beiträge: 252
Herkunft: Österreich

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Xwin7userX
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

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 :D Und mit der DLL kann ich sogar wählen, wohin gerippt wird.
mfg
Xwin7userX
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.389

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

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
Xwin7userX
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1.688

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Xwin7userX
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers