2014-06-25 14 views
7

cerco di catturare video:
https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW26rapida e CMTimeMake

var maxDuration : CMTime = CMTimeMake(seconds, preferredTimeScale) 
aMovieFileOutput.maxRecordedDuration = CMTimeMake(seconds, preferredTimeScale) 

1 fila avere errore: l'uso di modulo 'CMTime' come un tipo
2 fila avere errore: l'uso di identificatore irrisolto 'CMTimeMake'

cosa faccio di sbagliato?

risposta

14

CMTime e CMTimeMake sono definiti nel modulo "CoreMedia", quindi, è necessario

import CoreMedia 

Allora questo compila senza problemi:

let seconds : Int64 = 10 
let preferredTimeScale : Int32 = 1 
let aMovieFileOutput = AVCaptureMovieFileOutput() 
let maxDuration : CMTime = CMTimeMake(seconds, preferredTimeScale) 
aMovieFileOutput.maxRecordedDuration = maxDuration 

Aggiornamento per Swift 3:

let maxDuration = CMTime(seconds: Double(seconds), preferredTimescale: 1) 
+0

se 'CMTimeMake' anche r ece secondi Qual è la differenza con 'CMTimeMakeWithSeconds'? e se 'preferredTimeScale' è solo il denominatore in' CMTimeMake' non è chiaro quale sia il suo scopo in 'CMTimeMakeWithSeconds' – dashesy

+1

@dashy:' CMTimeMake (valore, scala cronologica) 'restituisce un CMTime con il valore e la scala cronologica, che rappresentano i secondi = valore/scala temporale (confrontare ad esempio http://stackoverflow.com/a/13001917/1187415). 'CMTimeMakeWithSeconds (secondi, preferredTimeScale)' restituisce un CMTime in cui vengono scelti il ​​valore e la scala cronologica in modo tale che secondi = valore/scala cronologica e la scala cronologica sia PreferitaScala (o una frazione di essa nel caso di un overflow). Ad esempio 'CMTimeMake (2, 10)' e 'CMTimeMakeWithSeconds (0.2, 10)' danno lo stesso risultato. –