iOS   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何使用AVCaptureVideoDataOutput录制视频大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用AVCaptureSession获取相机输出,并成功添加了音频和视频输入和输出.
{

    var captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) as AVCaptureDevice

    var error: NSError? = nil

    do {

        //remove the prevIoUs inputs
        let inputs = cameraSession.inputs as! [AVCaptureDeviceInput]
        for oldInput:AVCaptureDeviceInput in inputs {
            cameraSession.removeInput(oldInput)
        }
        cameraSession.beginConfiguration()

        if cameraPosition.isEqualToString("Front") {
            captureDevice = cameraWithPosition(.Front)!
        }
        else {
            captureDevice = cameraWithPosition(.BACk)!
        }

        let deviceInput = try AVCaptureDeviceInput(device: captureDevicE)

        if (cameraSession.canAddInput(deviceInput) == truE) {
            cameraSession.addInput(deviceInput)
        }

        let dataOutput = AVCaptureVideoDataOutput()
        dataOutput.videoSetTings = [(kCVPixelBufferPixelFormatTypeKey as NSString) : NSnumber(unsignedInt: kCVPixelFormatType_420YpCbCr8BiPlanarFullRangE)]
        dataOutput.alwaysDiscardsLateVideoFrames = true

        if (cameraSession.canAddOutput(dataOutput) == truE) {
            cameraSession.addOutput(dataOutput)
        }

        let audiocheck = AVCaptureDevice.devicesWithMediaType(AVMediaTypeAudio)
        if audiocheck.isEmpty {
            print("no audio device")
            return
        }

        let audioDevice: AVCaptureDevice! = audiocheck.first as! AVCaptureDevice

        var audioDeviceInput: AVCaptureDeviceInput?

        do {
            audioDeviceInput = try AVCaptureDeviceInput(device: audioDevicE)
        } catch let error2 as NSError {
            error = error2
            audioDeviceInput = nil
        } catch {
            fatalError()
        }

        if error != nil{
            print(error)
            let alert = UIAlertController(title: "Error",message: error!.localizedDescription,preferredStyle: .Alert)
            alert.addAction(UIAlertAction(title: "OK",style: .Default,handler: nil))
            self.presentViewController(alert,animated: true,completion: nil)
        }
        if cameraSession.canAddInput(audioDeviceInput){
            cameraSession.addInput(audioDeviceInput)
        }

        cameraSession.commitConfiguration()

        let queue = dispatch_queue_create("com.invasivecode.videoQueue",DISPATCH_QUEUE_seriaL)
        dataOutput.setSampleBufferDelegate(self,queue: queuE)

    }
    catch let error as NSError {
        NSLog("\(error),\(error.localizedDescription)")
    }
}

使用AVCaptureMovieFiLeoutput可以使用照片库中的输出视频保存

@H_282_2@movieFiLeoutput.startRecordingToOutputFileURL( outputFilePath,recordingDelegate: self)

但是我使用AVCaptureVideoDataOutput作为输出,以便从代理人获取的元数据进行额外的工作,并尝试录制视频,但无法获取任何方法来开始和停止录制视频.

建议如何使用AVCaptureVideoDataOutput录制视频

解决方法

你需要一个AVCaptureSession来做到这一点:
//First add AVCaptureVideoDataOutput to AVCaptureSession 
AVCaptureSession *_captureSession;
_captureSession = [[AVCaptureSession alloc] init];
......Configuration......

AVCaptureVideoDataOutput *videoOut = [[AVCaptureVideoDataOutput alloc] init];
......Configuration......
if ( [_captureSession canAddOutput:videoOut] ) {
    [_captureSession addOutput:videoOut];
}

//Then use captureSession to start and stop recording
[_captureSession startRunning];
[_captureSession stopRunning];

请看RosyWriterCapturePipeline.m,这是一个非常好的例子:

RosyWriter

大佬总结

以上是大佬教程为你收集整理的ios – 如何使用AVCaptureVideoDataOutput录制视频全部内容,希望文章能够帮你解决ios – 如何使用AVCaptureVideoDataOutput录制视频所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。