2

从最近几天开始,我在 WebRtc 上工作,我也在服务器端和 android 端设置了所有东西,但是当我通过 Android 设备调用时,几秒钟后音频传输停止,而它工作正常,网络到网络,所以我做错了什么在安卓端。

这是我用于设置 WebRtc 的代码

 PeerConnectionFactory.initializeAndroidGlobals(listener, true, true, 
 params.videoCodecHwAcceleration, mEGLcontext);

 factory = new PeerConnectionFactory();
 localMS = factory.createLocalMediaStream("ARDAMS");

 pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true"));
 pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveVideo", "true"));
 pcConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));
 pcConstraints.optional.add(new MediaConstraints.KeyValuePair("internalSctpDataChannels", "true"));

 if(pcParams.videoCallEnabled){
        MediaConstraints videoConstraints = new MediaConstraints();
        videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxHeight", Integer.toString(pcParams.videoHeight)));
        videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxWidth", Integer.toString(pcParams.videoWidth)));
        videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxFrameRate", Integer.toString(pcParams.videoFps)));
        videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("minFrameRate", Integer.toString(pcParams.videoFps)));

        videoSource = factory.createVideoSource(getVideoCapturer(), videoConstraints);
        localMS.addTrack(factory.createVideoTrack("ARDAMSv0", videoSource));
    }

 MediaConstraints audioConstraints = new MediaConstraints();
 audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair(AUDIO_ECHO_CANCELLATION_CONSTRAINT, "true"));
 audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair(AUDIO_NOISE_SUPPRESSION_CONSTRAINT, "true"));

 AudioSource audioSource = factory.createAudioSource(audioConstraints);

 localMS.addTrack(factory.createAudioTrack("ARDAMSa0", audioSource));

 mListener.onLocalStream(localMS);
4

0 回答 0