ปีเตอร์ถูกต้อง รหัสต่อไปนี้ทำให้แนวคิดชัดเจนยิ่งขึ้น:
1)
Float64 seconds = 5;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
โค้ดด้านบนให้: {3000/600 = 5.000}
ซึ่งหมายถึงระยะเวลาทั้งหมด 5 วินาทีด้วย 3,000 เฟรมที่มีช่วงเวลา 600 เฟรมต่อวินาที
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
อันนี้ให้ {10,000/600 = 16.667}
ซึ่งหมายถึงระยะเวลาทั้งหมด 16.667 วินาทีโดยมี 10,000 เฟรมที่มีช่วงเวลา 600 เฟรมต่อวินาที
สังเกตเห็นความแตกต่างระหว่าง CMTimeMake (ค่า int64_t, int32_t timescale) และ CMTimeMakeWithSeconds (Float64 วินาที, int32_t ที่ต้องการ TimeScale)
หวังว่าคำอธิบายนี้จะช่วยได้ สำหรับคำชี้แจงเพิ่มเติมโปรดอย่าลังเลที่จะโพสต์คำถามเพิ่มเติมในโพสต์นี้
CMTimeMake(1, 48)
เรียกใช้บล็อกได้ทุก ๆ 1/48 ของวินาทีเช่น 1 บล็อกต่อเฟรม