2016-02-04 3 views
0

Попытка записать видео со скоростью 60 кадров в секунду с использованием AVFoundation и Swift, но код ниже не работает. Видео по-прежнему записывается со скоростью 30 кадров в секунду, даже если установлено 60 кадров в секунду.iOS 9 запись видео на 60 кадров в секунду

captureSession = AVCaptureSession() 

var finalFormat = AVCaptureDeviceFormat() 
var maxFps: Double = 0 
for vFormat in camera!.formats 
{ 
    var ranges  = vFormat.videoSupportedFrameRateRanges as! [AVFrameRateRange] 
    let frameRates = ranges[0] 
    if frameRates.maxFrameRate >= maxFps && frameRates.maxFrameRate <= 60 
    { 
     maxFps = frameRates.maxFrameRate 
     finalFormat = vFormat as! AVCaptureDeviceFormat 
    } 
} 

print(String(maxFps) + " fps"); //prints 60 fps 
try camera!.lockForConfiguration() 
camera!.activeFormat = finalFormat 
camera!.activeVideoMinFrameDuration = CMTimeMake(1, 60) 
camera!.activeVideoMaxFrameDuration = CMTimeMake(1, 60) 
camera!.unlockForConfiguration() 

let video = try AVCaptureDeviceInput(device: camera) as AVCaptureDeviceInput 
captureSession!.addInput(video) 

let audio = try AVCaptureDeviceInput(device: AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeAudio)) as AVCaptureDeviceInput 
captureSession!.addInput(audio) 

fileOutput = AVCaptureMovieFileOutput() 

captureSession?.addOutput(fileOutput) 

captureSession!.startRunning() 
+0

Вы знаете, что только для iphone 6 или новее, есть эта функция, не так ли? – UlyssesR

+0

есть. Я тестирую с помощью iphone 6s – user2800679

+0

Устройство, использующее встроенную камеру, записывается со скоростью 60 кадров в секунду? – UlyssesR

ответ

0

Установка свойств камеры после создания AVCaptureDeviceInput работает.

let video = try AVCaptureDeviceInput(device: camera) as AVCaptureDeviceInput 
captureSession!.addInput(video) 

print(String(maxFps) + " fps"); //prints 60 fps 
try camera!.lockForConfiguration() 
camera!.activeFormat = finalFormat 
camera!.activeVideoMinFrameDuration = CMTimeMake(1, 60) 
camera!.activeVideoMaxFrameDuration = CMTimeMake(1, 60) 
camera!.unlockForConfiguration() 
Смежные вопросы