Peter ha ragione. Il codice seguente rende il concetto più chiaro:
1)
Float64 seconds = 5;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
Il codice precedente fornisce: {3000/600 = 5.000}
che significa una durata complessiva di 5 secondi, con 3000 fotogrammi con una scala cronologica di 600 fotogrammi al secondo.
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
Questo dà {10000/600 = 16.667}
Il che significa una durata complessiva di 16,667 secondi, con 10000 cornici con un orizzonte temporale di 600 fotogrammi al secondo.
notare la differenza tra CMTimeMake (int64_t valore, tempi int32_t) e CMTimeMakeWithSeconds (float64 secondi, int32_t preferredTimeScale)
Spero che questo aiuta spiegazione. Per ulteriori chiarimenti, non esitate a postare ulteriori domande su questo post.
se il video è di 48 fps (frame al secondo) allora si farebbe facilmente 'CMTimeMake (1, 48)' per eseguire un blocco di codice ogni 1/48 di secondo, ovvero 1 blocco per fotogramma – Honey