2016-08-25 22 views
0

我在android中使用libjingle(version-9127)實現webrtc,問題是在一個應用程序生命週期中,當我嘗試撥打電話時,第一個電話成功建立並結束。但是當第二個電話被接通時,當電話被接聽時,視頻被顯示,但是音頻流不被傳送,然後在3-7秒之後應用程序崩潰給出這個錯誤。 下面的完整logcat的錯誤是:java.lang.AssertionError:預期的條件是真正的webrtc android

08-25 13:47:12.099 20887-23918/com.justtotaltech.tagove.app D/AudioRecordJni: [email protected][tid=23918] 
08-25 13:47:12.099 20887-23918/com.justtotaltech.tagove.app D/AudioManager: SetCommunicationMode(1)@[tid=23918] 
08-25 13:47:12.099 20887-23918/com.justtotaltech.tagove.app D/WebRtcAudioManager: setCommunicationMode(true)@[name=Thread-1692 - 23918, id=1699] 
08-25 13:47:12.099 20887-23918/com.justtotaltech.tagove.app D/AudioRecordJni: [email protected][tid=23918] 
08-25 13:47:12.099 20887-23918/com.justtotaltech.tagove.app D/WebRtcAudioRecord: InitRecording(sampleRate=48000, channels=1) 
08-25 13:47:12.099 20887-23918/com.justtotaltech.tagove.app D/WebRtcAudioRecord: byteBuffer.capacity: 960 
08-25 13:47:12.099 20887-23918/com.justtotaltech.tagove.app D/AudioRecordJni: OnCacheDirectBufferAddress 
08-25 13:47:12.099 20887-23918/com.justtotaltech.tagove.app D/AudioRecordJni: direct buffer capacity: 960 
08-25 13:47:12.109 20887-23918/com.justtotaltech.tagove.app D/WebRtcAudioRecord: AudioRecord.getMinBufferSize: 4096 
08-25 13:47:12.109 20887-23918/com.justtotaltech.tagove.app D/WebRtcAudioRecord: bufferSizeInBytes: 4096 
08-25 13:47:12.109 20887-23918/com.justtotaltech.tagove.app D/WebRtcAudioRecord: AudioRecord session ID: 299, audio format: 2, channels: 1, sample rate: 48000 
08-25 13:47:12.109 20887-23918/com.justtotaltech.tagove.app D/WebRtcAudioRecord: AcousticEchoCanceler.isAvailable: false 
08-25 13:47:12.129 20887-23918/com.justtotaltech.tagove.app D/AudioRecordJni: frames_per_buffer: 480 
08-25 13:47:12.129 20887-23918/com.justtotaltech.tagove.app D/AudioRecordJni: [email protected][tid=23918] 
08-25 13:47:12.129 20887-23918/com.justtotaltech.tagove.app D/WebRtcAudioRecord: StartRecording 
08-25 13:47:12.159 20887-24120/com.justtotaltech.tagove.app D/WebRtcAudioRecord: [email protected][name=AudioRecordJavaThread, id=1707] 
08-25 13:47:12.159 20887-24120/com.justtotaltech.tagove.app E/AudioRecord: start() status -38 
08-25 13:47:12.159 20887-24120/com.justtotaltech.tagove.app W/dalvikvm: threadid=41: thread exiting with uncaught exception (group=0x41687d58) 
08-25 13:47:15.232 20887-24120/com.justtotaltech.tagove.app E/AndroidRuntime: FATAL EXCEPTION: AudioRecordJavaThread 

       Process: com.justtotaltech.tagove.app, PID: 20887 
          java.lang.AssertionError: Expected condition to be true 
          at org.webrtc.voiceengine.WebRtcAudioRecord.assertTrue(WebRtcAudioRecord.java:259) 
          at org.webrtc.voiceengine.WebRtcAudioRecord.access$300(WebRtcAudioRecord.java:29) 
          at org.webrtc.voiceengine.WebRtcAudioRecord$AudioRecordThread.run(WebRtcAudioRecord.java:79) 

編輯:要斷開我有此代碼調用。希望你能弄清楚錯誤是什麼。在此之後,我釋放peerConnections

if(mediaStream != null && isLocal) { 

     mediaStream.removeTrack(audioTrack); 
     audioTrack.setState(MediaStreamTrack.State.ENDED); 
     audioTrack = null; 
     audioSource = null; 

     if(videoTrack != null && ActivityCall.callTypeGlobal.equals(CallManager.CallType.VIDEO)){ 
      Log.d("TestCallType",String.valueOf(ActivityCall.callTypeGlobal)); 
      mediaStream.removeTrack(videoTrack); 
      videoTrack = null; 

      source.stop(); 

      videoCapturer.dispose(); 
      videoCapturer = null; 
      activeCamera = null; 
      Log.d("TestCallType","Video Track"+String.valueOf(videoTrack)); 
      Log.d("TestCallType","Video Capturer"+String.valueOf(videoCapturer)); 
     } 

     mediaStream = null; 
    } 

回答

0

望着source code(如果這不是倉庫我敢肯定這是一個你要根據錯誤行號使用類)引起的例外是該行: assertTrue(audioRecord.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING)

確保在通話結束後釋放您使用的所有內容。當新的呼叫開始時,每個資源都需要新鮮。然後再重新初始化。

+0

@AkshayBissa我有基本相同的代碼,所以我不知道 –

+0

@SamuelMéndez我使用的MediaPlayer播放的鈴聲任何其他步驟可以說也爲DIS – abissa

+0

看到的日誌的第一個錯誤'AudioRecord啓動問題( )狀態-38'。有關於該主題的一些問題(如http://stackoverflow.com/questions/20460892/audiorecord-start-status-38)。也許解決方案來自 –