2012-12-27 31 views
6

Tôi đang tạo một ứng dụng trong đó tôi phải trộn các bài hát. Tôi đã đạt được điều này nhưng vấn đề là khi tôi đang sử dụng chức năng sau đây.Làm thế nào để vượt qua giá trị float nơi datatype là CMTime?

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

tôi phải vượt qua CMTime giá trị gõ vào atTime tham số nhưng nó không mất nổi giá trị và tôi có thêm một ca khúc khác tại một số giá trị dấu chấm động. Liệu có thể làm được như thế nào không?

Trả lời

14

Bạn có thể sử dụng một trong số CMTimeMake...()functions. Bạn phải cung cấp một điểm thời gian và một giá trị thời gian. Cái trước là số nguyên 64 bit; bạn chỉ có thể cắt bớt hoặc làm tròn số float của mình để chuyển đổi thành số nguyên hoặc sử dụng một khoảng thời gian nhất thiết cao:

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

Tôi không cần giá trị nguyên. Đây là một ví dụ, Giả sử có một bài hát có thời lượng 10 giây và tôi phải kết hợp thêm một bài hát với 5,3425 giây. Nhưng vì tham số "atTime" chỉ lấy giá trị CMTime và nó là Integer và khi tôi đang sử dụng CMTimeMake (5.3425, 1.0); nó trả lại cho tôi 5.00000 và bài hát được thêm vào ở mức 5.00000 không ở mức 5,3425. – Developer

+0

@Harsh Tại sao bạn không thể đặt thời gian cho một cái gì đó hợp lý? Ví dụ, 5.3425 có thể được biểu diễn dưới dạng 'CMTimeMake (53425, 10000)' ... –

+1

Nó hoạt động! :-) Chấp nhận bạn trả lời! Cảm ơn nhưng tại sao nó không làm việc với CMTimeMake (5.3425, 1.0) ;? – Developer

Các vấn đề liên quan