Peter nói đúng. Đoạn mã sau làm cho khái niệm rõ ràng hơn:
1)
Float64 seconds = 5;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
Đoạn mã trên cho: {3000/600 = 5.000}
Có nghĩa là tổng thời lượng 5 giây, với 3000 khung hình với thời gian 600 khung hình mỗi giây.
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
Cái này cho {10000/600 = 16.667}
Có nghĩa là tổng thời lượng là 16,667 giây, với 10000 khung hình với thời gian 600 khung hình mỗi giây.
Lưu ý sự khác biệt giữa CMTimeMake (giá trị int64_t, thời gian int32_t) và CMTimeMakeWithSeconds (Float64 giây, int32_t preferTimeScale)
Hy vọng lời giải thích này sẽ giúp. Để làm rõ hơn, xin vui lòng gửi câu hỏi thêm về bài viết này.
CMTimeMake(1, 48)
để chạy một khối mã cứ sau 1/48 giây tức là 1 khối trên mỗi khung hình