[swift] CoreMedia 외부 입력 및 출력 관리
iOS 앱을 개발하다 보면 카메라나 마이크와 같은 외부 미디어 입력 장치를 사용하는 경우가 있습니다. 또한, 비디오나 오디오를 외부 디스플레이나 스피커로 출력해야 하는 경우도 있습니다. CoreMedia 프레임워크는 이러한 외부 입력 및 출력을 효과적으로 관리하는데 도움이 됩니다.
외부 입력 관리하기
카메라 및 마이크 관리
CoreMedia를 사용하여 iOS 앱에서 카메라 및 마이크를 관리하는 방법은 다음과 같습니다.
import AVFoundation
let session = AVCaptureSession()
// 카메라 입력 추가
if let device = AVCaptureDevice.default(for: .video) {
do {
let input = try AVCaptureDeviceInput(device: device)
if session.canAddInput(input) {
session.addInput(input)
}
} catch {
print("Error adding video input: \(error)")
}
}
// 마이크 입력 추가
if let device = AVCaptureDevice.default(for: .audio) {
do {
let input = try AVCaptureDeviceInput(device: device)
if session.canAddInput(input) {
session.addInput(input)
}
} catch {
print("Error adding audio input: \(error)")
}
}
외부 오디오 입력 관리
외부 오디오 입력장치를 관리하기 위해서는 AVAudioEngine 및 AVAudioSession을 사용할 수 있습니다.
import AVFoundation
let audioEngine = AVAudioEngine()
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(.record, mode: .measurement, options: .defaultToSpeaker)
try audioSession.setActive(true)
} catch {
print("Error setting up audio session: \(error)")
}
// 외부 오디오 입력 노드 추가
if let inputNode = audioEngine.inputNode {
let format = inputNode.inputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: format) { (buffer, time) in
// Process audio buffer
}
}
외부 출력 관리하기
외부 디스플레이 출력
iOS 앱에서 외부 디스플레이로 비디오를 출력하는 경우, AVPlayerLayer를 사용하여 외부 디스플레이에 비디오를 표시할 수 있습니다.
import AVFoundation
let player = AVPlayer(url: videoURL)
let playerLayer = AVPlayerLayer(player: player)
// 외부 디스플레이에 비디오 출력
if let externalDisplay = UIScreen.screens.first(where: { $0 != UIScreen.main }) {
playerLayer.frame = externalDisplay.bounds
externalDisplay.overscanCompensation = .none
externalDisplay.addSublayer(playerLayer)
player.play()
}
외부 스피커 출력
외부 스피커로 오디오를 출력하기 위해서는 AVAudioPlayer를 사용하여 오디오를 외부 스피커로 출력할 수 있습니다.
import AVFoundation
let audioURL = Bundle.main.url(forResource: "audio", withExtension: "mp3")
let audioPlayer = try AVAudioPlayer(contentsOf: audioURL)
audioPlayer.play()
CoreMedia 프레임워크를 사용하면 iOS 앱에서 외부 입력 및 출력을 쉽게 관리할 수 있습니다. 위의 예시 코드를 참고하여 앱에 맞게 외부 미디어 입력 및 출력을 관리해보세요.