回答:
1)はCMTimeMake(1,10)
実際には1の値と10のタイムスケールを意味します。これらは分子と分母であるため、1秒ではなく1/10秒です。
2)結果はCMTimeMake(2, 10)
、1/10秒の2/10のようになります。
value/timescale = seconds
明示的に。
ピーターは正しいです。次のコードは、概念をより明確にします。
1)
Float64 seconds = 5;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
上記のコードは次のようになります:{3000/600 = 5.000}
つまり、合計時間は5秒、タイムスケールは1秒あたり600フレームの3000フレームです。
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
これは{10000/600 = 16.667}を与えます
つまり、1秒あたり600フレームのタイムスケールで10000フレームの合計時間は16.667秒になります。
CMTimeMake(int64_t value、int32_t timescale)とCMTimeMakeWithSeconds(Float64秒、int32_t preferredTimeScale)の違いに注意してください
この説明がお役に立てば幸いです。詳細については、この投稿に質問を投稿してください。
setMaxRecordedDuration
必要があるのかしら。誰もが盲目的に600を使用しており、正確に何をしているのかについての良い説明はありません。preferredTimeScale
frame_rate
CMTime構造体は、length of time that is stored as rational number.
CMTimeに値とタイムスケールフィールドがあり、時間値/タイムスケール秒を表します。
明確なこのSO回答を参照してください
CMTimeMake(1, 48)
/48秒ごとにコードのブロックを実行するのは簡単です。つまり、フレームごとに1ブロック