Java Android WebRTC提供的创建抛出错误和Ice Gathering或涓流不发生。

问题描述 投票:1回答:1

我使用的是Gradle依赖 implementation 'org.webrtc:google-webrtc:1.0.30039'

这就是错误。

Ertc: Fatal error in: gensdkandroidgenerated_metrics_jni......usrlocalgooglehomesakalcodewebrtc-aar-releasesrcsdkandroidsrcjnijni_generator_helper.h, line 94 last system error: 0 检查失败:!env->ExceptionCheck() Alibc: Fatal signal 6 (SIGABRT), code -6 in tid 11556 (network_thread ), pid 11515 (est.applicatoin)

onSignalingChange.HAVE_LOCAL_OFFER是异常前的最后一次日志调用。HAVE_LOCAL_OFFER是异常发生前的最后一次日志调用。

创建了一个SDP,但ICE涓流没有发生,即 在IceGathering上OnIceCandidate 根本没有被调用。

Java活动代码。

public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
DataChannel mainDataChannel;
PeerConnection mainPeerConnection;
PeerConnectionFactory factory;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initializePeerConnectionFactory();
    initializeMyPeerConnection(); // Connection Initialization.
    startConnection(); //Getting the offer


private void initializePeerConnectionFactory() {

    PeerConnectionFactory.InitializationOptions initializationOptions =
            PeerConnectionFactory.InitializationOptions.builder(this)
                    .setEnableInternalTracer(true)
                    .createInitializationOptions();
    PeerConnectionFactory.initialize(initializationOptions);

    PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
    factory = PeerConnectionFactory.builder()
            .setOptions(options)
            .createPeerConnectionFactory();
}

private void startConnection() {
    Log.d(TAG, "startConnection: Starting Connection...");
    //CreateOffer fires the request to get ICE candidates and finish the SDP. We can listen to all these events on the corresponding observers.
    mainPeerConnection.createOffer(new SimpleSdpObserver() {
        @Override
        public void onCreateSuccess(SessionDescription sessionDescription) {
            Log.d(TAG, "onCreateSuccess: " + sessionDescription.description);
            mainPeerConnection.setLocalDescription(new SimpleSdpObserver(), sessionDescription);
        }

        @Override
        public void onCreateFailure(String s) {
            Log.e(TAG, "onCreateFailure: FAILED:" + s);
        }
    }, new MediaConstraints());
    Log.d(TAG, "startConnection: Start Connection end");
}

private void initializeMyPeerConnection() {
    Log.d(TAG, "initializeMyPeerConnection: Starting Initialization...");
    mainPeerConnection = createPeerConnection(factory);

    mainDataChannel = mainPeerConnection.createDataChannel("sendDataChannel", new DataChannel.Init());//Setting the data channel.
    mainDataChannel.registerObserver(new DataChannel.Observer() {
        @Override
        public void onBufferedAmountChange(long l) {

        }

        @Override
        public void onStateChange() {
            //Data channel state change
            Log.d(TAG, "onStateChange: " + mainDataChannel.state().toString());
        }

        @Override
        public void onMessage(DataChannel.Buffer buffer) {
            Toast.makeText(MainActivity.this, "Got the message!", Toast.LENGTH_SHORT).show();
        }
    });
    Log.d(TAG, "initializeMyPeerConnection: Finished Initializing.");
}

private PeerConnection createPeerConnection(PeerConnectionFactory factory) {
    List<PeerConnection.IceServer> iceServers = new LinkedList<>();
    iceServers.add(PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer());
    PeerConnection.RTCConfiguration rtcConfiguration = new PeerConnection.RTCConfiguration(iceServers);
    PeerConnection.Observer pcObserver = new MyPeerConnectionObserver(TAG, mainPeerConnection);

    return factory.createPeerConnection(rtcConfiguration, pcObserver);
}

}

java android webrtc
1个回答
0
投票

我有同样的问题,当我在标签中的 LocalMediaStream. 我把空格去掉就解决了。我不知道为什么会这样。

© www.soinside.com 2019 - 2024. All rights reserved.