微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在发布者中出错(_:didFailWithError:) -> 1541 - 尝试发布时超时

如何解决在发布者中出错(_:didFailWithError:) -> 1541 - 尝试发布时超时

我的应用要求是先测试音频和视频质量,然后开始视频通话。 网络测试正确完成。 当我开始实际通话时,我遇到了上述错误。并且无法将我的提要和音频发布给订阅者。 我认为问题可能在于破坏音频、视频会话。

发布者(_:didFailWithError:)

1541 - 尝试发布时超时。

https://github.com/opentok/opentok-network-test/tree/master/iOS-Sample 如果我不使用网络测试类,我的应用就可以正常工作。

我已经在 opentok 版本 2.19.1、2.20.0 中尝试过

会话连接

func setupOpenTok() {
    guard
        let sessionID = sessionID,let token = token else {
        return
    }
    connectToAnopenTokSession(withSessionID: sessionID,authToken: token)
}

func connectToAnopenTokSession(withSessionID sessionID: String,authToken: String) {
    session = OTSession(apiKey: ADDConstants.OpenTOK.openTokAPIKey,sessionId: sessionID,delegate: self)
    guard let session = session else { return }
    session.connect(withToken: authToken,error: &error)
}

func sendPublisherView() {
    let settings = OTPublisherSettings()
    settings.name = UIDevice.current.name
    settings.videoTrack = isAppointmentTypeVideo
    if !isAppointmentTypeVideo {
        let myAudioDevice = OTDefaultAudioDevice()
        OTAudioDeviceManager.setAudioDevice(myAudioDevice)
    }
    guard let publisher = OTPublisher(delegate: self,settings: settings) else { return }
    var error: OTError?
    guard let session = session else { return }
    publisher.publishAudio = true
    publisher.publishVideo = isAppointmentTypeVideo

    session.publish(publisher,error: &error)
    self.publisher = publisher
    guard error == nil else { return }
    guard let publisherView = publisher.view else { return }
    publisherView.isUserInteractionEnabled = true

    publisherView.frame = publisherContainer.bounds
    publisherContainer.addSubview(publisherView)
}

func fetchSubscriberView() {
    print("fetchSubscriberView()")
    guard let stream = stream else { return }
    subscriber = OTSubscriber(stream: stream,delegate: self)
    subscriber?.subscribetoAudio = true
    subscriber?.subscribetoVideo = isAppointmentTypeVideo
    guard let subscriber = subscriber else { return }
    var error: OTError?
    guard let session = session else { return }
    session.subscribe(subscriber,error: &error)
    guard error == nil else { return }
    guard let subscriberView = subscriber.view else { return }
    subscriberView.frame = UIScreen.main.bounds
    view.insertSubview(subscriberView,at: 0)
    view.bringSubviewToFront(publisherContainer)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。