2012-12-27 11 views
6

Sto creando un'applicazione in cui devo mescolare le canzoni. Ho compiuto questo, ma il problema è quando sto usando la seguente funzione.Come passare il valore float dove datatype è CMTime?

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

devo passare CMTime valore tipo nel parametro atTime ma non assume il valore del galleggiante e devo aggiungere altro brano a un certo valore in virgola mobile. È possibile come?

risposta

14

È possibile utilizzare uno degli CMTimeMake...()functions. Devi fornire un punto temporale e un valore cronologico. Il primo è un numero intero a 64 bit; si può solo troncare o intorno al vostro float per convertirlo in un intero, o utilizzare una scala temporale necessariamente alta:

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

Non ho bisogno di Valore intero. Ecco un esempio, Supponiamo che ci sia una canzone con durata 10 secondi e devo mixare un'altra canzone a 5.3425 secondi. Ma poiché il parametro "atTime" accetta solo CMTime Value ed è intero e quando sto usando CMTimeMake (5.3425, 1.0); mi sta restituendo 5.00000 e la canzone viene aggiunta alle 5.00000 non al 5.3425. – Developer

+0

@Harsh Perché non puoi semplicemente impostare la scala cronologica su qualcosa di ragionevole allora? Ad esempio, 5.3425 può essere rappresentato come 'CMTimeMake (53425, 10000)' ... –

+1

Ha funzionato! :-) Accettato rispondi! Grazie, ma perché non funzionava con CMTimeMake (5.3425, 1.0) ;? – Developer

Problemi correlati