Android 无法解析符号';rtpeerconnection()';

Android 无法解析符号';rtpeerconnection()';,android,webrtc,Android,Webrtc,我试图解决这个问题 但看起来是这样的: “rtcpeerconnection()”在webrtc的最新版本中不存在: “org.webrtc:google webrtc:1.0.28513” 我的onAddStream在旧版本中有一个回调。但现在不是了 请帮帮我 在@philip的回答后编辑 我无法覆盖peerObserver,android studio说: “peerConnection.Observer”类型的表达式PeerRobServer不能为空 作为函数调用。找不到函数“invoke

我试图解决这个问题

但看起来是这样的:

“rtcpeerconnection()”在webrtc的最新版本中不存在: “org.webrtc:google webrtc:1.0.28513”

我的onAddStream在旧版本中有一个回调。但现在不是了

请帮帮我

在@philip的回答后编辑

我无法覆盖peerObserver,android studio说:

“peerConnection.Observer”类型的表达式PeerRobServer不能为空 作为函数调用。找不到函数“invoke()”

我创建factory和source的部分:

private fun setConfigurationOfCamera() {

        Log.d("webRTCClientCaster", "setConfigurationOfCamera")
        val options = PeerConnectionFactory.Options()
        val defaultVideoEncoderFactory = DefaultVideoEncoderFactory(
            this.mEglBase,
            true,
            true
        )
        val defaultVideoDecoderFactory = DefaultVideoDecoderFactory(this.mEglBase)
        mPeerConnectionFactory = PeerConnectionFactory.builder()
            .setOptions(options)
            .setVideoEncoderFactory(defaultVideoEncoderFactory)
            .setVideoDecoderFactory(defaultVideoDecoderFactory)
            .createPeerConnectionFactory()

        mLocalMS = mPeerConnectionFactory!!.createLocalMediaStream(WebRTCConstant.STREAM_LABEL)

        if (mPeerConnectionParameters.isVideoCallEnabled) {

            val surfaceTextureHelper = SurfaceTextureHelper.create("CaptureThread", this.mEglBase)
            videoCapturerAndroid = Capturer.getInstance().video
            mVideoSource = mPeerConnectionFactory?.createVideoSource(videoCapturerAndroid!!.isScreencast)

            videoCapturerAndroid?.initialize(surfaceTextureHelper, MyApp.getContext(), mVideoSource?.capturerObserver)
            Capturer.getInstance().startCapture(
                mPeerConnectionParameters.videoWidth,
                mPeerConnectionParameters.videoHeight,
                mPeerConnectionParameters.videoFps
            )
            // Add track to video capture with device
            mLocalMS.addTrack(createVideoTrack(WebRTCConstant.VIDEO_ID, mVideoSource!!))
        }

        mAudioSource = mPeerConnectionFactory!!.createAudioSource(audioConstraints)
        mLocalMS.addTrack(createAudioTrack(mAudioSource!!))

        listener.onConfigurationReady()
    }
注释是我要替换的,我有一个sigabrt,他说:

# Fatal error in: ../../../../usr/local/google/home/sakal/code/webrtc-aar-release/src/pc/peer_connection.cc, line 1240
    # last system error: 0
    # Check failed: !IsUnifiedPlan()
    # AddStream is not available with Unified Plan SdpSemantics. Please use AddTrack instead.
2019-09-23 12:53:07.223 4804-6057/com.Dazzl.debug A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 6057 (signaling_threa)

试着这样做。请注意,onTrack是在PeerConnectionObserver(pcObserver)中实现的,而不是在peerConnection本身中实现的:

    PeerConnection.RTCConfiguration rtcConfig =
            new PeerConnection.RTCConfiguration(mIceServers);
rtcConfig.sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN;
//Unified Plan is the new standard for SDP semantics and is needed to use transceivers

peerConnection = factory.createPeerConnection(rtcConfig, new PcObserver("localPeerCreation")
        {
            @Override
            public void onTrack(RtpTransceiver transceiver) {
                showToast(getString(R.string.onReceivedTrackToastMessage));
                super.onTrack(transceiver);
                gotRemoteTrack(transceiver);
            }
        });

//Somewhere else in your code, where you create the local video track...
localVideoTrack = factory.createVideoTrack(VIDEO_TRACK_ID, videoSource);

peerConnection.addTransceiver(localVideoTrack);
peerConnection.addTransceiver(localAudioTrack);
//在一个单独的类中创建一个从PeerConnection.Observer继承的PeerConnectionObserver

  public class PcObserver implements PeerConnection.Observer {
    private String logTag;

    CustomPeerConnectionObserver(String logTag) {
        this.logTag = logTag
    }

    @Override
    public void onSignalingChange(PeerConnection.SignalingState signalingState) {
        Log.d(logTag, "onSignalingChange() called with: signalingState = [" + signalingState + "]");
    }
 //....
}

谢谢你回复我,也许我不清楚,但我的问题是webrtc android中不存在RTPeerConnection。android中有一个类PeerConnection,但她没有实现ontrack。哦,我明白了,看起来ontrack是在PeerConnectionObserver中实现的,而不是PeerConnection本身。我将更新我的答案以反映这一点。哦,我忘了提到要使用onTrack,您必须在RTC配置中使用统一计划sdp语义。将相应地编辑答案。感谢您抽出时间。我用你说的来编辑我的帖子,我在这里解释我的新问题。不客气。PeerRobServer类是否实现了PeerConnection.Observer?此外,AddStream不能用于UnifiedPlan Sdp语义。这是老办法。新的方法是做peerConnection.add收发器(videoTrack),或者我想你可以做peerConnection.addTrack(videoTrack)
  public class PcObserver implements PeerConnection.Observer {
    private String logTag;

    CustomPeerConnectionObserver(String logTag) {
        this.logTag = logTag
    }

    @Override
    public void onSignalingChange(PeerConnection.SignalingState signalingState) {
        Log.d(logTag, "onSignalingChange() called with: signalingState = [" + signalingState + "]");
    }
 //....
}