[swift] 스위프트에서 동영상 재생 시 화면 캡쳐 기능 추가하기

스위프트에서 동영상 재생 시 동영상 화면을 캡쳐하여 저장하고 싶으신가요? 이 기능을 추가하는 방법을 알려드리겠습니다.

AVFoundation 사용

동영상 화면을 캡쳐하려면 AVFoundation 프레임워크를 사용해야 합니다. 먼저 AVFoundation 프레임워크의 AVAssetImageGenerator 클래스를 사용하여 동영상 화면을 이미지로 캡쳐합니다.

import AVFoundation

func captureVideoFrame(videoURL: URL) {
    let asset = AVURLAsset(url: videoURL)
    let generator = AVAssetImageGenerator(asset: asset)
    generator.appliesPreferredTrackTransform = true
    let time = CMTime(seconds: 1, preferredTimescale: 1)
    
    do {
        let imageRef = try generator.copyCGImage(at: time, actualTime: nil)
        let image = UIImage(cgImage: imageRef)
        // 이미지를 저장하거나 사용합니다.
    } catch let error {
        print("캡쳐 에러: \(error.localizedDescription)")
    }
}

위의 예시 코드는 captureVideoFrame 함수를 사용하여 동영상에서 1초 지점의 화면을 캡쳐하는 방법을 보여줍니다.

이미지 저장

캡쳐한 이미지를 저장하려면 UIImageWriteToSavedPhotosAlbum 메서드를 사용할 수 있습니다.

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)

사용자 권한

마지막으로, 이미지를 저장하기 위해서는 사용자의 사진 라이브러리 접근 권한이 필요하므로 Info.plist 파일에 NSPhotoLibraryAddUsageDescription 키를 추가하고 사용 권한에 대한 설명을 작성해야 합니다.

이제 동영상 화면 캡쳐 기능을 추가하고, 사용자에게 캡쳐된 이미지를 저장할 권한을 요청하는 기능을 구현하실 수 있을 것입니다.

참고 자료