C# Frames nach hh:mm:ss:frame

doghma

Komplett-PC-Aufrüster(in)
Hi,

ich suche ne möglichst saubere Methode um Frames (Film) nach hh:mm:ss:frame umzurechnen.

Bisher habe ich:

int temp_stunden = temp_minuten / 60;
int temp_restminuten = temp_minuten - (temp_stunden * 60);
float temp_minuten_float = Convert.ToSingle(Convert.ToSingle(Filmheaderdaten[4]) / Convert.ToSingle(Filmheaderdaten[25]) / 60);
int temp_restsekunden = Convert.ToInt32((Convert.ToSingle(temp_minuten_float * 100) - Convert.ToSingle(temp_minuten * 100)) / 100 * 60);
if (temp_restsekunden < 10)
{
if (temp_restminuten < 10)
{
header = temp_stunden + ":0" + temp_restminuten.ToString() + ":0" + temp_restsekunden.ToString();
}
else
{
header = temp_stunden + ":" + temp_restminuten.ToString() + ":0" + temp_restsekunden.ToString();
}
}
else
{
if (temp_restminuten < 10)
{
header = temp_stunden + ":0" + temp_restminuten.ToString() + ":" + temp_restsekunden.ToString();
}
else
{
header = temp_stunden + ":" + temp_restminuten.ToString() + ":" + temp_restsekunden.ToString();
}
}

Das scheint mir alles aber etwas umständlich.
Schonmal danke für etwaige Hilfe
 
Sorry, ich verstehe gerade nicht was du genau möchtest.

Du hast Minuten? und möchtest das in das von dir angegeben Format darstellen? :huh:
 
Das ist der Code den ich schon habe, oben fehlt allerdings eine zeile ... nicht weiter schlimm.
Also, ich lese ein AVI über einen BinaryReader ein. An Offset 16 habe ich die Frameanzahl, diese möchte umrechnen in:

Stunden:Minuten:Sekunden:Frame

Das ganze möglichst elegant. (Framerate hab ich)

z.B.:
168491 Frames sind 1:52:19:x bei 25fps
168491 / fps / 60 / 60 = 1,872122222

Eine Umrechnung davon, also 1,872122222, ins Zeitformat?

Problem gelöst:

double seconds = Convert.ToDouble(AVI_Header_Duration) / Convert.ToDouble(AVI_Header_Framerate);
string Laenge = TimeSpan.FromSeconds(seconds).ToString().Substring(0,(TimeSpan.FromSeconds(seconds).ToString().LastIndexOf(".")));
 
Zuletzt bearbeitet:
Achso! Gut, da stand ich dann wohl was auf den Schlauch ... :ugly:

Also du hast den totalCount und frameRate dann wäre:

frameCount = totalCount % frameRate;
second = ((totalCount - frameCount) % (frameRate * 60)) / frameRate;
minute = ((totalCount - second * frameCount - frameCount) % (frameRate * 60 * 60)) / (frameRate * 60);
hour = totalCount / (frameRate * 60 * 60);

Angaben ohne Pistole ;)
 
Zuletzt bearbeitet:
Danke Dir. Aber sei mir nicht böse ;) ,mit TimeSpan.FromSeconds(sekunden) gehts doch einfacher ... aber erstmal finden ....

Werds mir trotzdem notieren, man weiß ja nie ...
 
:ugly: Ja nee ist klar! Hätte ich mir ja denken können das in den Tiefen des .net Frameworks wieder eine Funktion dafür vorhanden ist. :hail:

Hauptsache du bist ans Ziel gekommen. :daumen:
 
Zurück