了解如何在Android/Iphone之间为offer/answer(webrtc)生成正确的sdp



我正在努力理解当Iphone和Android手机之间发出信号时做出正确报价答案的正确方法。由于编解码器不同,苹果手机设置远程描述失败。众所周知,安卓不接受H264。

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

在安卓/安卓之间都工作正常,因为两款手机都有相同的VP8/9编解码器。但就我而言,IOS 仅使用 H264 编解码器发送到安卓 sdp 报价。所以看起来这就是问题所在。尽管安卓正在设置远程描述,但之后她使用没有 VP8/9 编解码器信息的 sdp 创建答案。此答案sdp正在设置Iphone与上述错误。所以我在问为什么在 android 答案 sdp 中与 VP8/9 或任何编解码器不符。 您可以在此问题中看到报价和答案 sdps( 提供和回答 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,以便设置远程描述不显示错误。

我有 android 应用程序使用 libjingle 从 2015 年开始和 IOS 应用程序 GoogleWebRTC pod 从 2018 年开始。

你可以试试

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

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

我认为这是google-webrtc版本的问题。 但我不知道为什么。 您不应该使用'org.webrtc:google-webrtc:1.0.+'。 您可以尝试正确的版本,例如"org.webrtc:google-webrtc:1.0.24277">

最新更新