기본적으로 나는 절망적입니다.VB.Net - 오디오 파일 앨범 아트
이 문제와 관련된 모든 Google 결과에서 나는 모든 것을 시도했습니다.
나는 WMP와 매우 유사한 프로그램을 가지고있다. 그것은 axWMP 컨트롤을 사용하여 노래 등을 연주합니다.
나는 많은 종류의 오디오 파일, mp3, m4a, wma 등을 가지고 있습니다. 트랙 #, 제목, 앨범, 아티스트, 올해. 내가 제대로 할 수없는 유일한 것은 앨범 아트입니다.
사용중인 코드는 일부 mp3 파일에서만 작동합니다. 물론 그것은 내가 UltraID3를 사용하고 있으며 mp3에서만 작동하기 때문입니다. 여기
코드입니다 : Dim MP3Tag As New UltraID3
albumArt = Nothing
Try
MP3Tag.Read(path)
Try
Dim pics = MP3Tag.ID3v2Tag.Frames.GetFrames(CommonMultipleInstanceID3v2FrameTypes.Picture)
albumArt = CType(pics(0), ID3v2PictureFrame).Picture
Catch ex As Exception
'albumArt = FetchAlbumImage(j, path)
End Try
Catch ex As Exception
End Try
그러나 나는 태그의 나머지했던 것과 마찬가지로, WMP 컨트롤 자체를 통해 앨범 아트를 가져 오는 시도 :
이Function FetchAlbumArt(index As Integer, filePath As String) As Image
FetchAlbumArt = Nothing
Dim pic As WMPLib.IWMPMetadataPicture = Nothing
Dim tWMP As New WindowsMediaPlayer
tWMP.currentMedia = Me.WMP.currentPlaylist.Item(index)
For i = 0 To tWMP.currentMedia.getAttributeCountByType("WM/Picture", "")
Try
pic = tWMP.currentMedia.getItemInfoByType("WM/Picture", "", i)
Exit For
Catch ex As Exception
Debug.Print(Err.Description)
End Try
Next
If Not IsNothing(pic) Then
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache)
Dim fInfo, fInfos() As IO.FileInfo
Dim dInfo As IO.DirectoryInfo
dInfo = New IO.DirectoryInfo(path)
fInfos = dInfo.GetFiles("*" & FindStringBeforeLastIndexOfChar(FindStringAfterLastIndexOfChar(pic.URL, "/"), ".", False) & "*", IO.SearchOption.AllDirectories)
For Each fInfo In fInfos
If fInfo.Name Like "*" & FindStringBeforeLastIndexOfChar(FindStringAfterLastIndexOfChar(pic.URL, "/"), ".", False) & "*" Then
System.IO.File.Copy(fInfo.FullName, dbFolderPath & "\temp.jpg", True)
End If
Next
Dim albumArt As Image
albumArt = Bitmap.FromFile(dbFolderPath & "\temp.jpg")
FetchAlbumArt = albumArt
End If
End Function
이 기능은 간다 인터넷 익스플로러 템플리트 폴더에 복사하고 이미지를 외부로 복사하여 사용하십시오. 그것은 작동하지만, 같은 mp3 파일에 대해서만 다시 작동합니다.
m4a 파일에 사용할 수있는 Apple Quick Time 컨트롤에 대해 읽었지만 아무 것도 얻을 수 없었습니다.
나를 괴롭히는 한 가지 사실은 mp3에서는 작동하지만 전부는 아닙니다.
내가 작동하지 않는 유일한 단서는 "인덱스가 범위를 벗어났습니다. 컬렉션의 크기가 음수가 아니어야합니다. 매개 변수 이름 : index"온라인 MP3Tag.Read (path) 및 "이 매개 변수가 올바르지 않습니다 (파일에서 작동하지 않을 때마다 pic = tWMP.currentMedia.getItemInfoByType ("WM/Picture "," ", i)의 (HRESULT : 0x80070057 (E_INVALIDARG) 예외) 또는 다른 파일 형식.
WMP 12 자체가 모든 파일의 앨범 아트를 표시하므로 불가능하지 않습니다.
나를 도와 주셔서 감사합니다.