代码之家  ›  专栏  ›  技术社区  ›  MegaNutsRus

使用Linphone iOS SDK启用视频通话

  •  1
  • MegaNutsRus  · 技术社区  · 6 年前

    我正在尝试使用Linphone在我的swift应用程序上启用视频通话。 我能够启用音频呼叫,但无法使其与视频一起工作。如果启用此行,应用程序总是会崩溃:

    linphone_call_params_enable_video(linCallParams, 1)
    

    我只想在这里接收视频和音频。

    @objc func startVideoCall() {
    
        linphone_core_enable_video_display(theLinphone.lc, 1)
        linphone_core_enable_video_capture(theLinphone.lc, 1)
    
        let linCallParams = linphone_core_create_call_params(theLinphone.lc, nil)
        linphone_call_params_enable_video(linCallParams, 1)
    
        linphone_call_params_set_video_direction(linCallParams, LinphoneMediaDirectionSendRecv)
        linphone_call_params_set_audio_direction(linCallParams, LinphoneMediaDirectionSendRecv)
    
        let call = linphone_core_invite_with_params(theLinphone.lc, calleeAccount, linCallParams)
    
        linphone_core_set_native_video_window_id(theLinphone.lc, &videoStreamView)
        linphone_core_set_native_preview_window_id(theLinphone.lc, &videoStreamPreview)
    
        do {
            try audioSession.setActive(true)
        } catch {
            print("Audio error: \(error.localizedDescription)")
        }
        linphone_call_params_unref(linCallParams)     
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   MegaNutsRus    6 年前

    此代码组合修复了我的问题

    private func bridge<T: AnyObject>(obj : T) -> UnsafeRawPointer {
        let pointer = Unmanaged.passUnretained(obj).toOpaque()
        return UnsafeRawPointer(pointer)
    }
    
    let viewPointer = UnsafeMutableRawPointer(mutating: bridge(obj: view))
    linphone_core_set_native_video_window_id(theLinphone.lc, viewPointer)
    let previewPointer = UnsafeMutableRawPointer(mutating: bridge(obj: previewStream))
    linphone_core_set_native_preview_window_id(theLinphone.lc, previewPointer)