2012-12-27 25 views
6

Şarkıları karıştırmam gereken bir uygulama oluşturuyorum. Bunu başardım ama problem şu işlevi kullanıyorum.Veri türünün CMTime olduğu float değeri nasıl iletilir?

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

Ben atTime parametrede CMTime türü değeri geçmek zorunda ama değerini Float kabul etmez ve bazı kayan nokta değerinde başka bir şarkı eklemek zorunda. Nasıl mümkün olabilir?

cevap

14

CMTimeMake...()functions'dan birini kullanabilirsiniz. Bir zaman noktası ve bir zaman ölçeği değeri sağlamanız gerekir. Birincisi 64 bitlik bir tamsayıdır; Sadece kesebilir veya float yuvarlak bir tamsayı dönüştürmek ya da zorunlu olarak yüksek zaman ölçeği kullanmak:

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

Ben tamsayı değeri gerekmez. İşte bir örnek, 10 saniye süren bir şarkı olduğunu ve 5.3425 saniyede bir şarkı daha karıştırmam gerektiğini varsayalım. Ancak "atTime" parametresi yalnızca CMTime Değerini aldığından ve Tamsayı olduğundan ve CMTimeMake kullanıldığında (5.3425, 1.0); Bana 5.00000 dönüyor ve şarkı 5.3425'te değil 5.00000'de ekleniyor. – Developer

+0

@Harsh Neden zaman çizelgesini makul bir şeye ayarlayamıyorsunuz? Örneğin, 5.3425 'CMTimeMake (53425, 10000) 'olarak gösterilebilir ... –

+1

Çalıştı! :-) Cevabını kabul ettin! Teşekkürler ama neden CMTimeMake (5.3425, 1.0) ile çalışmıyordu? – Developer

İlgili konular