Ниже у меня есть код для объединения видеоклипов в одно видео. У меня нет большого опыта работы с AVFoundation, поэтому я не уверен, как заменить устаревший код обновленными методами, не вызывая ошибки:
Тип «CameraViewModel» не соответствует протоколу «AVCaptureFileOutputRecordingDelegate».
Этот код отлично работает для iOS 15, но в iOS 16 он устарел. В первом фрагменте кода ниже находится исходный устаревший код (устаревший код, в частности, в функции mergeVideos). Во втором фрагменте кода я пытаюсь обновить устаревший код правильным, но при этом получаю ошибку, указанную выше.
В своем коде я изменил устаревший asset.duration на асинхронный asset.load(.duration)
Я также изменил asset.tracks(withMediaType: .audio)[0] в асинхронный asset.loadTracks(withMediaType: .audio)
import SwiftUI
import SwiftUI
import AVFoundation
class CameraViewModel: NSObject, ObservableObject, AVCaptureFileOutputRecordingDelegate{
@Published var session = AVCaptureSession()
@Published var alert = false
@Published var output = AVCaptureMovieFileOutput()
@Published var preview : AVCaptureVideoPreviewLayer!
@Published var isRecording: Bool = false
@Published var recordedURLs: = []
@Published var previewURL: URL?
@ ... deprecated