【问题标题】:Understanding how to generate correct sdp for offer/answer (webrtc) between android/Iphone了解如何在 android/Iphone 之间为 offer/answer (webrtc) 生成正确的 sdp
【发布时间】:2019-02-06 20:32:34
【问题描述】:

当信号在 Iphone 和 android 手机之间时,我很难理解正确的方法来做出正确的报价答案。由于不同的编解码器 Iphone setRemoteDescription 失败。众所周知,android 不接受 H264。

(设置远程视频描述发送参数失败)

在 android/android 之间都可以正常工作,因为两部手机都有相同的 VP8/9 编解码器。但在我的情况下,IOS 仅使用 H264 编解码器发送到 android sdp 报价。看来这就是问题所在。尽管 android 正在设置 remotedescription 并且在没有 VP8/9 编解码器信息的情况下使用 sdp 创建答案。这个答案 sdp 正在将 Iphone 设置为上述错误。所以我问为什么在 android answer sdp 与 VP8/9 或任何编解码器不相符。 您可以在此问题中查看优惠和回答 sdps ( offer and answer sdp)。 所以我尝试按照以下方式初始化 PeerconnectionFactory

    let decoderFactory = RTCDefaultVideoDecoderFactory.init()
    let encoderFactory = RTCDefaultVideoEncoderFactory.init()
    let videoCodedInfo = RTCVideoCodecInfo.init(name: kRTCVideoCodecVp8Name )
    encoderFactory.preferredCodec = videoCodedInfo        
    let connectionFactory = RTCPeerConnectionFactory.init(encoderFactory: encoderFactory, decoderFactory: decoderFactory)

但即使我使用这样的初始化 sdp 提供和答案也不会改变。那么问题出在哪里以及如何为 android/Ios 创建正确的 sdp,这样 setremotedescription 就不会显示错误。

我从 2015 年开始使用 libjingle 的 android 应用,从 2018 年开始使用 IOS 应用 GoogleWebRTC pod。

【问题讨论】:

    标签: android ios video-streaming webrtc


    【解决方案1】:

    你可以试试

    let decoderFactory = RTCDefaultVideoDecoderFactory()
    let encoderFactory = RTCDefaultVideoEncoderFactory()
    factory = RTCPeerConnectionFactory(encoderFactory: encoderFactory, decoderFactory: decoderFactory)
    

    我在 IOS 中使用https://cocoapods.org/pods/GoogleWebRTC。 当使用 Android 4.x 通话时,这对我有用,视频类型为 VP8,而使用 IOS 视频通话时为 H264。 期待你

    【讨论】:

    • 这对我没有帮助。同样的错误。在回答 sdp 没有关于编解码器 v8 的信息。很奇怪。
    • 在 Android 我使用 webrtc.org/native-code/android 。我为 android 和 IOS 连接了 VP8 和 H264。
    • 你可以尝试只使用谷歌的来源,不要使用任何人的来源。因为他们只转换到 VP8。
    • 我无法为 android 更改资源。 Android 应用程序使用 2015 年来自谷歌的 android pristine libjingle。但对于 IOS,我使用最新的 pod 'GoogleWebRTC'。我不确定它们是否因为不同的发布年份而发生冲突。 GoogleWebRTC 是原始 libjingle 的延续。 WebRtc 有相同的方法和部分相同的代码。我只能尝试将 GoogleWebRTC 降级为 IOS 的原始 libjingle 并检查它是如何工作的。但我不确定我应该这样做吗?
    • 将尝试从 libjingle 升级我的 android 以编译 'org.webrtc:google-webrtc:1.0.+'
    【解决方案2】:

    我认为是 google-webrtc 版本问题。但我不知道为什么。你不应该使用'org.webrtc:google-webrtc:1.0.+'。你可以试试合适的版本,比如'org.webrtc:google-webrtc:1.0.24277'

    【讨论】:

      猜你喜欢
      • 2020-08-11
      • 2017-06-22
      • 2020-11-26
      • 2019-10-01
      • 2018-09-25
      • 2019-03-21
      • 2017-06-26
      • 2014-07-06
      • 2013-07-03
      相关资源
      最近更新 更多