AVCaptureMovieFileOutput and AVAssetWriter are both APIs for recording video on iOS / Mac devices, are both int AVFoundation, but they have some differences.
AVCaptureMovieFileOutput is a high-level API that directly records video and audio data from AVCaptureSession into a MOV file. This API is very easy to use, just set some properties and call the
startRecording(to:recordingDelegate:) method to start recording. AVCaptureMovieFileOutput also provides some common features, such as sharing recorded video and audio resources, making it ideal for scenarios where you need to quickly record video and save it to the device.
AVAssetWriter is a low-level API that allows developers to stream audio and video data into a specified output file. Developers need to create an AVAssetWriter instance first and then use AVAssetWriterInput objects to represent audio and video data input sources. Compared to the many properties that need to be set for AVCaptureMovieFileOutput, AVAssetWriter requires more manual configuration to achieve the desired recording experience. But it also allows developers to have complete control over the video recording and encoding process, which can be used for various filters, animations, and custom encoding during recording.
In summary, AVCaptureMovieFileOutput and AVAssetWriter have their own applicable scenarios, and which API to choose depends on the specific requirements and the degree of control the developer needs over video recording.