[ios] 비디오 인코딩과 디코딩

iOS 애플리케이션에서 비디오를 처리하고 표시하는 것은 중요한 부분입니다. 비디오 인코딩과 디코딩은 비디오 파일의 크기를 줄이거나, 다른 형식으로 변환하거나, 온라인 스트리밍에 적합하게 하는 데 유용합니다. 이 문서에서는 iOS 애플리케이션에서 비디오 인코딩과 디코딩을 다루는 방법을 알아보겠습니다.

비디오 인코딩

비디오 인코딩이란 비디오를 특정 형식으로 변환하는 과정을 말합니다. iOS에서는 AVAsset 및 AVAssetExportSession 클래스를 사용하여 비디오를 인코딩할 수 있습니다. 다음은 Swift로 작성된 비디오 인코딩의 예제 코드입니다.

import AVFoundation

func encodeVideo(inputURL: URL, outputURL: URL, completionHandler: @escaping (Error?) -> Void) {
    let asset = AVAsset(url: inputURL)
    guard let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough) else {
        completionHandler(nil)
        return
    }
    
    exportSession.outputURL = outputURL
    exportSession.outputFileType = AVFileType.mp4
    
    exportSession.exportAsynchronously {
        if let error = exportSession.error {
            completionHandler(error)
        } else {
            completionHandler(nil)
        }
    }
}

위의 코드에서는 AVAssetExportSession을 사용하여 비디오를 MP4 형식으로 인코딩합니다.

비디오 디코딩

비디오 디코딩은 인코딩된 비디오를 디코딩하여 보여주는 것을 말합니다. iOS에서는 AVPlayerLayer 및 AVPlayer 클래스를 사용하여 비디오를 디코딩하고 화면에 표시할 수 있습니다. 다음은 Swift로 작성된 비디오 디코딩의 예제 코드입니다.

import AVFoundation
import AVKit

func playVideo(url: URL) {
    let player = AVPlayer(url: url)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = view.bounds
    view.layer.addSublayer(playerLayer)
    player.play()
}

위의 코드에서는 AVPlayer를 사용하여 비디오를 디코딩하고, AVPlayerLayer를 사용하여 비디오를 화면에 표시합니다.

요약

iOS에서 비디오 인코딩과 디코딩은 AVFoundation 프레임워크를 사용하여 간단하게 처리할 수 있습니다. 비디오 인코딩은 AVAssetAVAssetExportSession 클래스를 사용하여, 비디오 디코딩은 AVPlayerLayerAVPlayer 클래스를 사용하여 처리할 수 있습니다.

이 문서를 통해 iOS 애플리케이션에서 비디오를 인코딩하고 디코딩하는 기본적인 방법을 알아보았습니다.

참고 자료

이제 iOS에서 비디오 인코딩과 디코딩을 시작하는 데 도움이 되길 바랍니다!