首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓,如何在WebRTC中为对等连接添加多个音轨?

安卓,如何在WebRTC中为对等连接添加多个音轨?
EN

Stack Overflow用户
提问于 2022-08-31 14:03:39
回答 1查看 143关注 0票数 0

我想发送多个音轨给远程同行。例如,videoTrack,audioTrack,shareScreenTrack。

我使用UNIFIED_PLAN就像下面的用法一样。

代码语言:javascript
复制
val rtcConfig = PeerConnection.RTCConfiguration(
    arrayListOf(PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer())
).apply { sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN }

我加了这样的音轨

代码语言:javascript
复制
peerConnection?.addTrack(videoTrack)
peerConnection?.addTrack(audioTrack)
peerConnection?.addTrack(captureScreenVideoTrack)

但只有第一条轨道。当我添加onTrack调试时,videoTrack的调试只会下降一次。它不属于audioTrack和captureScreenVideoTrack。

代码语言:javascript
复制
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 -> {}
        }    
}
EN

回答 1

Stack Overflow用户

发布于 2022-09-15 14:10:02

我发现了我的问题。我的错。我从onRenegotiationNeeded打电话给onRenegotiationNeeded。当第一个音轨被添加到对等连接时,将触发OnRenegotiationNeeded。因为第二个音轨是在这之后添加的,所以再次触发onRenegotiationNeeded。我将createOffer从onRenegotiationNeeded中删除,只在第一次调用时调用它,问题就解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73557131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档