1) CMTimeMake(1,10)
bedeutet Dauer von 1 Sekunde und Zeitskala von 10 oder 10 Bildern pro Sekunde. Dies bedeutet 1s Videodauer mit 10 Bildern?
2)
CMTime lastTime=CMTimeMake(1,10);
CMTime frameTime=CMTimeMake(1, 10);
CMTime currentTime=CMTimeAdd(lastTime, frameTime)
= (2, 10)?
2 Sekunden Video und mit 10 Bildern pro Sekunde der aktuellen Zeit?
CMTimeMake(1, 48)
alle 1/48 Sekunde einen Codeblock ausführen, dh 1 Block pro BildAntworten:
1)
CMTimeMake(1,10)
bedeutet tatsächlich einen Wert von 1 und eine Zeitskala von 10. Sie sind ein Zähler und ein Nenner, also 1/10 Sekunde, nicht 1 Sekunde.2) Das Ergebnis ist wie
CMTimeMake(2, 10)
folgt: 2/10 Sekunden.quelle
value/timescale = seconds
explizit.Peter hat recht. Der folgende Code macht das Konzept klarer:
1)
Der obige Code gibt an: {3000/600 = 5.000}
Dies bedeutet eine Gesamtdauer von 5 Sekunden bei 3000 Bildern mit einer Zeitskala von 600 Bildern pro Sekunde.
2)
Dieser gibt {10000/600 = 16.667}
Dies bedeutet eine Gesamtdauer von 16,667 Sekunden bei 10000 Bildern mit einer Zeitskala von 600 Bildern pro Sekunde.
Beachten Sie den Unterschied zwischen CMTimeMake (int64_t-Wert, int32_t-Zeitskala) und CMTimeMakeWithSeconds (Float64 Sekunden, int32_t PreferredTimeScale).
Hoffe diese Erklärung hilft. Für weitere Erläuterungen zögern Sie bitte nicht, weitere Fragen zu diesem Beitrag zu stellen.
quelle
setMaxRecordedDuration
daspreferredTimeScale
Wannframe_rate
anders eingestellt ist. Jeder benutzt nur blind 600 und keine gute Erklärung, was genau es tut.Wenn
CMTimeMake(A, B)
Sie eine rationale Zahl speichern, einen genauen Bruchteil vonA / B
SekundenCMTimeMake(1, 4)
-> das Zeitintervall 0,25 SekundenMit
CMTimeMakeWithSeconds(A, B)
speichern SieA
Sekunden bis zu einer Auflösung vonB
SchrittenCMTimeMakeWithSeconds(0.25, ...)
-> das Zeitintervall 0,25 SekundenSie sehen häufig
CMTimeMakeWithSeconds(time, NSEC_PER_SEC)
. DasNSEC_PER_SEC
bedeutet effektiv " maximale Auflösung ".quelle
Wenn Sie nur wissen möchten, wie man ein Intervall für 1 Sekunde erstellt (wie ich), ist dies Ihre Antwort:
quelle
Eine CMTime-Struktur repräsentiert eine
length of time that is stored as rational number.
CMTime-Struktur mit einem Wert und einem Zeitskalenfeld und repräsentiert den Zeitwert / die Zeitskala in Sekunden.Siehe Siehe diese SO Antwort, die klar ist
quelle