Uit listbox mp3 afspelen

Status
Niet open voor verdere reacties.
even een andere vraag als ik een song selecteer speelt die hem af, als ik nu automatisch de volgende song wil afspelen zou deze code kunnen werken

Code:
Private Sub Listview1_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Listview1.SelectedIndexChanged

Dim Filename As String = Listview1.SelectedItem
AxWindowsMediaPlayer1.URL = Filename
AxWindowsMediaPlayer1.Ctlcontrols.play()
End Sub

Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As Object,
ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles
AxWindowsMediaPlayer1.PlayStateChange
If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsMediaEnded
Then
If Listview1.SelectedIndex < ListBox1.Items.Count - 1 Then
Listview1.SelectedIndex = ListBox1.SelectedIndex + 1
Else

'Start at the top of the list again if needed

Listview1.SelectedIndex = 0

End If

End If

End Sub

maar deze werkt helaas niet helemaal.

de bedoeling is dus dat de gebruiker song 1 selecteert en dan steeds het volgende nummer in de Listview1 start.
 
Ik ben het eens met TheMightyAtom dat je een externe library nodig hebt.

Je moet lid zijn van CodeProject om te kunnen downloaden. Toevallig was ik dat, dus hier je DLL.

Solution Explorer > Rechtermuisknop > Add Reference > Browse > Selecteer DLL.

:)

[edit] Lijkt mij dat je voor je laatste probleem nog code moet toevoegen om af te spelen? Of werkt het selecteren ook niet?
Ik zal er morgen verder naar kijken.[/edit]
 
Laatst bewerkt:
de code werkt opzicht niet voor het play next song

Ik heb enkele blauwe onderstrepingen namelijk

AxWindowsMediaPlayer1.PlayStateChange()

ListView1.SelectedIndex en ListView1.Items.Count - 1

en de erros zijn

Error 8 'SelectedIndex' is not a member of 'System.Windows.Forms.ListView'. F:\Muziekcd\MusicMania\MusicMania\album1.vb 102 17 MusicMania

Error 2 Identifier expected. F:\Muziekcd\MusicMania\MusicMania\album1.vb 92 63 MusicMania

Error 5 Operator '<' is not defined for types 'System.Windows.Forms.ListView.SelectedListViewItemCollection' and 'Integer'. F:\Muziekcd\MusicMania\MusicMania\album1.vb 96 16 MusicMania

Error 4 Syntax error. F:\Muziekcd\MusicMania\MusicMania\album1.vb 95 1 MusicMania

Error 1 Value of type 'System.Windows.Forms.ListView.SelectedListViewItemCollection' cannot be converted to 'String'. F:\Muziekcd\MusicMania\MusicMania\album1.vb 86 34 MusicMania


dus ik denk dat er wat code mist

