Java Android WebRTC:MediaStream.removeVideoTrack在设置本地描述后被调用

Java Android WebRTC:MediaStream.removeVideoTrack在设置本地描述后被调用,java,android,scala,webrtc,Java,Android,Scala,Webrtc,我们正在用Scala、WebRTC和JavaSDK开发一个Android应用程序。我们当前的任务包括在被叫方启用视频时接收在第二次SDP协商中发送的远程曲目。因此,调用者正在对等连接观察者的onAddTrack方法中访问该视频轨迹。事实上,该轨迹包含在MediaStreams数组中,然后我们可以通过ProxySink将其附加到视频渲染器-非常类似于此示例: 这是一段代码,负责: override def onAddTrack(rtpReceiver: RtpReceiver, mediaStre

我们正在用Scala、WebRTC和JavaSDK开发一个Android应用程序。我们当前的任务包括在被叫方启用视频时接收在第二次SDP协商中发送的远程曲目。因此,调用者正在对等连接观察者的
onAddTrack
方法中访问该视频轨迹。事实上,该轨迹包含在MediaStreams数组中,然后我们可以通过ProxySink将其附加到视频渲染器-非常类似于此示例:

这是一段代码,负责:

override def onAddTrack(rtpReceiver: RtpReceiver, mediaStreams: Array[MediaStream]): Unit = {
     info("FLOW: onAddTrack")

     rtpReceiver.SetObserver(rtpObserver)

     call.getCallType match {
       case BothVideo(CallRoles.Caller) | RecvPeerVideo(CallRoles.Caller) => {
         if (mediaStreams.size > 0) {
           val mediaStream = mediaStreams(0)
           val videoTracks: Buffer[VideoTrack] = mediaStream.videoTracks.asScala

           this.remoteMediaStream = Some(mediaStream)

           info(s"FLOW: onAddTrack, call-type: ${call.getCallType}")

           if (call.callerShouldReceiveVideo(call.getCallType) && videoTracks.size > 0) {
             info(s"FLOW: onAddTrack, enabling video-track")

             val videoTrack: VideoTrack = videoTracks(0)

             mediaStream.addPreservedTrack(videoTrack)
             videoTrack.setEnabled(true)
             videoTrack.addSink(flowManager.remoteProxySink)

            ...
           }
         }
       }
问题是,我们无法从被叫方的远程曲目中获取帧,这有点令人惊讶,因为我们已经能够成功设置被叫方的远程曲目,并在被叫方用视频发起呼叫并且必须将远程曲目发送给被叫方时渲染帧

我们检测到,在创建应答时,在SdpObserver集中调用setLocalDescription之后,MediaStream()上正在调用dispose,我们认为这可能是问题的原因

创建答案:

pcConn.setRemoteDescription(sdpObserver, sdp)
peerConn.createAnswer(sdpObserver, WebRTCCall.sdpMediaConstraints())

在SdpObserver中:

override def onCreateSuccess(sdp: SessionDescription) = {
 ...
 peerConn.setLocalDescription(this, sdp)
 ...
}
在本机setLocalDescription中触发MediaStream.dispose方法的是什么

更新 我们在sdp中发现了一些有趣的东西,视频轨迹似乎只有sendonly方向

    v=0
    o=- 2191449863069826960 3 IN IP4 127.0.0.1
    s=-
    t=0 0
    a=group:BUNDLE 0 1 2 3
    a=msid-semantic: WMS stream0
    m=audio 56825 UDP/TLS/RTP/SAVPF 111 103 9 102 0 8 105 13 110 113 126
    c=IN IP4 35.167.127.194
    a=rtcp:9 IN IP4 0.0.0.0
    a=candidate:2294452033 1 udp 2122260223 192.168.2.159 60968 typ host generation 0 network-id 3 network-cost 10
    a=candidate:559267639 1 udp 2122202367 ::1 39373 typ host generation 0 network-id 2
    a=candidate:1510613869 1 udp 2122129151 127.0.0.1 56438 typ host generation 0 network-id 1
    a=candidate:1876313031 1 tcp 1518222591 ::1 59473 typ host tcptype passive generation 0 network-id 2
    a=candidate:344579997 1 tcp 1518149375 127.0.0.1 47922 typ host tcptype passive generation 0 network-id 1
    a=candidate:842163049 1 udp 1686052607 201.233.49.70 60968 typ srflx raddr 192.168.2.159 rport 60968 generation 0 network-id 3 network-cost 10
    a=candidate:1600295039 1 udp 41885439 35.167.127.194 56825 typ relay raddr 201.233.49.70 rport 60968 generation 0 network-id 3 network-cost 10
    a=candidate:3811514541 1 udp 41885695 34.221.141.99 60923 typ relay raddr 201.233.49.70 rport 60968 generation 0 network-id 3 network-cost 10
    a=ice-ufrag:GGkb
    a=ice-pwd:owqpzSht95NQb92cgzKNkQmJ
    a=ice-options:trickle renomination
    a=fingerprint:sha-256 45:76:5A:81:C1:CD:6B:C8:17:C6:CB:7B:20:CD:C6:DD:59:A3:DC:11:47:78:D3:E1:E1:EE:55:1F:83:A5:32:E4
    a=setup:passive
    a=mid:0
    a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
    a=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
    a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid
    a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
    a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
    a=sendrecv
    a=msid:stream0 audio0
    a=rtcp-mux
    a=rtpmap:111 opus/48000/2
    a=rtcp-fb:111 transport-cc
    a=fmtp:111 minptime=10;useinbandfec=1
    a=rtpmap:103 ISAC/16000
    a=rtpmap:9 G722/8000
    a=rtpmap:102 ILBC/8000
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:105 CN/16000
    a=rtpmap:13 CN/8000
    a=rtpmap:110 telephone-event/48000
    a=rtpmap:113 telephone-event/16000
    a=rtpmap:126 telephone-event/8000
    a=ssrc:1249625177 cname:IgXNTJvPXp2HndWi
    m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127
    c=IN IP4 0.0.0.0
    a=rtcp:9 IN IP4 0.0.0.0
    a=ice-ufrag:GGkb
    a=ice-pwd:owqpzSht95NQb92cgzKNkQmJ
    a=ice-options:trickle renomination
    a=fingerprint:sha-256 45:76:5A:81:C1:CD:6B:C8:17:C6:CB:7B:20:CD:C6:DD:59:A3:DC:11:47:78:D3:E1:E1:EE:55:1F:83:A5:32:E4
    a=setup:passive
    a=mid:1
    a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
    a=extmap:13 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    a=extmap:12 urn:3gpp:video-orientation
    a=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
    a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
    a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
    a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
    a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
    a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
    a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid
    a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
    a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
    a=sendonly
    a=msid:stream0 video0
    a=rtcp-mux
    a=rtcp-rsize
    a=rtpmap:96 VP8/90000
    a=rtcp-fb:96 goog-remb
    a=rtcp-fb:96 transport-cc
    a=rtcp-fb:96 ccm fir
    a=rtcp-fb:96 nack
    a=rtcp-fb:96 nack pli
    a=rtpmap:97 rtx/90000
    a=fmtp:97 apt=96
    a=rtpmap:98 VP9/90000
    a=rtcp-fb:98 goog-remb
    a=rtcp-fb:98 transport-cc
    a=rtcp-fb:98 ccm fir
    a=rtcp-fb:98 nack
    a=rtcp-fb:98 nack pli
    a=rtpmap:99 rtx/90000
    a=fmtp:99 apt=98
    a=rtpmap:100 red/90000
    a=rtpmap:101 rtx/90000
    a=fmtp:101 apt=100
    a=rtpmap:127 ulpfec/90000
    a=ssrc-group:FID 1487952389 3127747783
    a=ssrc:1487952389 cname:IgXNTJvPXp2HndWi
    a=ssrc:3127747783 cname:IgXNTJvPXp2HndWi
    m=application 9 DTLS/SCTP 5000
    c=IN IP4 0.0.0.0
    b=AS:30
    a=ice-ufrag:GGkb
    a=ice-pwd:owqpzSht95NQb92cgzKNkQmJ
    a