2014-06-25 12 views
7

i versuchen Video zu erfassen:
https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW26rasche und CMTimeMake

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

1 Reihe haben Fehler: Verwendung des Moduls 'cmtime' als eine Art
2 row haben Fehler: Verwendung von ungelösten Identifikator 'CMTimeMake'

was mache ich falsch?

Antwort

14

CMTime und CMTimeMake sind im "Coremedia" Modul definiert, deshalb müssen Sie

import CoreMedia 

Dann stellt dies ohne Probleme:

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

Update für Swift 3:

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

wenn 'CMTimeMake' auch r eceives seconds Was ist der Unterschied zu 'CMTimeMakeWithSeconds'? und wenn 'preferredTimeScale' nur der Nenner in' CMTimeMake' ist, ist nicht klar, was es in 'CMTimeMakeWithSeconds' bedeutet – dashesy

+1

@dashesy:' CMTimeMake (Wert, Zeitskala) 'liefert ein CMTime mit dem angegebenen Wert und der Zeitskala, die Sekunden = darstellt Wert/Zeitskala (vergleiche zum Beispiel http://stackoverflow.com/a/13001917/1187415). 'CMTimeMakeWithSeconds (Sekunden, preferredTimeScale)' gibt eine CMTime zurück, wobei Wert und Zeitskala so gewählt werden, dass Sekunden = Wert/Zeitskala und Zeitskala bevorzugteZeitskala (oder ein Bruchteil davon im Falle eines Überlaufs) ist. Als ein Beispiel ergeben "CMTimeMake (2, 10)" und "CMTimeMakeWithSeconds (0,2, 10)" dasselbe Ergebnis. –