1) CMTimeMake(1,10)
oznacza czas trwania 1 sekundy i skalę czasu 10 lub 10 klatek na sekundę. Oznacza to 1s czas trwania filmu z 10 klatkami?
2)
CMTime lastTime=CMTimeMake(1,10);
CMTime frameTime=CMTimeMake(1, 10);
CMTime currentTime=CMTimeAdd(lastTime, frameTime)
= (2, 10)?
2 sekundy wideo i 10 klatek na sekundę bieżącego czasu?
CMTimeMake(1, 48)
uruchomisz blok kodu co 1/48 sekundy, tj. 1 blok na klatkęOdpowiedzi:
1)
CMTimeMake(1,10)
faktycznie oznacza wartość 1 i skalę czasu równą 10. Są licznikiem i mianownikiem, więc jest to 1/10 sekundy, a nie 1 sekunda.2) Wynik będzie podobny
CMTimeMake(2, 10)
, czyli 2/10 sekundy.źródło
value/timescale = seconds
wyraźnie.Peter ma rację. Poniższy kod wyjaśnia koncepcję:
1)
Powyższy kod daje: {3000/600 = 5.000}
Co oznacza łączny czas trwania 5 sekund, przy 3000 klatek w skali czasu 600 klatek na sekundę.
2)
To daje {10000/600 = 16,667}
Oznacza to łączny czas trwania 16,667 sekund, przy 10000 klatek w skali czasu 600 klatek na sekundę.
Zwróć uwagę na różnicę między CMTimeMake (wartość int64_t, skala czasu int32_t) i CMTimeMakeWithSeconds (Float64 sekundy, int32_t preferowaneTimeScale)
Mam nadzieję, że to wyjaśnienie pomoże. Aby uzyskać dalsze wyjaśnienia, nie wahaj się zadawać dalszych pytań w tym poście.
źródło
setMaxRecordedDuration
się,preferredTimeScale
po coframe_rate
inaczej ustawić kiedy . Wszyscy po prostu ślepo używają 600 i nie ma dobrego wyjaśnienia, co dokładnie robi.Dzięki
CMTimeMake(A, B)
zapisaniu liczbą wymierną, dokładne frakcjiA / B
sekundCMTimeMake(1, 4)
-> przedział czasu 0,25 sekundyDzięki temu
CMTimeMakeWithSeconds(A, B)
przechowujeszA
sekundy do rozdzielczościB
krokówCMTimeMakeWithSeconds(0.25, ...)
-> przedział czasu 0,25 sekundyCzęsto widzisz
CMTimeMakeWithSeconds(time, NSEC_PER_SEC)
.NSEC_PER_SEC
Skutecznie oznacza „ Maksymalna rozdzielczość ”.źródło
Jeśli chcesz wiedzieć, jak zrobić interwał na 1 sekundę (tak jak ja), oto twoja odpowiedź:
źródło
Struktura CMTime reprezentuje
length of time that is stored as rational number.
CMTime ma wartość i pole skali czasu i reprezentuje wartość czasu / skalę czasu w sekundach.Zobacz Zobacz tę odpowiedź SO, która jest jasna
źródło