본문으로 건너뛰기
Version: 5.5

오디오 후킹

PlanetKit은 Planet Cloud가 상대방에게 오디오를 전송하기 전에 오디오 데이터를 가져올 수 있는 오디오 후킹(audio hooking) 기능을 제공합니다. 이 기능은 로컬 사용자의 음성을 변조하거나 오디오 데이터를 음성 인식에 활용하는 용도로 사용할 수 있습니다.

지원 통화 유형최소 SDK 버전
1대1 통화5.5

개요

오디오 후킹 기능을 사용하기 위한 메서드는 PlanetKitCall 클래스에서 제공합니다.

오디오 후킹 활성화

오디오 후킹을 활성화하려면 PlanetKitCallHookedAudioDelegate 구현체를 인자로 enableHookMyAudio()를 호출하세요.

오디오 후킹이 활성화되면 didHook 이벤트를 통해 PlanetKitHookedAudio 객체를 받을 수 있습니다.

오디오 데이터 수정하기(선택 사항)

오디오 데이터를 수정하려면 PlanetKitHookedAudiodata를 다른 Data 객체로 설정하세요.

Note

PlanetKitHookedAudio 클래스에서는 미가공(raw) 오디오 데이터(data)만 수정할 수 있고, channel, sampleCount, sampleRate, sampleType, seq와 같은 메타데이터는 수정할 수 없습니다. data를 수정할 때는 반드시 메타데이터가 나타내는 형식을 유지해야 합니다.

오디오 데이터 돌려놓기

가져온 오디오 데이터를 다시 돌려놓으려면 PlanetKitHookedAudio 객체를 인자로 putHookedMyAudioBack()을 호출하세요.

Warning

오디오 후킹을 활성화한 후에는 오디오 데이터 수정 여부와 상관없이 반드시 가져온 오디오 데이터를 다시 돌려놓아야 합니다. 돌려놓지 않으면 상대방에게 오디오가 전달되지 않습니다.

오디오 후킹 비활성화

오디오 후킹을 비활성화하려면 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는 다음과 같습니다.

클래스/프로토콜

메서드/속성

이벤트