2011-06-12 9 views
1

나는 mp3 파일의 태그 정보를 추출해야하는 VB.NET 2005에서 프로젝트를 수행하고 있습니다. 그 목적을 위해 나는이 page에 코드를 사용했다. 그러나 문제는 태그 중 하나가 비어있을 때 값이 반환되지 않는 경우입니다.vb.net에서 mp3 태그 정보 읽기

내가 이런 앨범 정보를 검색 할 수 있습니다 이것을 사용하여 예를 들어

,

Dim album As String = "" 
    album = objMP3V1.Frame(MP3ID3v1.FrameTypes.Album) 

하지만 앨범 변수가 비어 여부를 확인하는 방법을 알고하지 않았다, 나는 앨범 변수를 확인

If (album = "") Then 
     MsgBox("true") 
    ElseIf (album Is Nothing) Then 
     MsgBox("true") 
    ElseIf (album Is DBNull.Value) Then 
     MsgBox("true") 
    End If 

하지만 성공하지 못해 누군가 나를 도울 수 있습니다.

+0

+1 또한 동일한 질문이 있습니다 – Predator

+0

링크 된 코드는 매우 서투른 부분입니다. Use album.Trim() = ""Then –

답변

0

정규 표현식을 사용하여이 문제를 해결했습니다. 당신은보다 전문적인 태그 editior을 찾고 있다면 당신의 도움을 주셔서 감사합니다 ...

Imports System.Text.RegularExpressions 
dim RegEx As New RegularExpressions.Regex("^[a-zA-Z0-9]+$") 
dim Match As Match 
dim film as string 
film = song.Frame(MP3ID3v1.FrameTypes.Album) 
Match = RegEx.Match(film) 
film1 = IIf((Match.Success), film.ToString, "") 

여기 a link이야!

3

ID3v1 태그는 파일의 마지막 128 바이트에 저장됩니다. 처음 세 바이트는 파일에 태그가 저장되어 있음을 알리는 "TAG"입니다. 먼저 파일에 태그가 있는지 확인한 다음 읽습니다.

먼저,해야 내가 VB 몰라하지만 난 프레임을 읽기 전에 생각 :

  1. 열고 파일 Dim objMP3V1 As New MP3ID3v1("file_path")
  2. 테스트, 파일이 objMP3V1.TagExists 플래그 경우 테스트하여에 바람 쐬 태그가있는 경우 그렇다면
  3. 필드/프레임을 읽으십시오.

편집

링크의 코드는 태그가없는 경우

FileGet(intFile, strTag, lngLOF - 127, True) 
     If (strTag.ToUpper <> "TAG") Then 

      ' No ID3v1 tag found 

      mblnTagExists = False 
      mobjFrame(0) = "" 
      mobjFrame(1) = "" 
      mobjFrame(2) = "" 
      mobjFrame(3) = "" 
      mobjFrame(4) = "" 
      mobjFrame(5) = "" 
      mobjFrame(6) = "" 

     Else 

      ' ID3v1 tag found 

      mblnTagExists = True 

      ' Read all frames from the file 

      FileGet(intFile, strTitle) 
      FileGet(intFile, strArtist) 
      FileGet(intFile, strAlbum) 
      FileGet(intFile, strYear) 
      FileGet(intFile, strComment) 
      FileGet(intFile, bytDummy) 
      FileGet(intFile, bytTrack) 
      FileGet(intFile, bytGenre) 

      ' Assign the frame content to the properties 

      mobjFrame(0) = strTitle 
      mobjFrame(1) = strArtist 
      mobjFrame(2) = strAlbum 
      mobjFrame(3) = strYear 
      mobjFrame(4) = bytTrack 
      mobjFrame(5) = strComment 
      mobjFrame(6) = bytGenre 

     End If 
    End If 

그래서, 다음은 "" 문자열로 지정해야한다고 말했습니다. album 필드에 아무런 문자열 다음, 즉, 널 문자 '\0' 포함될 필드의 제 1 위치는 그러므로 그것이를 반환하는 NUM 문자열을 포함한다 없다 그래서 만약

쐬 필드는 고정 길이이다 null 문자열 "". ID3v1 태그가있는 샘플 음악 파일에서이 내용을 확인하라고합니다. ID3v1로 포맷 된 텍스트 파일을 만들어 테스트 할 수도 있습니다.

+0

예, 태그가 존재하는지 확인하고 존재하는 경우 값을 지정합니다. 정보 중 하나가 "앨범"처럼 사용 가능하지 않으면 변수에 값이 저장되지 않습니다. 내가 비어 있는지 확인했지만 비어 있지 않습니다. 그래서 정보를 보유하고 있는지 여부를 확인할 수있는 방법은 무엇입니까? – VKGS

+1

ID3v1의 필드는 고정 길이 필드이며, 존재하지 않으면 널 문자열을 포함해야합니다. 즉, 첫 번째 위치에 '\ 0 ' 캐릭터. 나는 VB에 대해 모르지만 코드를 검사하면 반환 값이'' " – phoxis