(even over de mp3 tags. ik neem aan dat ik de code moet gebruiken op http://www.codeproject.com/KB/recipes/vbmp3header.aspx )
 
Over die MP3 duration: Vergeet die library die is gegeven. Ik heb er een uur mee lopen kl*ten en het werkt van geen kanten.

Dit werkt wel:

  1. Voeg een class toe met de volgende code: http://www.mediafire.com/?g9979xg0ie4nyti en noem die class Mp3Class.
  2. Daarna kun je deze code gebruiken:
[CPP] Dim Duration As String = New Mp3Class("Pad_Naar_Mp3").GetDurationString[/CPP]

Herkomst class: http://www.codeguru.com/vb/gen/vb_multimedia/mp3s/article.php/c4267


Over je andere probleem: Ik zou niet selecteren, maar gewoon de index in een integer stoppen.

'Globale variabele
[CPP]Dim i As Integer = 0 [/CPP]

'In de sub voor als je mediaplayer klaar is met afspelen:
[CPP]''//Code voor afspelen van nummer i van de Listview, pseudocode!!!!!!!:
Afspelen(ListView1.Items.Item(i).SubItems(1).Text[/CPP]

[CPP]''//Verhogen van de index, bij laatste weer naar eerste nummer
If i <> ListView1.Items.Count - 1 Then i += 1 Else i = 0[/CPP]
 
Laatst bewerkt:
Super dat je me helpt en er zoveel tij in stopt nu heb ik het volgende

Ik heb de class toegevoegd aan me project met de naam Mp3Class

Nu heb ik de code
Code:
Dim Duration As String = New Mp3Class("Pad_Naar_Mp3").GetDurationString

deze vereist een pad naam maar ik wil de padnaam gebruiken uit mij listviuw 1 (het nummer wat de gebruiker selecteer) en waar moet ik deze dan plaatsen

Probleem 2
ik gebruik voor het afspelen van me nummer de code
Code:
AxWindowsMediaPlayer1.URL = ListView1.SelectedItems(0).Tag

hoe kan ik de codes van jou voor het tweede probleem hierin intrigreren.

mijn code tot nu toe
Code:
Public Class album1

    Private Sub album1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ControlBox = False
        PictureBox2.Image = New Bitmap(Application.StartupPath + "\hoesjes\1.jpg")
        For Each file As IO.FileInfo In New IO.DirectoryInfo(Application.StartupPath + "\albums\1").GetFiles("*.mp3")
            Dim lvi As New ListViewItem
            lvi.Text = file.Name 'Alleen bestandsnaam als item tekst
            lvi.Tag = file.FullName 'Volledige pad opslaan in de Tag property. Elk item heeft zn eigen Tag
            lvi.SubItems.Add(file.FullName)
            ListView1.Items.Add(lvi)
        Next
    End Sub

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Albums.Show()
        Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
            My.Computer.FileSystem.CopyDirectory( 
            Application.StartupPath & "\albums\1",
            open.SelectedPath, _
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, _
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If
    End Sub

    Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label7.Click
        Pc_info.Show()
    End Sub

    Private Sub ListView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.Click
        AxWindowsMediaPlayer1.URL = ListView1.SelectedItems(0).Tag
        Label2.Text = ListView1.SelectedItems(0).Text
    End Sub
    Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
        Dim afsluiten As Integer
        afsluiten = MsgBox("wil je echt afsluiten?", vbDefaultButton2 + vbYesNo, "Waarschuwing")
        If afsluiten = vbYes Then
            End
        Else

        End If
    End Sub

    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
        Label10.Text = TrackBar1.Value

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim folder As New FolderBrowserDialog
        If folder.ShowDialog = DialogResult.OK Then
            Me.Cursor = Cursors.WaitCursor
            For Each item As ListViewItem In ListView1.SelectedItems
                Try
                    System.IO.File.Copy(item.SubItems(1).Text, folder.SelectedPath & "\" & item.Text & ".mp3")
                Catch ex As Exception
                    Dim a = MsgBox(ex.Message + vbNewLine + vbNewLine & "Operatie Afbreken?", 16 + 4, Me.Text)
                    If a = vbYes Then Exit For
                End Try
            Next
            Me.Cursor = Cursors.Default
            MsgBox("Operatie voltooid!", 64, Me.Text)
        End If

    End Sub

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked = True Then
            AxWindowsMediaPlayer1.settings.mute = True
        Else
            AxWindowsMediaPlayer1.settings.mute = False
        End If
    End Sub

    Private Sub ListView2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView2.SelectedIndexChanged

    End Sub
End Class
 
Voor je eerste probleem:

Ik zou een aparte kolom met de duur toevoegen. Dat kun je gelijk bij het importeren van de muziek doen:

[CPP]Private Sub album1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ControlBox = False
PictureBox2.Image = New Bitmap(Application.StartupPath + "\hoesjes\1.jpg")
For Each file As IO.FileInfo In New IO.DirectoryInfo(Application.StartupPath + "\albums\1").GetFiles("*.mp3")
Dim lvi As New ListViewItem
lvi.Text = file.Name
lvi.SubItems.Add(file.FullName)
lvi.SubItems.Add(New Mp3Class(file.FullName).GetDurationString)
ListView1.Items.Add(lvi)
Next
End Sub[/CPP]

(wel die kolom toevoegen in de designer ;), anders werkt het natuurlijk niet)

Voor je tweede probleem:

Je zou als de status veranderd (de mp3 is afgelopen), van mp3 moeten wisselen.
Ik kan nu niets maken omdat mijn Windows Mediaplayer Control vervelend doet :(
 
Ik denk dat die externe bibliotheek die ik eerder linkte voor het lezen van mp3 tags vast ook wel een custom event heeft dat checked of een mp3 afgelopen is. Dan is het voor jouw heel simpel om het volgende nummer aan te roepen.
 
Die externe bibliotheek kan alleen gegevens ophalen van mp3-bestanden.
En de length (duur)-property werkt bij mij niet. :(
Vandaar dat ik 'm een andere class gaf.

Maar volgens mij heeft het Windows MediaPlayer Component een StatusChanged-event, daarmee zou het moeten lukken.
 
even een vraag als ik de code verander en de tabel tijd toevoeg krijg ik warnings

Warning 7 Function 'GetMPEGType' doesn't return a value on all code paths. Are you missing a 'Return' statement? F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 386 5 MusicMania


Warning 10 Function 'GetSamplingRateFreq' doesn't return a value on all code paths. Are you missing a 'Return' statement? F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 468 5 MusicMania

Warning 3 Unused local variable: 'BitConv'. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 345 13 MusicMania

Warning 1 Unused local variable: 'StartPosition'. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 137 37 MusicMania

Warning 2 Variable 'BitsString' is used before it has been assigned a value. A null reference exception could result at runtime. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 251 29 MusicMania

Warning 4 Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 366 27 MusicMania
errors allemaal in de Mp3Class applicatie blijf ook hangen met het openen
 
Je hebt toch niet de code in de class veranderd? :eek:
 
nee

ik neem aan dat dat tekstbestand in de class gekopieerd moet worden of niet?
 
Ja. Maar ik heb die warnings niet.. ?

Maar het zijn geen foutmeldingen, en je gebruikt die properties volgens mij toch niet.
Dus je kunt er gewoon mee uit de voeten. :)
 
ja het probleem is alleen dat me programma blijft hangen/ niet verder komt dan het album overzicht. Zodra ik de Album1 (het form waar de code met de listview op staat) wil laden hangt het programma

Code:
Public Class album1

[COLOR="red"]    Private Sub album1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ControlBox = False
        PictureBox2.Image = New Bitmap(Application.StartupPath + "\hoesjes\1.jpg")
        For Each file As IO.FileInfo In New IO.DirectoryInfo(Application.StartupPath + "\albums\1").GetFiles("*.mp3")
            Dim lvi As New ListViewItem
            lvi.Text = file.Name
            lvi.SubItems.Add(file.FullName)
            lvi.SubItems.Add(New Mp3Class(file.FullName).GetDurationString)
            ListView1.Items.Add(lvi)
        Next
    End Sub[/COLOR]

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Albums.Show()
        Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
            My.Computer.FileSystem.CopyDirectory( 
            Application.StartupPath & "\albums\1",
            open.SelectedPath, _
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, _
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If
    End Sub

    Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label7.Click
        Pc_info.Show()
    End Sub

    Private Sub ListView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.Click
        AxWindowsMediaPlayer1.URL = ListView1.SelectedItems(0).Tag
        Label2.Text = ListView1.SelectedItems(0).Text
    End Sub
    Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
        Dim afsluiten As Integer
        afsluiten = MsgBox("wil je echt afsluiten?", vbDefaultButton2 + vbYesNo, "Waarschuwing")
        If afsluiten = vbYes Then
            End
        Else

        End If
    End Sub

    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
        Label10.Text = TrackBar1.Value

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim folder As New FolderBrowserDialog
        If folder.ShowDialog = DialogResult.OK Then
            Me.Cursor = Cursors.WaitCursor
            For Each item As ListViewItem In ListView1.SelectedItems
                Try
                    System.IO.File.Copy(item.SubItems(1).Text, folder.SelectedPath & "\" & item.Text & ".mp3")
                Catch ex As Exception
                    Dim a = MsgBox(ex.Message + vbNewLine + vbNewLine & "Operatie Afbreken?", 16 + 4, Me.Text)
                    If a = vbYes Then Exit For
                End Try
            Next
            Me.Cursor = Cursors.Default
            MsgBox("Operatie voltooid!", 64, Me.Text)
        End If

    End Sub

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked = True Then
            AxWindowsMediaPlayer1.settings.mute = True
        Else
            AxWindowsMediaPlayer1.settings.mute = False
        End If
    End Sub

    Private Sub ListView2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView2.SelectedIndexChanged

    End Sub
End Class
 
Laatst bewerkt:
Bij welke code hangt-ie?

[edit] Ik zie 't al, bericht aangepast hè? :P[/edit]


Haal dit tijdelijk eens weg: [cpp]lvi.SubItems.Add(New Mp3Class(file.FullName).GetDurationString)[/cpp]
Hangt-ie nog steeds?
 
Laatst bewerkt:
Dit werkt bij mij anders perfect:

[CPP] For Each item As String In IO.Directory.GetFiles("Map")
If item.EndsWith(".mp3") Then
Dim lv As New ListViewItem
lv.Text = IO.Path.GetFileName(item)
lv.SubItems.AddRange({item, New Mp3Class(item).GetDurationString})
ListView1.Items.Add(lv)
End If
Next[/CPP]

Misschien ligt het aan het aantal items dat je wil importeren? Hoeveel zijn 't er?
 
het zijn 100 items.

deze code werkt bij mij zonder errors

Code:
                For Each file As IO.FileInfo In New IO.DirectoryInfo(Application.StartupPath + "\albums\2").GetFiles("*.mp3")
            Dim lvi As New ListViewItem
            lvi.Text = file.Name 'Alleen bestandsnaam als item tekst
            lvi.Tag = file.FullName 'Volledige pad opslaan in de Tag property. Elk item heeft zn eigen Tag
            lvi.SubItems.Add(file.FullName)
            ListView1.Items.Add(lvi)

maar daar zit die track lengte niet in verwerkt...
 
Laatst bewerkt:
Geeft mijn code errors?? :confused:

Ik heb het getest en het werkte prima. Vandaar mijn vraag:
Welke dan?
 
met jou code

Code:
    Private Sub album1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ControlBox = False
        PictureBox2.Image = New Bitmap(Application.StartupPath + "\hoesjes\1.jpg")
        For Each item As String In IO.Directory.GetFiles(Application.StartupPath + "\albums\1")
            If item.EndsWith(".mp3") Then
                Dim lv As New ListViewItem
                lv.Text = IO.Path.GetFileName(item)
                lv.SubItems.AddRange({item, New Mp3Class(item).GetDurationString})
                ListView1.Items.Add(lv)
            End If
        Next
    End Sub

blijft het programma hangen de volgende warnings

Warning 4 Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 366 27 MusicMania

Warning 5 Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 367 31 MusicMania

Warning 6 Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 368 25 MusicMania

Warning 9 Function 'GetBitrate' doesn't return a value on all code paths. Are you missing a 'Return' statement? F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 456 5 MusicMania

Warning 11 Function 'GetChannelMode' doesn't return a value on all code paths. Are you missing a 'Return' statement? F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 482 5 MusicMania

Warning 8 Function 'GetLayer' doesn't return a value on all code paths. Are you missing a 'Return' statement? F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 399 5 MusicMania

Warning 7 Function 'GetMPEGType' doesn't return a value on all code paths. Are you missing a 'Return' statement? F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 386 5 MusicMania

Warning 10 Function 'GetSamplingRateFreq' doesn't return a value on all code paths. Are you missing a 'Return' statement? F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 468 5 MusicMania

Warning 3 Unused local variable: 'BitConv'. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 345 13 MusicMania

Warning 1 Unused local variable: 'StartPosition'. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 137 37 MusicMania

Warning 2 Variable 'BitsString' is used before it has been assigned a value. A null reference exception could result at runtime. F:\Muziekcd\MusicMania\MusicMania\Mp3Class.vb 251 29 MusicMania
 
Dat zijn warnings, geen errors :P
Niets van aan trekken, die functies/properties gebruik je niet.

Vreemd dat-ie blijft hangen. Probeer het eens met één mp3'tje in die map.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan