2014-06-25 22 views
7

próbuję uchwycić wideo:
https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW26szybka i CMTimeMake

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

1 wiersz ma błędu: użycie modułu 'CMTime' jako rodzaj
2 rzędzie mają błędzie: użycie nierozwiązany identyfikatorze 'CMTimeMake'

co robię źle?

Odpowiedz

14

CMTime i CMTimeMake są zdefiniowane w module "CoreMedia", dlatego trzeba

import CoreMedia 

Wtedy to kompiluje się bez problemów:

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

Aktualizacja dla Swift 3:

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

jeśli 'CMTimeMake' również r eceives sekund Jaka jest różnica z 'CMTimeMakeWithSeconds'? a jeśli 'preferredTimeScale' jest tylko mianownikiem w' CMTimeMake', to nie jest jasne, jaki jest jego cel w 'CMTimeMakeWithSeconds' – dashesy

+1

@dashy:' CMTimeMake (wartość, skala czasu) 'zwraca CMTime o podanej wartości i skali czasu, reprezentując sekundy = value/timecale (porównaj na przykład http://stackoverflow.com/a/13001917/1187415). 'CMTimeMakeWithSeconds (seconds, preferredTimeScale)' zwraca CMTime, w którym wartość i skala czasu są wybierane tak, że sekundy = wartość/skala czasu, a skala czasu jest preferowanaTimeScale (lub jej ułamek w przypadku przepełnienia). Jako przykład 'CMTimeMake (2, 10)' i 'CMTimeMakeWithSeconds (0.2, 10)' dają ten sam wynik. –