오디오 후킹
PlanetKit은 Planet Cloud가 상대방에게 오디오를 전송하기 전에 오디오 데이터를 가져올 수 있는 오디오 후킹(audio hooking) 기능을 제공합니다. 이 기능은 로컬 사용자의 음성을 변조하거나 오디오 데이터를 음성 인식에 활용하는 용도로 사용할 수 있습니다.
지원 통화 유형 | 최소 SDK 버전 |
---|---|
1대1 통화 | 5.5 |
개요
오디오 후킹 기능을 사용하기 위한 메서드는 PlanetKitCall
클래스에서 제공합니다.
오디오 후킹 활성화
오디오 후킹을 활성화하려면 PlanetKitCallHookedAudioDelegate
구현체를 인자로 enableHookMyAudio()
를 호출하세요.
오디오 후킹이 활성화되면 didHook
이벤트를 통해 PlanetKitHookedAudio
객체를 받을 수 있습니다.
오디오 데이터 수정하기(선택 사항)
오디오 데이터를 수정하려면 PlanetKitHookedAudio
의 data
를 다른 Data
객체로 설정하세요.
PlanetKitHookedAudio
클래스에서는 미가공(raw) 오디오 데이터(data
)만 수정할 수 있고, channel
, sampleCount
, sampleRate
, sampleType
, seq
와 같은 메타데이터는 수정할 수 없습니다. data
를 수정할 때는 반드시 메타데이터가 나타내는 형식을 유지해야 합니다.
오디오 데이터 돌려놓기
가져온 오디오 데이터를 다시 돌려놓으려면 PlanetKitHookedAudio
객체를 인자로 putHookedMyAudioBack()
을 호출하세요.
오디오 후킹을 활성화한 후에는 오디오 데이터 수정 여부와 상관없이 반드시 가져온 오디오 데이터를 다시 돌려놓아야 합니다. 돌려놓지 않으면 상대방에게 오디오가 전달되지 않습니다.
오디오 후킹 비활성화
오디오 후킹을 비활성화하려면 disableHookMyAudio()
를 호출하세요.
샘플 코드
다음 샘플 코드는 음성을 변조하기 위해 오디오 후킹 기능을 사용하는 방법을 보여줍니다.
// Get instance of PlanetKitCall
var call: PlanetKitCall?
// Implement audio modifier with PlanetKitCallHookedAudioDelegate
class HookedAudioModifier: PlanetKitCallHookedAudioDelegate {
func didHook(_ call: PlanetKitCall, audio: PlanetKitHookedAudio) {
// process `audio.data` as necessary
if !call.putHookedMyAudioBack(audio: audio) {
NSLog("putHookedMyAudioBack returned false")
}
}
}
// HookedAudioModifier object
let modifier = HookedAudioModifier()
// Method to enable audio hook
func enableAudioHook(call: PlanetKitCall, modifier: HookedAudioModifier) {
call.enableHookMyAudio(delegate: modifier) { success in
if success {
NSLog("Audio hook enabled successfully")
} else {
NSLog("Failed to enable audio hook")
}
}
}
// Method to disable the audio hook
func disableAudioHook(call: PlanetKitCall) {
call.disableHookMyAudio() { success in
if success {
NSLog("Audio hook disabled successfully")
} else {
NSLog("Failed to disable audio hook")
}
}
}
관련 API
오디오 후킹과 관련된 API는 다음과 같습니다.
클래스/프로토콜
-
PlanetKitCall
iOS, macOS -
PlanetKitHookedAudio
iOS, macOS -
PlanetKitCallHookedAudioDelegate
iOS, macOS
메서드/속성
-
enableHookMyAudio()
iOS, macOS -
PlanetKitHookedAudio
의data
iOS, macOS -
putHookedMyAudioBack()
iOS, macOS -
disableHookMyAudio()
iOS, macOS