ios - Intentando entender CMTime
avcapturesession (1)
Una estructura CMTime
representa un período de tiempo que se almacena como número racional (consulte Referencia de CMTime ). CMTime
tiene un value
y un campo de timescale
, y representa el value/timescale seconds
del tiempo value/timescale seconds
.
CMTimeMake
es una función que devuelve una estructura CMTime
, por ejemplo:
CMTime t1 = CMTimeMake(1, 10); // 1/10 second = 0.1 second
CMTime t2 = CMTimeMake(2, 1); // 2 seconds
CMTime t3 = CMTimeMake(3, 4); // 3/4 second = 0.75 second
CMTime t4 = CMTimeMake(6, 8); // 6/8 second = 0.75 second
Los últimos dos valores de tiempo t3
y t4
representan el mismo valor de tiempo, por lo tanto
CMTimeCompare(t3, t4) == 0
Si configura el videoMinFrameDuration
de una AVCaptureSession
no hace la diferencia si establece
connection.videoMinFrameDuration = CMTimeMake(1, 20); // or
connection.videoMinFrameDuration = CMTimeMake(2, 40);
En ambos casos, el intervalo de tiempo mínimo entre cuadros se establece en 1/20 = 0.05 segundos.
He visto algunos examples of CMTime (Tres enlaces separados), pero todavía no lo entiendo. Estoy usando una sesión AVCaptureSession con AVCaptureVideoDataOutput y quiero establecer la velocidad de fotogramas máxima y mínima de la salida. Mi problema es que simplemente no entiendo la estructura CMTime.
Aparentemente CMTimeMake (value, timeScale) debería darme marcos de valores cada 1 / timeScale segundos para un total de valor / timeScale segundos, ¿o estoy obteniendo ese error?
¿Por qué no está documentado en alguna parte para explicar lo que hace?
Si realmente funciona así, ¿cómo conseguiría que tenga una cantidad indefinida de marcos?
Si es realmente simple, lo siento, pero nada ha hecho clic todavía.