31/10 14:22
Carlo
Non si capisce cosa chiedi.
Le foto delle copertine ce le hai? oppure le devi recuperare da qualche sito?
Le foto delle copertine ce le hai? oppure le devi recuperare da qualche sito?
in programmazione tutto è permesso
31/10 16:21
nightwolf
Le foto delle copertine le ho, infatti se apro il windows media player di windows quando suona una canzone vedo la copertina,infatti volevo vedere quella copertina anche quando suona il mio mediaplayer. Solo che non come fare con folderbrowserdialog. Con openfiledialog non ho problemi.
aaa
31/10 17:15
Carlo
OpenFileDialog serve per selezionare uno o più files contenuti in una cartella.
FolderBrowserDialog serve per selezionare una cartella.
I files .mp3 possono contenere immagini (artwork), solitamente la copertina, qui per leggere l'immagine contenuta in un .mp3:
stackoverflow.com/questions/35103287/…
FolderBrowserDialog serve per selezionare una cartella.
I files .mp3 possono contenere immagini (artwork), solitamente la copertina, qui per leggere l'immagine contenuta in un .mp3:
stackoverflow.com/questions/35103287/…
in programmazione tutto è permesso
31/10 17:46
nightwolf
Infatti, se utilizzo openfiledialog e seleziono il brano da suonare questo viene caricato nella listbox e mi compare la copertina nella picturebox, ma se carico le canzoni nella listbox attraverso folderbrowserdialog e dopo faccio suonare il mediaplayer selezionando una canzone dalla lista non compare la copertina. Io vorrei che quando seleziono una canzone dalla listbox questa oltre a suonare mi faccia comparire la copertina nella picturebox. Utilizzando folderbrowserdialog. È fattibile?
aaa
31/10 22:14
Carlo
come aggiungi il file al mediaplayer è ininfluente.
Usi AxWMPLib o equivalente?
Posta il codice.
Usi AxWMPLib o equivalente?
Posta il codice.
in programmazione tutto è permesso
01/11 9:55
nightwolf
ecco il codice che uso
Imports WMPLib Imports System.IO Imports TagLib.Id3v2 Public Class media_pleyer Dim numero As Integer Dim canzoni() As String Dim i As Integer Dim musica As String Dim indice As Integer Dim playing As Boolean Private Sub Nexttrack() indice = List_canzoni.SelectedIndex indice = indice + 1 If indice = Label4.Text Then indice = 0 End If List_canzoni.SelectedIndex = indice End Sub Private Sub Previoustrack() indice = List_canzoni.SelectedIndex indice = indice - 1 If indice < 0 Then indice = Label4.Text - 1 End If List_canzoni.SelectedIndex = indice End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles btn_open.Click AxWindowsMediaPlayer1.Visible = True List_canzoni.Visible = True FolderBrowserDialog1.ShowDialog() If FolderBrowserDialog1.SelectedPath = "" Then Exit Sub Else canzoni = System.IO.Directory.GetFiles(FolderBrowserDialog1.SelectedPath) End If For i = 0 To canzoni.Length - 1 ListBox1.Items.Add(canzoni(i)) List_canzoni.Items.Add(System.IO.Path.GetFileName(canzoni(i))) Next numero = List_canzoni.Items.Count Label4.Text = numero btn_play.Enabled = True End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_play.Click Timer2.Enabled = True List_canzoni.SelectedIndex = 0 ListBox1.SelectedIndex = List_canzoni.SelectedIndex musica = ListBox1.Text AxWindowsMediaPlayer1.URL = musica musica = ListBox1.SelectedItem AxWindowsMediaPlayer1.URL = musica lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles btn_pause.Click If playing Then AxWindowsMediaPlayer1.Ctlcontrols.pause() Else AxWindowsMediaPlayer1.Ctlcontrols.play() End If playing = Not playing End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btn_stop.Click AxWindowsMediaPlayer1.URL = "" Timer2.Enabled = False lb_title.Text = "Title" Label3.Text = "00:00" Label6.Text = "00:00" TrackBar3.Value = 0 End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btn_next.Click Nexttrack() lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btn_previous.Click Previoustrack() lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name End Sub Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles trc_volume.Scroll AxWindowsMediaPlayer1.settings.volume = trc_volume.Value lb_volume.Text = trc_volume.Value.ToString + "%" End Sub Private Sub media_pleyer_Load(sender As Object, e As EventArgs) Handles MyBase.Load List_canzoni.Visible = False trc_volume.Value = AxWindowsMediaPlayer1.settings.volume btn_play.Enabled = False lb_volume.Text = "50%" End Sub Private Sub Button9_Click(sender As Object, e As EventArgs) Handles btn_fullscreen.Click AxWindowsMediaPlayer1.fullScreen = True End Sub Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick Timer2.Interval = 60 Label3.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentPositionString Label6.Text = AxWindowsMediaPlayer1.currentMedia.durationString Dim cur As Integer = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition Dim len As Integer = AxWindowsMediaPlayer1.currentMedia.duration TrackBar3.Value = cur TrackBar3.Maximum = len If TrackBar3.Value = 100 Then TrackBar3.Value = 0 End If End Sub Private Sub AxWindowsMediaPlayer1_Enter(sender As Object, e As EventArgs) Handles AxWindowsMediaPlayer1.Enter AxWindowsMediaPlayer1.fullScreen = False End Sub Private Sub TrackBar3_Scroll(sender As Object, e As EventArgs) Handles TrackBar3.Scroll AxWindowsMediaPlayer1.Ctlcontrols.currentPosition = TrackBar3.Value End Sub Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles List_canzoni.SelectedIndexChanged Label2.Text = List_canzoni.SelectedIndex ListBox1.SelectedIndex = List_canzoni.SelectedIndex musica = ListBox1.Text AxWindowsMediaPlayer1.URL = musica Timer2.Enabled = True lb_title.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.name End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Label7.Text = Now.Hour & ":" & Now.Minute & ":" & Now.Second End Sub End Class
aaa
01/11 12:30
Carlo
Ok visto funziona.
Dove vedevi l'immagine di copertina? nel lettore multimediale?
Se vuoi gestire le immagini contenute negli mp3 coma già ti avevo anticipato puoi usare TagLib, disponibile per Framework.Net, NetStandard, Core, ecc.
Ti posto un esempio commentato, ti sarà facile usare/modificare quello che ti serve:
Non posso allegare perché supera i 2MB, ecco il link dropBox, non serve che ti registri puoi annullare la richiesta:
dropbox.com/scl/fi/v13u389a66nsd13bi0hk3/…
Per completezza il codice:
Dove vedevi l'immagine di copertina? nel lettore multimediale?
Se vuoi gestire le immagini contenute negli mp3 coma già ti avevo anticipato puoi usare TagLib, disponibile per Framework.Net, NetStandard, Core, ecc.
Ti posto un esempio commentato, ti sarà facile usare/modificare quello che ti serve:
Non posso allegare perché supera i 2MB, ecco il link dropBox, non serve che ti registri puoi annullare la richiesta:
dropbox.com/scl/fi/v13u389a66nsd13bi0hk3/…
Per completezza il codice:
Imports System.IO Imports AxWMPLib ' pacchetto NuGet: TagLibSharp oppure TagLibSharp-patched ' richiede Framework 4.6.2 o successivo ' Casella degli strumenti / Scegli elementi / Componenti COM / Windows Media Player (WMPLib.dll) ' aggiungi cartelle e/o files con i tasti Add ' usa multiselezione con shift o ctrl ' esegui cliccando un brano in listBox ' al termine autoplay del prossimo brano in lista, se ultimo ricomincia dall'inizio ' cancella un brano, il prossimo andrà in play ' ridimensiona il form ' scegli lo spazio da dedicare alla listBox e pictureBox spostando la linea di separazione di splitContainer Partial Public Class Form1 Private Sub axWindowsMediaPlayer1_PlayStateChange(ByVal sender As Object, ByVal e As _WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange If CType(e.newState, WMPLib.WMPPlayState) = WMPLib.WMPPlayState.wmppsMediaEnded Then ' il file è terminato If ListBox1.SelectedIndex = -1 Then Return 'non ci sono files selezionati Dim indice As Integer = ListBox1.SelectedIndex + 1 'prossimo If indice > ListBox1.Items.Count - 1 Then indice = 0 'accapo ListBox1.SelectedIndex = indice 'selezione prossimo playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine End If End Sub Private Sub butAddFolder_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButAdFolder.Click If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then '// è stata scelta una cartella ListBox1.Items.AddRange(Directory.GetFiles(FolderBrowserDialog1.SelectedPath, "*.mp3")) ' tutti gli mp3 in listBox End If End Sub Private Sub ButAddFile_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButAddFile.Click OpenFileDialog1.RestoreDirectory = True 'parte da vecchia cartella OpenFileDialog1.Filter = "File MP3 (*.mp3)|*.mp3|Tutti i file (*.*)|*.*" OpenFileDialog1.Multiselect = True 'multiselezione attiva If OpenFileDialog1.ShowDialog() = DialogResult.OK Then ' sono stati scelti dei file ListBox1.Items.AddRange(OpenFileDialog1.FileNames) 'tutti i flies selezionati in listBox End If End Sub Private Sub listBox1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ListBox1.Click If ListBox1.SelectedIndex = -1 Then Return 'nessun file selezionato playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine End Sub Private Sub butEliminaSel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButEliminaSel.Click Dim indice As Integer = ListBox1.SelectedIndex 'salvo la posizione If indice = -1 Then Return 'nessun file selezionato ListBox1.Items.RemoveAt(indice) 'rimuovo il selezionato If ListBox1.Items.Count = 0 Then Return 'la listBox è vuota If indice > ListBox1.Items.Count - 1 Then indice = 0 'daccapo ListBox1.SelectedIndex = indice 'selezione alla vecchia posizione playFile(ListBox1.SelectedItem.ToString()) 'routine di play + immagine End Sub Private Sub butEliminaAll_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButEliminaAll.Click ListBox1.Items.Clear() 'svuota End Sub Private Sub playFile(ByVal nome As String) Me.BeginInvoke(New Action(Sub() '// chiamata crossthread, serve quando il play finisce senza intervento utente Me.AxWindowsMediaPlayer1.URL = nome End Sub)) Dim file As TagLib.File = TagLib.File.Create(nome) 'file per tagLib Dim firstPicture As TagLib.IPicture = file.Tag.Pictures.FirstOrDefault() 'prima immagine incontrata If firstPicture IsNot Nothing Then 'se l'immagine c'è Dim bin As Byte() = firstPicture.Data.Data 'array di byte dell'immagine PictureBox1.Image = Image.FromStream(New MemoryStream(bin)) 'immagine su pictureBox Else PictureBox1.Image = Nothing 'non c'è un'immagine nel file .mp3 End If End Sub End Class
Ultima modifica effettuata da Carlo 01/11 12:49
in programmazione tutto è permesso