我想发送多个音轨给远程同行。例如,videoTrack,audioTrack,shareScreenTrack。
我使用UNIFIED_PLAN就像下面的用法一样。
val rtcConfig = PeerConnection.RTCConfiguration(
arrayListOf(PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer())
).apply { sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN }我加了这样的音轨
peerConnection?.addTrack(videoTrack)
peerConnection?.addTrack(audioTrack)
peerConnection?.addTrack(captureScreenVideoTrack)但只有第一条轨道。当我添加onTrack调试时,videoTrack的调试只会下降一次。它不属于audioTrack和captureScreenVideoTrack。
override fun onTrack(transceiver: RtpTransceiver?) {
super.onTrack(transceiver)
val track = transceiver?.receiver?.track() ?: return
when (track.kind()){
MediaStreamTrack.VIDEO_TRACK_KIND ->{
//videoTrack or captureScreenVideoTrack
}
MediaStreamTrack.AUDIO_TRACK_KIND ->{
//audioTrack
}
else -> {}
}
}发布于 2022-09-15 14:10:02
我发现了我的问题。我的错。我从onRenegotiationNeeded打电话给onRenegotiationNeeded。当第一个音轨被添加到对等连接时,将触发OnRenegotiationNeeded。因为第二个音轨是在这之后添加的,所以再次触发onRenegotiationNeeded。我将createOffer从onRenegotiationNeeded中删除,只在第一次调用时调用它,问题就解决了。
https://stackoverflow.com/questions/73557131
复制相似问题