簡體   English   中英

iOS 9以60fps錄制視頻

[英]iOS 9 record video at 60fps

嘗試使用AVFoundation和Swift錄制60fps的視頻,但是下面的代碼不起作用。 即使設置為60fps,視頻仍以30fps錄制。

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()

創建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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM