2012-12-27 28 views
6

私は曲をミックスする必要があるアプリケーションを作成しています。私はこれを達成しましたが、問題は私が次の機能を使用しているときです。データ型がCMTimeの場合のfloat値の受け渡し方法は?

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

私はatTimeパラメータにCMTIME型の値を渡す必要がありますが、float値を取るていないと私はいくつかの浮動小数点値で別の曲を追加する必要があります。それはどのように可能ですか?

答えて

14

CMTimeMake...()functionsのいずれかを使用できます。あなたは、時刻とタイムスケールの値を指定する必要があります。前者は64ビット整数です。私は、整数値を必要としない

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

:あなただけの整数に変換し、あるいは必ずしも高いタイムスケールを使用するように切り捨てるか、あなたのfloatラウンドすることができます。ここに例があります.10秒間のソングがあり、もう1曲を5.3425秒でミックスする必要があるとします。しかし、 "atTime"パラメータはCMTime値のみをとり、CMTimeMake(5.3425、1.0)を使用しているときは整数です。それは私に5.00000を返して、5.3425ではなく5.00000で追加されます。 – Developer

+0

@Harshなぜ時間軸を妥当なものに設定できないのですか?例えば、5.3425は 'CMTimeMake(53425、10000)'として表現することができます... –

+1

それは働いた! :-)あなたは答えました。ありがとう、なぜそれがCMTimeMake(5.3425、1.0)で動作していなかったのですか? – Developer

関連する問題