Simultaneous AVCaptureVideoDataOutput and AVCaptureMovieFileOutput

前端 未结 3 1987
独厮守ぢ
独厮守ぢ 2020-11-28 07:13

I need to be able to have AVCaptureVideoDataOutput and AVCaptureMovieFileOutput working at the same time. The below code works, however, the video

相关标签:
3条回答
  • 2020-11-28 07:42

    Although you cannot use AVCaptureVideoDataOutput, you can use AVCaptureVideoPreviewLayer simultaneously with AVCaptureMovieFileOutput. See the "AVCam" example on Apple's Website.

    In Xamarin.iOS, the code looks like this:

    var session = new AVCaptureSession();
    
    var camera = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
    var  mic = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Audio);
    if(camera == null || mic == null){
        throw new Exception("Can't find devices");
    }
    
    if(session.CanAddInput(camera)){
        session.AddInput(camera);
    }
    if(session.CanAddInput(mic)){
       session.AddInput(mic);
    }
    
    var layer = new AVCaptureVideoPreviewLayer(session);
    layer.LayerVideoGravity = AVLayerVideoGravity.ResizeAspectFill;
    layer.VideoGravity = AVCaptureVideoPreviewLayer.GravityResizeAspectFill;
    
    cameraView = new UIView();
    cameraView.Layer.AddSublayer(layer);
    
    var filePath = System.IO.Path.Combine( Path.GetTempPath(), "temporary.mov");
    var fileUrl = NSUrl.FromFilename( filePath );
    
    var movieFileOutput = new AVCaptureMovieFileOutput();
    var recordingDelegate = new MyRecordingDelegate();
    session.AddOutput(movieFileOutput);
    
    movieFileOutput.StartRecordingToOutputFile( fileUrl, recordingDelegate);
    
    0 讨论(0)
  • 2020-11-28 07:46

    I have contacted an engineer at Apple's support and he told me that simultaneous AVCaptureVideoDataOutput + AVCaptureMovieFileOutput use is not supported. I don't know if they will support it in the future, but he used the word "not supported at this time".

    I encourage you to fill a bug report / feature request on this, as I did (bugreport.apple.com), as they measure how hard people want something and we perhaps can see this in a near future.

    0 讨论(0)
  • Still 9 years later Apple apparently does not seem to want this to work together.

    But you can easily work with AVAssetWriter.

    You can't use AVCaptureVideoDataOutput and AVCaptureMovieFileOutput on the same time. But you can use AVCaptureVideoDataOutput and analyse or modify on the data, then use AVAsseWriter to write the frames to a file.

    Source: https://developer.apple.com/forums/thread/98113

    How to save video with output using AVAssetWriter:

    Save AVCaptureVideoDataOutput to movie file using AVAssetWriter in Swift

    0 讨论(0)
提交回复
热议问题