2012-12-27 5 views
6

Ich erstelle eine Anwendung, in der ich die Songs mischen muss. Ich habe dies erreicht, aber das Problem ist, wenn ich die folgende Funktion verwende.Wie Übergeben Float-Wert, wo Datentyp CMTime ist?

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

Ich habe cmtime Typ Wert im atTime Parameter zu übergeben, aber es ist nimmt kein gutes Preis-Float und ich habe das ein anderes Lied zu einem bestimmten Fließkommawert hinzuzufügen. Ist es möglich wie?

Antwort

14

Sie können einen der CMTimeMake...()functions verwenden. Sie müssen einen Zeitpunkt und einen Zeitskalenwert angeben. Ersteres ist eine 64-Bit-Ganzzahl; Sie können einfach abgeschnitten oder runden Ihr float es zu einer ganzen Zahl zu konvertieren, oder einen notwendigen hohen Zeitplan verwenden:

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

ich nicht Integer-Wert benötigen. Hier ist ein Beispiel, Angenommen, es gibt ein Lied mit einer Dauer von 10 Sekunden und ich muss ein weiteres Lied bei 5,3425 Sekunden mischen. Aber da "atTime" -Parameter nur CMTime Value annimmt, ist es Integer und wenn ich CMTimeMake verwende (5.3425, 1.0); es gibt mir 5,00000 zurück und das Lied wird bei 5,00000 nicht bei 5,3425 hinzugefügt. – Developer

+0

@Harsh Warum können Sie die Zeitskala nicht auf etwas Vernünftiges setzen? Zum Beispiel kann 5.3425 als 'CMTimeMake (53425, 10000)' dargestellt werden ... –

+1

Es hat funktioniert! :-) Akzeptiert antwortest du! Danke, aber warum hat es nicht mit CMTimeMake (5.3425, 1.0) funktioniert? – Developer