If you need to determine the length of some audio or video file, you can do it in two ways:
As metadata are not always present in the file, the second approach is used in this example.
The function that will determine the duration of the file should perform the following operations:
'Returns the value measured in 1/100s of a second
Public Function GetLength(ByVal inputFilename As String) As Int32
Dim duration As Int32
Try
'Create the reader
Dim reader As IFormatReader = MediaFormatManager.CreateFormatReader _
(inputFilename)
'Get length from the reader
If TypeOf reader Is QTReader Then
Dim _reader As QTReader = CType(reader, QTReader)
duration = _reader.Duration
ElseIf TypeOf reader Is WMReader Then
Dim _reader As WMReader = CType(reader, WMReader)
duration = _reader.Duration
Else
Dim _reader As DSReader = CType(reader, DSReader)
duration = _reader.Duration
End If
reader.Dispose()
Return duration
Catch ex As Exception
Console.WriteLine(ex)
Return duration
End Try
End Function
//Returns the value measured in 1/100s of a second
public static int GetLength(string inputFilename)
{
int duration = -1;
try
{
//Create the reader
IFormatReader reader = MediaFormatManager.CreateFormatReader(inputFilename);
//Get length from the reader
if (reader.GetType().Equals(typeof(QTReader)))
{
QTReader _reader = (QTReader)reader;
duration = _reader.Duration;
}
else if (reader.GetType().Equals(typeof(WMReader)))
{
WMReader _reader = (WMReader)reader;
duration = _reader.Duration;
}
else
{
DSReader _reader = (DSReader)reader;
duration = _reader.Duration;
}
reader.Dispose();
return duration;
}
catch (System.Exception ex)
{
Console.WriteLine(ex);
return duration;
}
}