Retrieving Media File Information Example for Visual Basic

' A simple C++ example for using the ltmmMediaInfo object.
' This example will retrieve the source file properties and show them in message boxes.

Private Sub File_Info(File As String)
   Set MI = New ltmmMediaInfo
   Dim sMsg As String
   
   sMsg = ""

   ' set the source file:
   MI.sourcefile = File

   ' general properties:
   On Error Resume Next
   AddStringToMsg "Source file: ", MI.sourcefile, sMsg
   AddStringToMsg "File size: ", Str(MI.SourceFileSize), sMsg
   AddStringToMsg "Number of streams: ", Str(MI.OutputStreams), sMsg
   AddStringToMsg "File duration: ", Str(MI.SourceDuration), sMsg
   AddStringToMsg "Source BitRate : ", Str(MI.SourceBitRate), sMsg
   AddStringToMsg "Source format: ", Str(MI.SourceFormat), sMsg
   AddStringToMsg "Source format name: ", MI.SourceFormatName, sMsg
   AddStringToMsg "Source filter CLSID: ", MI.SourceFilterClassID, sMsg
   AddStringToMsg "Source filter name: ", MI.SourceFilterName, sMsg
   AddStringToMsg "Title The name for a group of related video files (called "Chapters") on your DVD. For example, for a DVD called "My Summer Vacation," you might have the titles "Water Skiing," "New Friends," and "Hiking." For each of those titles, you might have one or more different video files.: ", MI.Title, sMsg
   AddStringToMsg "Author: ", MI.Author, sMsg
   AddStringToMsg "Description: ", MI.Description, sMsg
   AddStringToMsg "Rating: ", MI.Rating, sMsg
   AddStringToMsg "Copyright: ", MI.Copyright, sMsg

   MsgBox sMsg
   
   ' stream properties:
   For lIndex = 0 To MI.OutputStreams – 1
   
      On Error Resume Next
      sMsg = ""
      MI.CurrentStream = lIndex

      AddStringToMsg "Stream number: ", Str(MI.CurrentStream), sMsg
      AddStringToMsg "Stream type: ", MI.StreamType, sMsg
      AddStringToMsg "Stream type name: ", MI.StreamTypeName, sMsg
      AddStringToMsg "Stream subtype: ", MI.StreamSubtype, sMsg
      AddStringToMsg "Stream subtype name: ", MI.StreamSubtypeName, sMsg
      AddStringToMsg "Stream duration: ", Str(MI.StreamDuration), sMsg

      ' video specific
      sMsg = sMsg & Chr$(13) & Chr$(10)
      sMsg = sMsg + "       *** Video specific properties ***"
      sMsg = sMsg & Chr$(13) & Chr$(10)

      AddStringToMsg "Video frame rate: ", Str(MI.VideoFrameRate), sMsg
      AddStringToMsg "Video width: ", Str(MI.VideoWidth), sMsg
      AddStringToMsg "Video height: ", Str(MI.VideoHeight), sMsg
      AddStringToMsg "Video bit count: ", Str(MI.VideoBitCount), sMsg
      AddStringToMsg "Video compression: ", Str(MI.VideoCompression), sMsg
      AddStringToMsg "Video bit rate: ", Str(MI.VideoBitRate), sMsg
      AddStringToMsg "Video frames count: ", Str(MI.VideoFrames), sMsg

      ' Audio specific
      sMsg = sMsg & Chr$(13) & Chr$(10)
      sMsg = sMsg + "       *** Audio specific properties ***"
      sMsg = sMsg & Chr$(13) & Chr$(10)

      AddStringToMsg "Audio format tag: ", Str(MI.AudioFormatTag), sMsg
      AddStringToMsg "Audio channels: ", Str(MI.AudioChannels), sMsg
      AddStringToMsg "Audio frequency: ", Str(MI.AudioSamplesPerSec), sMsg
      AddStringToMsg "Audio sample size: ", Str(MI.AudioBitsPerSample), sMsg
      AddStringToMsg "Audio average bytes per second: ", Str(MI.AudioAvgBytesPerSec), sMsg

      MsgBox sMsg
   Next lIndex
   
   MI.ResetSource
   Set MI = Nothing
   
End Sub

Private Sub AddStringToMsg(sTitle As String, sString As String, sMsg As String)
   sMsg = sMsg + sTitle
   If sString = "" Then
      sMsg = sMsg + "NA"
   Else
      sMsg = sMsg + sString
   End If
   sMsg = sMsg & Chr$(13) & Chr$(10)
End Sub