WebRTC RTCSessionDescription swift

WebRTC RTCSessionDescription swift,swift,webrtc,Swift,Webrtc,我正在尝试使用swift中的WebRTC框架编写本机iOS应用程序。我遇到了一个问题,因为RTCSessionDescriptionLegate似乎已被弃用,我再也不能真正遵循这一点了 我想我已经走得很远了,但阻碍我前进的主要原因是我不知道如何创建sdp参数。 RTCSessionDescription(类型:。提供,sdp:) 如果有人能提供建议,我将非常感激 Swift 3.0 这是我创建SDP的解决方案 let constraints: RTCMediaConstraints? =

我正在尝试使用swift中的WebRTC框架编写本机iOS应用程序。我遇到了一个问题,因为RTCSessionDescriptionLegate似乎已被弃用,我再也不能真正遵循这一点了

我想我已经走得很远了,但阻碍我前进的主要原因是我不知道如何创建sdp参数。 RTCSessionDescription(类型:。提供,sdp:)


如果有人能提供建议,我将非常感激

Swift 3.0

这是我创建SDP的解决方案

    let constraints: RTCMediaConstraints? = defaultPeerConnectionConstraints()
    peerConnection: RTCPeerCo = factory?.peerConnection(withICEServers: iceServers, constraints: constraints, delegate: self)
    let localStream: RTCMediaStream? = createLocalMediaStream() //get Media stream(video/audio)
    peerConnection?.add(localStream)

    //create offer for other opponent        

    if isInitiator {
        peerConnection?.createOffer(with: self, constraints: defaultOfferConstraints())
        print("create Offer")
    }
在ICE服务器上

func defaultICEServer() -> [RTCICEServer] {

  var iceServers = [RTCICEServer]()
  let defaultSTUNServerURL = URL(string: Config.defaultSTUNServerUrl)
  let defaultTURNServerURL = URL(string: Config.defaultTURNServerUrl)
  let stunServ = RTCICEServer(uri: defaultSTUNServerURL, username: "", password: "")
  let turnServ = RTCICEServer(uri: defaultTURNServerURL, username: "admin", password: "admin")
  iceServers.append(stunServ!)
  iceServers.append(turnServ!)

  return iceServers
}

然后是呼叫代表

func peerConnection(_ peerConnection: RTCPeerConnection, didCreateSessionDescription sdp: RTCSessionDescription, error: Error?) {}
您可以使用
sdp
发送其他用户。您应该将此
sdp
设置为
localDescription
,以便正确工作

peerConnection?.setLocalDescriptionWith(self, sessionDescription: sdp)

我希望我能帮上忙

这是我创建SDP的解决方案

    let constraints: RTCMediaConstraints? = defaultPeerConnectionConstraints()
    peerConnection: RTCPeerCo = factory?.peerConnection(withICEServers: iceServers, constraints: constraints, delegate: self)
    let localStream: RTCMediaStream? = createLocalMediaStream() //get Media stream(video/audio)
    peerConnection?.add(localStream)

    //create offer for other opponent        

    if isInitiator {
        peerConnection?.createOffer(with: self, constraints: defaultOfferConstraints())
        print("create Offer")
    }
在ICE服务器上

func defaultICEServer() -> [RTCICEServer] {

  var iceServers = [RTCICEServer]()
  let defaultSTUNServerURL = URL(string: Config.defaultSTUNServerUrl)
  let defaultTURNServerURL = URL(string: Config.defaultTURNServerUrl)
  let stunServ = RTCICEServer(uri: defaultSTUNServerURL, username: "", password: "")
  let turnServ = RTCICEServer(uri: defaultTURNServerURL, username: "admin", password: "admin")
  iceServers.append(stunServ!)
  iceServers.append(turnServ!)

  return iceServers
}

然后是呼叫代表

func peerConnection(_ peerConnection: RTCPeerConnection, didCreateSessionDescription sdp: RTCSessionDescription, error: Error?) {}
您可以使用
sdp
发送其他用户。您应该将此
sdp
设置为
localDescription
,以便正确工作

peerConnection?.setLocalDescriptionWith(self, sessionDescription: sdp)

我希望,我能帮助你

你能进一步帮助吗?你能进一步帮助吗?