Wowza Community

OutOfMemoryException on Android(GoCoder SDK)

After streaming approximately 20 minutes app crushes with following error:

Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 20640 byte allocation with 256 free bytes and 256B until OOM, max allowed footprint 268435456, growth limit 268435456 at com.wowza.gocoder.sdk.support.c.a.onDrainEncoder(GoCoderSDK:620) at com.wowza.gocoder.sdk.support.c.a$a.handleMessage(GoCoderSDK:1041) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at com.wowza.gocoder.sdk.support.c.a.run(GoCoderSDK:279) at java.lang.Thread.run(Thread.java:764)

Should I create a ticket or is there a way to fix this in code?

Yes @olena so, if you could please submit a support ticket, we can run some tests to determine the true cause. Thank you.

I also have this same issue.I have used recent sdk version.Please provide a detail How to fix this issue?

I will check to see if a solution was discovered through a support ticket @Uma Maheswari and respond again shortly.

I did not see a ticket submitted for this by @olena so. Olena, do you have an update? Without a support ticket, we can’t properly run the tests to diagnose the cause.

I did receive this info to try and assist you, but it is only advice:

You can improve your chances of holding onto the stream with the below ABR params:

Here are detailed descriptions for the ABR-related parameters available in the WOWZMediaConfig class of the Android SDK…

The LowBandwidthScalingFactor property is the factor by which to scale the desired bitrate in low bandwidth conditions. Valid range is 0.0 to 1.0; any other value will be ignored. Setting a value of 0.0 indicates that the encoder should choose the best value; setting a value of 1.0 indicates that bitrate will never be throttled. The default is 0.75.

The FrameBufferSizeMultiplier property is the value by which to multiply the video frame rate to derive the number of video frames to buffer before the encoder starts to throttle bitrate and/or frame rate. For example: if the frame rate is 30 and the videoFrameBufferSizeMultiplier is 5, the encoder will buffer 150 (5 * 30) frames before throttling. Setting a value of 0 indicates that the encoder should choose the best value. The default value is 4.

The FrameRateLowBandwidthSkipCount property is the number of frames to skip when the encoder cannot keep up with the broadcaster. In low bandwidth conditions the encoder will skip frames to conserve bandwidth but still send consistent frames so the encoder can produce smooth playback. The maximum number of frames that can be skipped is equal to the key frame interval minus one - i.e. setting this to 29 with a key frame interval of 30 will produce a key frame only stream, setting to 1 will never skip frames. The default is 4 meaning skip 1 of every 4 frames.


Please let me know if you have further questions on this and also feel free to submit a support ticket.