미리 도움을 청하십시오!Swift에서 Linphone SDK의 경로를 포맷하는 데 문제가 발생했습니다.
내가 맥 OS에 스위프트의 Linphone SDK를 사용하여 기록 통화를 시도하고, 그 함수로 경로를 통과 문제 데 : 제대로 작동
func linphone_call_params_set_record_file(_ cp: OpaquePointer!, _ path: UnsafePointer<Int8>!)
을 (SDK는 C로 작성 , 비록 Swift와 브리징 헤더을 사용하여 액세스하고 있지만). Linphone SDK가 제대로 작동하고, 전 음성 지원을 통해 프로그래밍 방식으로 전화를 걸고받을 수 있습니다. 내가 녹음 파일을 저장하고 싶은
let pathtofile = "/Users/Alex/Safety/1.wav"
: 전화 레코더의 호출에
, 나는 같은,이 기능을 경로 (pathtofile
)를 전달합니다.
func SafetyNetAVRecorderInitializer(pathtofile: String) -> Bool {
// Convert pathtofile to UnsafePointer<Int8>.
let cpathtofile = (pathtofile as NSString).utf8String
let path = UnsafeMutablePointer<Int8>(mutating: cpathtofile)
// Actually begin call recording.
if currentcall != nil {
let currentcallparameters = linphone_call_get_current_params(currentcall)
linphone_call_params_set_record_file (currentcallparameters, path)
linphone_call_start_recording(currentcall)
return true
}
return false
}
없음 런타임 오류
는linphone_call_params_set_record_file()
에 발생하는,하지만 난
linphone_call_start_recording()
를 호출 할 때, 녹음이 시작되지 않으며, 오류가 읽고 콘솔에 인쇄되어 있습니다 :
ortp - 오류 -를 linphone_call_start_recording() : 출력 파일이 지정되지 않았습니다. linphone_call_params_set_record_file()을 사용하십시오.
linphone_call_params_set_record_file()
에 올바른 경로를 올바르게 전달하려면 어떻게해야합니까? 나는 UnsafePointer<Int8>
대신에 보통 스위프트 String
을 직접 전달하려고 시도했다. 경로가 C로 어떻게 포맷되는지 오해하고 있습니까?
는 참고로, SDK 방법 소스는 다음과 같습니다 다시
void linphone_call_params_set_record_file(LinphoneCallParams *cp, const char *path){
if (cp->record_file){
ms_free(cp->record_file);
cp->record_file=NULL;
}
if (path) cp->record_file=ms_strdup(path);
}
감사합니다!
는, 아쉽게도 비록 당신의 도움을 주셔서 감사합니다! – kmypwn
@kmypwn 당신은 정말로 [직접적으로] (http://stackoverflow.com/a/41308592/819340)'pathtofile : String'을 할 수 있어야합니다. 어쩌면 당신의 버그는 어딘가에 있습니다 : ...--( –
Linphone SDK에 대한 더 깊은 지식을 가진 누군가가 통찰력을 제공 할 수 있기를 바랍니다. – kmypwn