RootEncoder: Exception: I/BaseEncoder: java.lang.IllegalStateException on method getDataFromEncoder()

Hello,

I’m trying to start both streaming and recording using the RtmpCamera1 method startStream() followed by startRecord(), as following:

rtmpCamera1.startPreview(cameraFacing, width, height);

rtmpCamera1.setAuthorization(username, password);

if (prepareEncoders()) {
	if (!rtmpCamera1.isStreaming()) {
		rtmpCamera1.startStream(url);
	}
	
	if (!rtmpCamera1.isRecording()) {
		rtmpCamera1.startRecord(path);
	}
}

Most of the time the above code starts both streaming and recording processes successfuly (I’m able to watch the streaming and open the recorded files). Sometimes, however, after the execution of this code the application starts to show the following exceptions repetedly (using library version 1.9.6). After these exceptions start to be thrown streaming and recording don’t work anymore.

01-20 11:04:06.905 I/BaseEncoder(10263): Encoding error
01-20 11:04:06.905 I/BaseEncoder(10263): java.lang.IllegalStateException
01-20 11:04:06.905 I/BaseEncoder(10263): at android.media.MediaCodec.native_dequeueInputBuffer(Nativ e Method)
01-20 11:04:06.905 I/BaseEncoder(10263): at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.j ava:996)
01-20 11:04:06.905 I/BaseEncoder(10263): at com.pedro.encoder.BaseEncoder.getDataFromEncoder(BaseEnc oder.java:129)
01-20 11:04:06.905 I/BaseEncoder(10263): at com.pedro.encoder.BaseEncoder$1.run(BaseEncoder.java:62)

01-20 11:04:06.905 I/BaseEncoder(10263): at android.os.Handler.handleCallback(Handler.java:815)
01-20 11:04:06.905 I/BaseEncoder(10263): at android.os.Handler.dispatchMessage(Handler.java:104)
01-20 11:04:06.905 I/BaseEncoder(10263): at android.os.Looper.loop(Looper.java:194)
01-20 11:04:06.905 I/BaseEncoder(10263): at android.os.HandlerThread.run(HandlerThread.java:61)

I tried to execute the same code using version 1.9.5 of the library, but wasn’t able to reproduce the same behavior. Using this version, sometimes the above exceptions were thrown after the execution of the same code:

01-20 16:16:59.267 I/BaseEncoder(25439): Encoding error 01-20 16:16:59.267 I/BaseEncoder(25439): java.lang.NullPointerException: Attempt to get length of null array 01-20 16:16:59.267 I/BaseEncoder(25439): at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:356) 01-20 16:16:59.267 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.processInput(BaseEncoder.java:145) 01-20 16:16:59.267 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.inputAvailable(BaseEncoder.java:185) 01-20 16:16:59.267 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.getDataFromEncoder(BaseEncoder.java:121) 01-20 16:16:59.267 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder$1.run(BaseEncoder.java:59) 01-20 16:16:59.267 I/BaseEncoder(25439): at android.os.Handler.handleCallback(Handler.java:815) 01-20 16:16:59.267 I/BaseEncoder(25439): at android.os.Handler.dispatchMessage(Handler.java:104) 01-20 16:16:59.267 I/BaseEncoder(25439): at android.os.Looper.loop(Looper.java:194) 01-20 16:16:59.267 I/BaseEncoder(25439): at android.os.HandlerThread.run(HandlerThread.java:61) 01-20 16:24:44.394 I/BaseEncoder(25439): Encoding error

01-20 16:24:44.394 I/BaseEncoder(25439): java.lang.IllegalStateException: buffer was freed 01-20 16:24:44.394 I/BaseEncoder(25439): at java.nio.DirectByteBuffer.checkNotFreed(DirectByteBuffer.java:557) 01-20 16:24:44.394 I/BaseEncoder(25439): at java.nio.DirectByteBuffer.checkIsAccessible(DirectByteBuffer.java:549) 01-20 16:24:44.394 I/BaseEncoder(25439): at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:352) 01-20 16:24:44.394 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.processInput(BaseEncoder.java:145) 01-20 16:24:44.394 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.inputAvailable(BaseEncoder.java:185) 01-20 16:24:44.394 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.getDataFromEncoder(BaseEncoder.java:121) 01-20 16:24:44.394 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder$1.run(BaseEncoder.java:59) 01-20 16:24:44.394 I/BaseEncoder(25439): at android.os.Handler.handleCallback(Handler.java:815) 01-20 16:24:44.394 I/BaseEncoder(25439): at android.os.Handler.dispatchMessage(Handler.java:104) 01-20 16:24:44.394 I/BaseEncoder(25439): at android.os.Looper.loop(Looper.java:194) 01-20 16:24:44.394 I/BaseEncoder(25439): at android.os.HandlerThread.run(HandlerThread.java:61)

01-20 16:35:58.522 I/BaseEncoder(25439): Encoding error 01-20 16:35:58.522 I/BaseEncoder(25439): android.media.MediaCodec$CodecException: Error 0xfffffff3 01-20 16:35:58.522 I/BaseEncoder(25439): at android.media.MediaCodec.native_queueInputBuffer(Native Method) 01-20 16:35:58.522 I/BaseEncoder(25439): at android.media.MediaCodec.queueInputBuffer(MediaCodec.java:844) 01-20 16:35:58.522 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.processInput(BaseEncoder.java:147) 01-20 16:35:58.522 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.inputAvailable(BaseEncoder.java:185) 01-20 16:35:58.522 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder.getDataFromEncoder(BaseEncoder.java:121) 01-20 16:35:58.522 I/BaseEncoder(25439): at com.pedro.encoder.BaseEncoder$1.run(BaseEncoder.java:59)01-20 16:35:58.522 I/BaseEncoder(25439): at android.os.Handler.handleCallback(Handler.java:815) 01-20 16:35:58.522 I/BaseEncoder(25439): at android.os.Handler.dispatchMessage(Handler.java:104) 01-20 16:35:58.522 I/BaseEncoder(25439): at android.os.Looper.loop(Looper.java:194) 01-20 16:35:58.522 I/BaseEncoder(25439): at android.os.HandlerThread.run(HandlerThread.java:61)

In the tests I run (using 1.9.5) these exceptions didn’t seem to interfere in the streaming/recording processes (unlike in version 1.9.6).

Can you help me understand what the problem is?

Thank you

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 30 (13 by maintainers)

Most upvoted comments

Hello!

I ran several tests using implementation 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:157b0ed2b8 and was unable to reproduce the error. The issue seems to have been resolved.

Thank you so much for the help!