Dateitypabfrage und Albumcover zu einer Audiodatei

Neo21

Grünschnabel
Hallo,

nach langem Googeln habe ich hier jetzt einen Thread aufgemacht.
Ich arbeite mit Visual Basic 2005 Express.

1 Frage:

Ich habe in meinem Programm immer einen bestimmten Pfad zu einer Datei im Speicher.

z.B. D:\Musik\Hallo.mp3

Ich möchte diese Datei falls Audiodatei, im WindowsMediaControl ausgeben. Das habe ich auch schon hinbekommen.
Mir geht es nun um die Abfrage, die checkt, ob es eine Audiodatei ist oder nicht.
Das Selbige will ich auch mit Bilddateien haben, wenn möglich.

Mir geht es darum, das mehrere Dateitypen angenommen werden, da der MediaPlayer ja auch mehrere Dateien abspielen kann.


2 Frage:

Gibt es eine API in der ich abfragen kann, ob ein bestimmtes Albumcover zu einer Audiodatei gehört und welche dann, falls ja, den Pfad des Covers zurückschickt.
---------------------------------
Vielen Dank im Voraus.
Neo
 
Hallo,

zu Frage1. Da ich denke das du bereits Code hast, zeig mal was davon dann können wir die leichter helfen. Aber du kannst dir ja ziemlich leicht helfen, in dem du eine Funktion programmierst der du als Parameter den Dateityp übergibst und zurückgibst um was es sich handelt.

Zu Frage2. Was mir einfallen würde, wäre, das du dir dafür erstmal den entsprechenden MP3 Tag ausließt und mit dem Tag z.B. im Internet nach einem Cover suchst.
 
Private Sub ListView2_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles ListView2.ItemSelectionChanged

Dim DateiPfad As String = e.Item.SubItems(1).Text
MediaPlayer.Ctlcontrols.stop()

If Path.GetExtension(DateiPfad) = (".mp3") Then
Play(DateiPfad) ' Lässt Mediaplayer Datei abspielen
End If
If Path.GetExtension(DateiPfad) = (".jpg") Then
Picture(DateiPfad)' Lässt Picturebox Bild ausgeben
End If

Das funktioniert so: Ich habe Dateien in ein Listview geladen und möchte beim Anklicken eine Vorschau, falls möglich, bekommen.(Audio oder Bild)
Hier werden jetzt Unterroutinen gestartet die eine Vorschau zurückgegben.

Ich habs schon so weit gebracht, das eine Folder.jpg Datei, wenn vorhanden, bei der Wiedergabe ausgegeben wird.

Private Sub Play(ByVal Pfad)
MediaPlayer.URL = Pfad
'--------Analyse: Ist ein Folder.jpeg enthalten?----------
Do Until Pfad.ToString.EndsWith("\")
Pfad = Pfad.ToString.Remove(Pfad.ToString.Length - 1, 1)
Loop
Pfad = Pfad + "folder.jpg" 'Generiert Pfad zur Abfrage

If File.Exists(Pfad) = True Then
Picture(Pfad) ' Startet die Ausgabe des Bildes
End If
'---------------------------------------------------------
MediaPlayer.Ctlcontrols.play()
End Sub
 
Ja ich hab ne Art Übergangslösung.

Im Prinzip funktioniert das Programm, aber was ist wenn ich mehrere verschiedene Audiodateien habe? Dann ist das Bild falsch zugeordnet.

Und das mit den Dateitypen, naja, ich dachte es gibt etwas Eleganteres als 10 If Abfragen.
 
Ich weiß nicht genau, ob es in VB so etwas wie eine switch Anweisung gibt. Das würde sich in C# folgendermaßen regeln lassen:
C#:
switch(Path.GetExtension(DateiPfad))
{
    case ".mp3":
        break;
    case ".jpg":
        break;
}
Aber ob und wie das in VB möglich ist, weiß ich nicht. Einfach mal nach switch und break in IntelliSense suchen :)

Und zu dem mit dem Bild: Ich weiß ja nicht, wie du deine Dateistrukturen angelegt hast, aber mal angenommen du hast ungefähr das System
Code:
...\[Band]\[Album]\[Datei]
und um ein Cover für das Album bereitzustellen kann man ein Bild in dem Ordner Speichern, das Cover.jpg heißen muss. Dann würde ich erstens einen TreeView empfehlen, da du dann das ganze nach Alben etc. Strukturiert hast, und zweitens kannst du dir die ifs sparen. Du gibst dem TreeView einen PathSeperator: '\' und rufst dann AlbumTreeViewNode.FullPath auf. Dann hängst du noch links davon den Speicherort von deinen Dateien dran, und rechts ein "\Cover.jpg", und da hast du den Pfad zu dem Cover. Aber das funktioniert nur, wenn du das so Strukturierst.
 
Zuletzt bearbeitet von einem Moderator:
Zurück