2012-12-27 43 views
6

我正在創建一個應用程序,我必須混合這些歌曲。我已經完成了這一點,但問題是當我使用以下功能。如何在數據類型爲CMTime時傳遞float值?

- (BOOL)insertTimeRange:(CMTimeRange)timeRange ofTrack:(AVAssetTrack *)track atTime:(CMTime)startTime error:(NSError **)error; 

我必須在atTime參數傳遞CMTime類型值,但它並不需要浮點值,我必須在某些浮點值添加另一首歌曲。有沒有可能?

回答

14

您可以使用CMTimeMake...()functions之一。您必須提供一個時間點和時間刻度值。前者是一個64位整數;您可以截斷或舍入您的float以將其轉換爲整數,或使用必要的高時間比例:

CMTime tm = CMTimeMake(53425, 10000); // @ 5.3425 sec 
+0

我不需要整數值。這裏是一個例子,假設有一首歌曲的持續時間爲10秒,我必須在5.3425秒時再混合一首歌曲。但是因爲「atTime」參數只有CMTime值,而且是Integer,所以當我使用CMTimeMake(5.3425,1.0)時;它返回給我5.00000,歌曲在5.00000而不是5.3425。 – Developer

+0

@Harsh爲什麼你不能只將時間表設置爲合理的事情呢?例如,5.3425可以表示爲'CMTimeMake(53425,10000)'... – 2012-12-27 13:50:17

+1

它工作! :-)接受你回答!謝謝,但爲什麼它不適用於CMTimeMake(5.3425,1.0);? – Developer

相關問題