Hi jaensen,
erstmal Danke für deine Timecode Komponente. Die hat mir ein gutes Stück Arbeit abgenommen. Mir ist nur aufgefallen, dass die Duration Berechnung nicht ganz korrekt hinhaut.
Beispielsweise bei einem Input von
tcIn = 01:00:00:00
tcOut = 01:00:33:00
FrameBase = 24
Erhalte ich ein Output von 01:00:33:00
Würde aber ein Output von 00:00:33:00 erwarten
Da ich deine Berechnung nicht ganz nachvollziehen kann und sehr schnell ein Ergebnis brauchte, habe ich zu einer Quick & Dirty Lösung gegriffen.
Dazu habe ich die durationInFrames in Millisekunden umgerechnet. Bei einer FrameBase von 24 dauert ein Frame 41.666666667 ms. Also habe ich folgendes berechnet:
C#-Code: |
TimeSpan t = TimeSpan.FromMilliseconds(durationInFrames * 41.666666667);
|
dann habe ich einfach aus der TimeSpan wieder den TimeCode herausgezogen:
C#-Code: |
return new MediaTimeCode()
{
Hours = t.Hours,
Minutes = t.Minutes,
Seconds = t.Seconds,
Frames = (int)Math.Round(t.Milliseconds / 41.666666667, MidpointRounding.AwayFromZero)
};
|
Wie sauber dies nun in jedem erdenklichen Fall funktioniert, das kann ich auf die schnelle nicht sagen (Stichwort eventuelle Rundungsfehler). Die Berechnung meiner Timeline konnte ich damit aber bisher fehlerfrei umsetzen.