swift和CMTimeMake

And*_*nik 14 ios cmtime swift

我尝试捕获视频:https:
//developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW26

var maxDuration : CMTime = CMTimeMake(seconds, preferredTimeScale)
aMovieFileOutput.maxRecordedDuration = CMTimeMake(seconds, preferredTimeScale)
Run Code Online (Sandbox Code Playgroud)

1行有错误:使用模块'CMTime'作为类型
2行有错误:使用未解析的标识符'CMTimeMake'

我做错了什么?

Mar*_*n R 22

CMTime并且CMTimeMake在"CoreMedia"模块中定义,因此您必须这样做

import CoreMedia
Run Code Online (Sandbox Code Playgroud)

然后编译没有问题:

let seconds : Int64 = 10
let preferredTimeScale : Int32 = 1
let aMovieFileOutput = AVCaptureMovieFileOutput()
let maxDuration : CMTime = CMTimeMake(seconds, preferredTimeScale)
aMovieFileOutput.maxRecordedDuration = maxDuration
Run Code Online (Sandbox Code Playgroud)

Swift 3更新:

let maxDuration = CMTime(seconds: Double(seconds), preferredTimescale: 1)
Run Code Online (Sandbox Code Playgroud)

  • @dashesy:`CMTimeMake(value, timescale)` 返回具有给定值和时间刻度的 CMTime,表示秒 = 值/时间刻度(例如比较 http://stackoverflow.com/a/13001917/1187415)。`CMTimeMakeWithSeconds(seconds, preferredTimeScale)` 返回一个 CMTime,其中值和时间刻度被选择,使得秒=值/时间刻度,时间刻度是首选时间刻度(或在溢出的情况下的一部分)。例如,`CMTimeMake(2, 10)` 和 `CMTimeMakeWithSeconds(0.2, 10)` 给出了相同的结果。 (2认同)