Hi !
I know this is a very very old post, but it's well referenced in google. So I publish my solution.
Just make some reverse engineering on the DSS and DS2 file format for extract the information like this :
public static TimeSpan GetDssDuration(string fileName)
{
const int durationOffset = 62;
const int durationLength = 6;
const int headerLength = durationOffset + durationLength;
using (var fileStream = File.OpenRead(fileName))
{
var fileHeader = new byte[headerLength + 1];
fileStream.Read(fileHeader, 0, headerLength);
var hoursData = new byte[2];
var minutesData = new byte[2];
var secondsData = new byte[2];
Array.Copy(fileHeader, durationOffset, hoursData, 0, 2);
Array.Copy(fileHeader, durationOffset + 2, minutesData, 0, 2);
Array.Copy(fileHeader, durationOffset + 4, secondsData, 0, 2);
return new TimeSpan(int.Parse(Encoding.ASCII.GetString(hoursData)), int.Parse(Encoding.ASCII.GetString(minutesData)), int.Parse(Encoding.ASCII.GetString(secondsData)));
}
}
I hope this will help someone.