3 回答

TA貢獻1815條經驗 獲得超13個贊
1)CMTimeMake(1,10)
實際上表示值1和時標10。它們是分子和分母,所以它是1/10秒,而不是1秒。
2)結果將類似于CMTimeMake(2, 10)
,即2/10秒。

TA貢獻1864條經驗 獲得超6個贊
以下代碼使概念更清晰:
1)
Float64 seconds = 5;?
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
上面的代碼給出:{3000/600 = 5.000}
這意味著總持續時間為5秒,具有3000幀,時標為每秒600幀。
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
這給了{10000/600 = 16.667}
這意味著總持續時間為16.667秒,其中10000幀的時標為每秒600幀。
注意CMTimeMake(int64_t值,int32_t時間標度)和CMTimeMakeWithSeconds(Float64秒,int32_t preferredTimeScale)之間的差異
希望這種解釋有所幫助。如需進一步的說明,請不要猶豫,在此職位上發表其他問題。

TA貢獻1824條經驗 獲得超6個贊
隨著CMTimeMake(A, B)
你存儲一個有理數,一個確切的分數A / B
秒
CMTimeMake(1, 4)
->時間間隔0.25秒
隨著CMTimeMakeWithSeconds(A, B)
您存儲A
秒數以達到B
步驟分辨率
CMTimeMakeWithSeconds(0.25, ...)
->時間間隔0.25秒
您通常會看到CMTimeMakeWithSeconds(time, NSEC_PER_SEC)
。在NSEC_PER_SEC
實際上意味著“ 最高分辨率 ”。
- 3 回答
- 0 關注
- 1050 瀏覽
添加回答
舉報