pedroSG94 / RootEncoder

RootEncoder for Android (rtmp-rtsp-stream-client-java) is a stream encoder to push video/audio to media servers using protocols RTMP, RTSP, SRT and UDP with all code written in Java/Kotlin
Apache License 2.0
2.54k stars 772 forks source link

SocketException: Socket closed on device with API 19 #1041

Closed ilbonte closed 7 months ago

ilbonte commented 2 years ago

Sorry to bother you... :(

I'm working on this old augmented reality glasses mounting android 19. For various reasons I had to remove the old library used for rtmp streaming in favour of your library. The streaming is working fine on newer device (API 30), but I'm having issues on the old glasses. The stream starts for a moment and than it crashes with Socket closed. Note that the streaming was working with the old library. Any idea on what could be the problem? (Or how I can debug it better.)

This is the log:

I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
I/RtmpSender: Video frame discarded
I/CommandsManager: read Acknowledgement(sequenceNumber=627653)

[...]

I/RtmpSender: Video frame discarded
I/RtmpSender: wrote Video packet, size 462865
    wrote Audio packet, size 306
I/RtmpSender: wrote Audio packet, size 307
    wrote Audio packet, size 264
I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
I/RtmpSender: Video frame discarded

[...]

I/RtmpSender: Audio frame discarded
I/CommandsManager: send Command(name='closeStream', transactionId=6, timeStamp=6, streamId=1, data=[AmfString value: closeStream, AmfNumber value: 6.0, AmfNull], bodySize=24)
E/RtmpSender: send error: 
    java.net.SocketException: Socket closed
        at libcore.io.Posix.sendtoBytes(Native Method)
        at libcore.io.Posix.sendto(Posix.java:156)
        at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
        at libcore.io.IoBridge.sendto(IoBridge.java:466)
        at java.net.PlainSocketImpl.write(PlainSocketImpl.java:508)
        at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
        at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:270)
        at com.pedro.rtmp.rtmp.message.RtmpMessage.writeBody(RtmpMessage.kt:130)
        at com.pedro.rtmp.rtmp.CommandsManager.sendVideoPacket(CommandsManager.kt:254)
        at com.pedro.rtmp.rtmp.RtmpSender.start$lambda-2(RtmpSender.kt:115)
        at com.pedro.rtmp.rtmp.RtmpSender.lambda$RWpSSbIll9sp_byGoOkFIfDGBxg(RtmpSender.kt)
        at com.pedro.rtmp.rtmp.-$$Lambda$RtmpSender$RWpSSbIll9sp_byGoOkFIfDGBxg.run(lambda)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)
pedroSG94 commented 2 years ago

According with logcat, my library send closeStream command but this command is only called if you call disconnect method (called on reconnect or stopStream methods). Can you share me a full logcat to know the reason about it? Which version is the old library?

Also, I can appreciate that you video packet is too large producing discard frames. This could be caused by your internet connection or a high bitrate. can you share me preparevideo parameters used?

ilbonte commented 2 years ago

is only called if you call disconnect method (called on reconnect or stopStream methods).

Interesting, maybe I'm calling stopStream accidentally somewhere.

Which version is the old library?

Sorry, maybe I wasn't clear. It is another library: https://github.com/begeekmyfriend/yasea/tree/android-16

This could be caused by your internet connection or a high bitrate.

My internet connection is quite fast, maybe the wifi on the device is slow...

I'm using prepareVideo() so it using the defaults.. I'll try to lower it anyway to see if it improves

pedroSG94 commented 2 years ago

If you are using default parameters. It is weird.

Using default parameters the video bitrate (bps) is 1200 * 1024 but in your logs I can see a video packet of 462865. Assuming that you have 30fps and all packet have a similar size the bitrate is around 14Mbps not even close to 1.2Mbps configured in default parameters so I think that your video codec is doing something weird.

I recommend you follow this steps:

After resolve that, check if you still have "frame discarded" in logs and in this case try this:

After share me that and I will check a way to avoid frame discarded

ilbonte commented 2 years ago

Fixed the problem with stopStream and now I'm also using the OpenGL View. The preview looks fine.

I still see a lot of discarded packet. Unfortunately right now I can not try again with the other library, maybe in a couple of days...

Following there is a more complete log and with all the available codec printed


I/ActivityManager: Timeline: Activity_launch_request id:com.deornet.ddira time:7792103
W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/util/Range;)
I/dalvikvm: Could not find method android.util.Range.getUpper, referenced from method com.pedro.encoder.input.video.CameraHelper.discardCamera2Fps
W/dalvikvm: VFY: unable to resolve virtual method 3987: Landroid/util/Range;.getUpper ()Ljava/lang/Comparable;
D/dalvikvm: VFY: replacing opcode 0x6e at 0x000f
I/Camera1ApiManager: 2048X1080, not supported for encoder
I/Camera1ApiManager: 2048X1080, not supported for encoder
W/dalvikvm: Unable to resolve superclass of Lcom/pedro/encoder/BaseEncoder$2; (279)
    Link of class 'Lcom/pedro/encoder/BaseEncoder$2;' failed
E/dalvikvm: Could not find class 'com.pedro.encoder.BaseEncoder$2', referenced from method com.pedro.encoder.BaseEncoder.createAsyncCallback
W/dalvikvm: VFY: unable to resolve new-instance 3447 (Lcom/pedro/encoder/BaseEncoder$2;) in Lcom/pedro/encoder/BaseEncoder;
D/dalvikvm: VFY: replacing opcode 0x22 at 0x0000
I/dalvikvm: Could not find method android.media.MediaCodec.setCallback, referenced from method com.pedro.encoder.BaseEncoder.initCodec
W/dalvikvm: VFY: unable to resolve virtual method 1398: Landroid/media/MediaCodec;.setCallback (Landroid/media/MediaCodec$Callback;Landroid/os/Handler;)V
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0024
I/dalvikvm: Could not find method android.media.MediaCodec.getInputBuffer, referenced from method com.pedro.encoder.BaseEncoder.inputAvailable
W/dalvikvm: VFY: unable to resolve virtual method 1390: Landroid/media/MediaCodec;.getInputBuffer (I)Ljava/nio/ByteBuffer;
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm: Could not find method android.media.MediaCodec.getOutputBuffer, referenced from method com.pedro.encoder.BaseEncoder.outputAvailable
W/dalvikvm: VFY: unable to resolve virtual method 1392: Landroid/media/MediaCodec;.getOutputBuffer (I)Ljava/nio/ByteBuffer;
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0006
W/dalvikvm: Unable to resolve superclass of Lcom/pedro/encoder/BaseEncoder$2; (279)
    Link of class 'Lcom/pedro/encoder/BaseEncoder$2;' failed
D/dalvikvm: DexOpt: unable to opt direct call 0x65da at 0x02 in Lcom/pedro/encoder/BaseEncoder;.createAsyncCallback
W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/media/AudioPlaybackCaptureConfiguration;)
    VFY: unable to find class referenced in signature (Landroid/media/AudioPlaybackCaptureConfiguration;)
    VFY: unable to find class referenced in signature (Landroid/media/AudioPlaybackCaptureConfiguration;)
E/dalvikvm: Could not find class 'android.media.AudioRecord$Builder', referenced from method com.pedro.encoder.input.audio.MicrophoneManager.createInternalMicrophone
W/dalvikvm: VFY: unable to resolve new-instance 272 (Landroid/media/AudioRecord$Builder;) in Lcom/pedro/encoder/input/audio/MicrophoneManager;
D/dalvikvm: VFY: replacing opcode 0x22 at 0x0013
    DexOpt: unable to opt direct call 0x054c at 0x15 in Lcom/pedro/encoder/input/audio/MicrophoneManager;.createInternalMicrophone
D/dalvikvm: DexOpt: unable to opt direct call 0x0536 at 0x1e in Lcom/pedro/encoder/input/audio/MicrophoneManager;.createInternalMicrophone
I/dalvikvm: Could not find method android.media.MediaMuxer.<init>, referenced from method com.pedro.rtplibrary.util.RecordController.startRecord
W/dalvikvm: VFY: unable to resolve direct method 1482: Landroid/media/MediaMuxer;.<init> (Ljava/io/FileDescriptor;I)V
D/dalvikvm: VFY: replacing opcode 0x70 at 0x0003
E/TAG: surfaceCreated: 
I/OpenGlViewBase: size: 1280x622
E/TAG: surfaceChanged: 
I/OpenGlViewBase: Thread started.
E/SurfaceManager: GL already released
I/SurfaceManager: GL initialized
E/SurfaceManager: GL already released
I/SurfaceManager: GL initialized
I/Camera1ApiManager: fps: 15000 - 15000
I/Camera1ApiManager: 640X480
I/ActivityManager: Timeline: Activity_idle id: android.os.BinderProxy@41971990 time:7793086
I/AudioPostProcessEffect: EchoCanceler enabled
I/AudioPostProcessEffect: NoiseSuppressor enabled
I/MicrophoneManager: Microphone created, 44100hz, Stereo
I/dalvikvm: Could not find method android.media.MediaCodecList.<init>, referenced from method com.pedro.encoder.utils.CodecUtil.getAllCodecs
W/dalvikvm: VFY: unable to resolve direct method 1422: Landroid/media/MediaCodecList;.<init> (I)V
D/dalvikvm: VFY: replacing opcode 0x70 at 0x000e
I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getEncoderCapabilities, referenced from method com.pedro.encoder.utils.CodecUtil.isCBRModeSupported
W/dalvikvm: VFY: unable to resolve virtual method 1407: Landroid/media/MediaCodecInfo$CodecCapabilities;.getEncoderCapabilities ()Landroid/media/MediaCodecInfo$EncoderCapabilities;
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm: Could not find method android.media.MediaCodecInfo.isHardwareAccelerated, referenced from method com.pedro.encoder.utils.CodecUtil.isHardwareAccelerated
W/dalvikvm: VFY: unable to resolve virtual method 1421: Landroid/media/MediaCodecInfo;.isHardwareAccelerated ()Z
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm: Could not find method android.media.MediaCodecInfo.isHardwareAccelerated, referenced from method com.pedro.encoder.utils.CodecUtil.isSoftwareOnly
W/dalvikvm: VFY: unable to resolve virtual method 1421: Landroid/media/MediaCodecInfo;.isHardwareAccelerated ()Z
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0007
I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getMaxSupportedInstances, referenced from method com.pedro.encoder.utils.CodecUtil.showAllCodecsInfo
W/dalvikvm: VFY: unable to resolve virtual method 1408: Landroid/media/MediaCodecInfo$CodecCapabilities;.getMaxSupportedInstances ()I
D/dalvikvm: VFY: replacing opcode 0x6e at 0x005a
I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getEncoderCapabilities, referenced from method com.pedro.encoder.utils.CodecUtil.showAllCodecsInfo
W/dalvikvm: VFY: unable to resolve virtual method 1407: Landroid/media/MediaCodecInfo$CodecCapabilities;.getEncoderCapabilities ()Landroid/media/MediaCodecInfo$EncoderCapabilities;
D/dalvikvm: VFY: replacing opcode 0x6e at 0x007e
I/dalvikvm: Could not find method android.media.MediaCodecInfo$EncoderCapabilities.getQualityRange, referenced from method com.pedro.encoder.utils.CodecUtil.showAllCodecsInfo
W/dalvikvm: VFY: unable to resolve virtual method 1411: Landroid/media/MediaCodecInfo$EncoderCapabilities;.getQualityRange ()Landroid/util/Range;
D/dalvikvm: VFY: replacing opcode 0x6e at 0x00b3
I/dalvikvm: Could not find method android.media.MediaCodecInfo$EncoderCapabilities.isBitrateModeSupported, referenced from method com.pedro.encoder.utils.CodecUtil.showAllCodecsInfo
W/dalvikvm: VFY: unable to resolve virtual method 1412: Landroid/media/MediaCodecInfo$EncoderCapabilities;.isBitrateModeSupported (I)Z
D/dalvikvm: VFY: replacing opcode 0x6e at 0x00db
I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getVideoCapabilities, referenced from method com.pedro.encoder.utils.CodecUtil.showAllCodecsInfo
W/dalvikvm: VFY: unable to resolve virtual method 1409: Landroid/media/MediaCodecInfo$CodecCapabilities;.getVideoCapabilities ()Landroid/media/MediaCodecInfo$VideoCapabilities;
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0179
I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getMaxSupportedInstances, referenced from method com.pedro.encoder.utils.CodecUtil.showAllCodecsInfo
W/dalvikvm: VFY: unable to resolve virtual method 1408: Landroid/media/MediaCodecInfo$CodecCapabilities;.getMaxSupportedInstances ()I
D/dalvikvm: VFY: replacing opcode 0x6e at 0x029f
I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getAudioCapabilities, referenced from method com.pedro.encoder.utils.CodecUtil.showAllCodecsInfo
W/dalvikvm: VFY: unable to resolve virtual method 1406: Landroid/media/MediaCodecInfo$CodecCapabilities;.getAudioCapabilities ()Landroid/media/MediaCodecInfo$AudioCapabilities;
D/dalvikvm: VFY: replacing opcode 0x6e at 0x023a
I/AudioEncoder: 1 encoders found
    Encoder OMX.google.aac.encoder
    Encoder selected OMX.google.aac.encoder
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/AudioEncoder: prepared
I/SurfaceManager: GL released
E/SurfaceManager: GL already released
I/SurfaceManager: GL released
E/SurfaceManager: GL already released
    GL already released
    GL already released
W/BufferQueue: [unnamed-10094-0] cancelBuffer: BufferQueue has been abandoned!
W/BufferQueue: [unnamed-10094-0] cancelBuffer: BufferQueue has been abandoned!
W/BufferQueue: [unnamed-10094-0] cancelBuffer: BufferQueue has been abandoned!
W/BufferQueue: [unnamed-10094-0] cancelBuffer: BufferQueue has been abandoned!
W/BufferQueue: [unnamed-10094-0] cancelBuffer: BufferQueue has been abandoned!
W/BufferQueue: [unnamed-10094-0] cancelBuffer: BufferQueue has been abandoned!
I/VideoEncoder: 2 encoders found
    Encoder OMX.qcom.video.encoder.avc
I/OMXClient: Using client-side OMX mux.
I/VideoEncoder: Color supported: 2141391876
    Color supported: 2130708361
    Encoder selected OMX.qcom.video.encoder.avc
I/OMXClient: Using client-side OMX mux.
I/VideoEncoder: Prepare video info: SURFACE, 1280x720
    bitrate mode CBR not supported using default mode
E/ACodec: [OMX.qcom.video.encoder.avc] storeMetaDataInBuffers (output) failed w/ err -2147483648
I/ACodec: setupVideoEncoder succeeded
I/VideoEncoder: prepared
E/TAG: ready to stream
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
    Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
D/dalvikvm: GC_FOR_ALLOC freed 1085K, 51% free 5437K/11064K, paused 17ms, total 17ms
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/SoftAVCEncoder: Construct SoftAVCEncoder
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/SoftMPEG4Encoder: Construct SoftMPEG4Encoder
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/SoftMPEG4Encoder: Construct SoftMPEG4Encoder
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
    Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
W/OMXCodec: Failed to set standard component role 'audio_decoder.flac'.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
E/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed
W/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.prepareForAdaptivePlayback failed
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
E/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed
W/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.prepareForAdaptivePlayback failed
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
E/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed
W/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.prepareForAdaptivePlayback failed
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
E/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed
W/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.prepareForAdaptivePlayback failed
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
E/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed
W/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.prepareForAdaptivePlayback failed
I/OMXClient: Using client-side OMX mux.
I/OMXClient: Using client-side OMX mux.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXClient: Using client-side OMX mux.
E/Pedro: ----------------
    Name: OMX.google.aac.encoder
    Type: audio/mp4a-latm
    ----- Encoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.encoder.evrc
    Type: audio/evrc
    ----- Encoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.flac.encoder
    Type: audio/flac
    ----- Encoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.encoder.qcelp13
    Type: audio/qcelp
    ----- Encoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: AACEncoder
    Type: audio/mp4a-latm
    ----- Encoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.amrnb.encoder
    Type: audio/3gpp
    ----- Encoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.amrwb.encoder
    Type: audio/amr-wb
    ----- Encoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.encoder.avc
    Type: video/avc
    ----- Encoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    2130708361
    21
    Profile: 1, level: 65536
    Profile: 2, level: 65536
    Profile: 8, level: 65536
    Profile: 2130706433, level: 65536
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.encoder.mpeg4
    Type: video/mp4v-es
    ----- Encoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    2130708361
    21
    Profile: 1, level: 128
    Profile: 32768, level: 128
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.encoder.h263
    Type: video/3gpp
    ----- Encoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    2130708361
    21
    Profile: 1, level: 128
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.h264.encoder
    Type: video/avc
    ----- Encoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    19
    21
    2130708361
    Profile: 1, level: 1
    Profile: 1, level: 2
    Profile: 1, level: 4
    Profile: 1, level: 8
    Profile: 1, level: 16
    Profile: 1, level: 32
    ----- -----
    ----------------
E/Pedro: ----------------
    Name: OMX.google.mpeg4.encoder
    Type: video/mp4v-es
    ----- Encoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    19
    21
    2130708361
    Profile: 4, level: 8
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.h263.encoder
    Type: video/3gpp
    ----- Encoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    19
    21
    2130708361
    Profile: 1, level: 16
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.decoder.wma
    Type: audio/x-ms-wma
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.decoder.wmaLossLess
    Type: audio/x-ms-wma
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.decoder.wma10Pro
    Type: audio/x-ms-wma
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.decoder.amrwbplus
    Type: audio/amr-wb-plus
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.vorbis.decoder
    Type: audio/vorbis
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.mp3.decoder
    Type: audio/mpeg
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: MP3Decoder
    Type: audio/mpeg
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.amrnb.decoder
    Type: audio/3gpp
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.amrwb.decoder
    Type: audio/amr-wb
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.aac.decoder
    Type: audio/mp4a-latm
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: AACDecoder
    Type: audio/mp4a-latm
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: FLACDecoder
    Type: audio/flac
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.raw.decoder
    Type: audio/flac
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.g711.alaw.decoder
    Type: audio/g711-alaw
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.g711.mlaw.decoder
    Type: audio/g711-mlaw
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.decoder.Qcelp13
    Type: audio/qcelp
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.decoder.evrc
    Type: audio/evrc
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.avc
    Type: video/avc
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    Profile: 1, level: 2048
    Profile: 2, level: 2048
    Profile: 8, level: 2048
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.mpeg2
    Type: video/mpeg2
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    Profile: 0, level: 3
    Profile: 1, level: 3
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.mpeg4
    Type: video/mp4v-es
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    Profile: 1, level: 128
    Profile: 32768, level: 128
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.h263
    Type: video/3gpp
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    Profile: 1, level: 128
    ----- -----
    ----------------
E/Pedro: ----------------
    Name: OMX.qcom.video.decoder.vc1
    Type: video/x-ms-wmv
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.divx
    Type: video/divx
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.divx311
    Type: video/divx311
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.divx4
    Type: video/divx4
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.vp8
    Type: video/x-vnd.on2.vp8
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.video.decoder.hevc
    Type: video/hevc
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    2141391876
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.h264.decoder
    Type: video/avc
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.mpeg4.decoder
    Type: video/mp4v-es
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.h263.decoder
    Type: video/3gpp
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.vp8.decoder
    Type: video/x-vnd.on2.vp8
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    19
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.vp9.decoder
    Type: video/x-vnd.on2.vp9
    ----- Decoder info -----
    ----- -----
    ----- Video info -----
    Supported colors: 
    19
    ----- -----
    ----------------
    ----------------
    Name: AACEncoder
    Type: audio/mp4a-latm
    ----- Encoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.google.raw.decoder
    Type: audio/raw
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
    ----------------
    Name: OMX.qcom.audio.decoder.multiaac
    Type: audio/mp4a-latm
    ----- Decoder info -----
    ----- -----
    ----- Audio info -----
    ----- -----
    ----------------
I/VideoEncoder: started
I/AudioEncoder: started
I/OpenGlViewBase: Thread started.
E/SurfaceManager: GL already released
I/SurfaceManager: GL initialized
E/SurfaceManager: GL already released
I/SurfaceManager: GL initialized
I/SurfaceManager: GL released
E/SurfaceManager: GL already released
I/SurfaceManager: GL initialized
I/SurfaceManager: GL initialized
I/MicrophoneManager: Microphone started
I/Camera1ApiManager: fps: 15000 - 15000
I/Camera1ApiManager: 1280X720
E/TAG: screentiyp:0
I/RtmpClient: send sps and pps
I/Handshake: writing C0
    C0 write successful
    writing C1
    writing time 1643375034 to c1
    writing zero to c1
    writing random to c1
I/Handshake: C1 write successful
    reading S0
I/Handshake: read S0 successful
    reading S1
    read S1 successful
    writing C2
    C2 write successful
    reading S2
    read S2 successful
I/CommandsManager: using default write chunk size 128
I/CommandsManager: send Command(name='connect', transactionId=1, timeStamp=1, streamId=0, data=[AmfString value: connect, AmfNumber value: 1.0, AmfObject properties: {AmfString value: app=AmfString value: ddira, AmfString value: flashVer=AmfString value: FMLE/3.0 (compatible; Lavf57.56.101), AmfString value: swfUrl=AmfString value: , AmfString value: tcUrl=AmfString value: rtmp://ddira.deornet.com:1935/ddira, AmfString value: fpad=AmfBoolean value: false, AmfString value: capabilities=AmfNumber value: 239.0, AmfString value: audioCodecs=AmfNumber value: 3191.0, AmfString value: videoCodecs=AmfNumber value: 252.0, AmfString value: videoFunction=AmfNumber value: 1.0, AmfString value: pageUrl=AmfString value: , AmfString value: objectEncoding=AmfNumber value: 0.0}], bodySize=277)
W/dalvikvm: VFY: unable to find class referenced in signature (Ljava/util/function/Consumer;)
    VFY: unable to find class referenced in signature (Ljava/util/function/Consumer;)
I/dalvikvm: Failed resolving Lj$/$r8$wrapper$java$util$stream$Stream$-WRP; interface 1354 'Ljava/util/stream/Stream;'
W/dalvikvm: Link of class 'Lj$/$r8$wrapper$java$util$stream$Stream$-WRP;' failed
I/dalvikvm: Could not find method j$.$r8$wrapper$java$util$stream$Stream$-WRP.convert, referenced from method kotlin.collections.EmptyList.parallelStream
W/dalvikvm: VFY: unable to resolve static method 29986: Lj$/$r8$wrapper$java$util$stream$Stream$-WRP;.convert (Lj$/util/stream/Stream;)Ljava/util/stream/Stream;
D/dalvikvm: VFY: replacing opcode 0x71 at 0x0004
W/dalvikvm: VFY: unable to find class referenced in signature (Ljava/util/function/Predicate;)
    VFY: unable to find class referenced in signature (Ljava/util/function/Predicate;)
    VFY: unable to find class referenced in signature (Ljava/util/function/UnaryOperator;)
W/dalvikvm: VFY: unable to find class referenced in signature (Ljava/util/function/UnaryOperator;)
I/dalvikvm: Failed resolving Lj$/$r8$wrapper$java$util$Spliterator$-WRP; interface 1294 'Ljava/util/Spliterator;'
W/dalvikvm: Link of class 'Lj$/$r8$wrapper$java$util$Spliterator$-WRP;' failed
I/dalvikvm: Could not find method j$.$r8$wrapper$java$util$Spliterator$-WRP.convert, referenced from method kotlin.collections.EmptyList.spliterator
W/dalvikvm: VFY: unable to resolve static method 29976: Lj$/$r8$wrapper$java$util$Spliterator$-WRP;.convert (Lj$/util/Spliterator;)Ljava/util/Spliterator;
D/dalvikvm: VFY: replacing opcode 0x71 at 0x0004
I/dalvikvm: Failed resolving Lj$/$r8$wrapper$java$util$stream$Stream$-WRP; interface 1354 'Ljava/util/stream/Stream;'
W/dalvikvm: Link of class 'Lj$/$r8$wrapper$java$util$stream$Stream$-WRP;' failed
I/dalvikvm: Could not find method j$.$r8$wrapper$java$util$stream$Stream$-WRP.convert, referenced from method kotlin.collections.EmptyList.stream
W/dalvikvm: VFY: unable to resolve static method 29986: Lj$/$r8$wrapper$java$util$stream$Stream$-WRP;.convert (Lj$/util/stream/Stream;)Ljava/util/stream/Stream;
D/dalvikvm: VFY: replacing opcode 0x71 at 0x0004
W/dalvikvm: VFY: unable to find class referenced in signature (Ljava/util/function/Consumer;)
    VFY: unable to find class referenced in signature (Ljava/util/function/Consumer;)
I/CommandsManager: read WindowAcknowledgementSize(acknowledgementWindowSize=2500000)
    read SetPeerBandwidth(acknowledgementWindowSize=2500000, type=DYNAMIC)
I/CommandsManager: read UserControl(type=STREAM_BEGIN, event=Event(data=0, bufferLength=-1), bodySize=6)
I/RtmpClient: user control command STREAM_BEGIN ignored
I/CommandsManager: read SetChunkSize(chunkSize=4096)
I/RtmpClient: chunk size configured to 4096
D/dalvikvm: GC_FOR_ALLOC freed 2011K, 51% free 5473K/11064K, paused 22ms, total 22ms
I/CommandsManager: read Command(name='_result', transactionId=1, timeStamp=0, streamId=0, data=[AmfString value: _result, AmfNumber value: 1.0, AmfObject properties: {AmfString value: fmsVer=AmfString value: FMS/3,5,7,7009, AmfString value: capabilities=AmfNumber value: 31.0, AmfString value: mode=AmfNumber value: 1.0}, AmfObject properties: {AmfString value: level=AmfString value: status, AmfString value: code=AmfString value: NetConnection.Connect.Success, AmfString value: description=AmfString value: Connection succeeded., AmfString value: data=AmfEcmaArray length: 0, properties: {AmfString value: version=AmfString value: 3,5,7,7009}, AmfString value: clientid=AmfNumber value: 3.01794086E8, AmfString value: objectEncoding=AmfNumber value: 0.0}], bodySize=261)
    send Command(name='releaseStream', transactionId=2, timeStamp=2, streamId=0, data=[AmfString value: releaseStream, AmfNumber value: 2.0, AmfNull, AmfString value: myStream8], bodySize=38)
    send Command(name='FCPublish', transactionId=3, timeStamp=2, streamId=0, data=[AmfString value: FCPublish, AmfNumber value: 3.0, AmfNull, AmfString value: myStream8], bodySize=34)
    send Command(name='createStream', transactionId=4, timeStamp=2, streamId=0, data=[AmfString value: createStream, AmfNumber value: 4.0, AmfNull], bodySize=25)
I/RtmpClient: success response received from connect
I/CommandsManager: read Command(name='onFCPublish', transactionId=0, timeStamp=0, streamId=0, data=[AmfString value: onFCPublish, AmfNumber value: 0.0, AmfNull, AmfObject properties: {AmfString value: level=AmfString value: status, AmfString value: code=AmfString value: NetStream.Publish.Start, AmfString value: description=AmfString value: FCPublish to stream myStream8., AmfString value: clientid=AmfNumber value: 3.01794086E8}], bodySize=141)
I/RtmpClient: unknown onFCPublish response received from unknown command
I/CommandsManager: read Command(name='_result', transactionId=4, timeStamp=0, streamId=0, data=[AmfString value: _result, AmfNumber value: 4.0, AmfNull, AmfNumber value: 1.0], bodySize=29)
    send Command(name='publish', transactionId=5, timeStamp=2, streamId=1, data=[AmfString value: publish, AmfNumber value: 5.0, AmfNull, AmfString value: myStream8, AmfString value: live], bodySize=39)
I/RtmpClient: success response received from createStream
I/CommandsManager: read UserControl(type=STREAM_BEGIN, event=Event(data=1, bufferLength=-1), bodySize=6)
I/RtmpClient: user control command STREAM_BEGIN ignored
I/CommandsManager: read Command(name='onStatus', transactionId=0, timeStamp=0, streamId=0, data=[AmfString value: onStatus, AmfNumber value: 0.0, AmfNull, AmfObject properties: {AmfString value: level=AmfString value: status, AmfString value: code=AmfString value: NetStream.Publish.Start, AmfString value: description=AmfString value: Publishing myStream8., AmfString value: clientid=AmfNumber value: 3.01794086E8}], bodySize=129)
I/CommandsManager: send Data(name='@setDataFrame', data=[AmfString value: onMetaData, AmfEcmaArray length: 12, properties: {AmfString value: duration=AmfNumber value: 0.0, AmfString value: width=AmfNumber value: 1280.0, AmfString value: height=AmfNumber value: 720.0, AmfString value: videocodecid=AmfNumber value: 7.0, AmfString value: framerate=AmfNumber value: 15.0, AmfString value: videodatarate=AmfNumber value: 0.0, AmfString value: audiocodecid=AmfNumber value: 10.0, AmfString value: audiosamplerate=AmfNumber value: 44100.0, AmfString value: audiosamplesize=AmfNumber value: 16.0, AmfString value: audiodatarate=AmfNumber value: 0.0, AmfString value: stereo=AmfBoolean value: true, AmfString value: filesize=AmfNumber value: 0.0}], bodySize=284)
I/RtmpSender: wrote Video packet, size 45
D/dalvikvm: GC_FOR_ALLOC freed 453K, 38% free 6915K/11064K, paused 169ms, total 169ms
I/dalvikvm-heap: Grow heap (frag case) to 10.163MB for 1413141-byte allocation
D/dalvikvm: GC_FOR_ALLOC freed 59K, 34% free 8291K/12448K, paused 13ms, total 14ms
I/dalvikvm-heap: Grow heap (frag case) to 11.505MB for 1413141-byte allocation
D/dalvikvm: GC_FOR_ALLOC freed 14K, 31% free 9672K/13832K, paused 13ms, total 18ms
I/dalvikvm-heap: Grow heap (frag case) to 12.854MB for 1413141-byte allocation
D/dalvikvm: GC_FOR_ALLOC freed 20K, 28% free 11055K/15216K, paused 18ms, total 18ms
I/dalvikvm-heap: Grow heap (frag case) to 14.205MB for 1413141-byte allocation
D/dalvikvm: GC_FOR_ALLOC freed 58K, 26% free 12438K/16600K, paused 15ms, total 15ms
I/dalvikvm-heap: Grow heap (frag case) to 15.555MB for 1413141-byte allocation
D/dalvikvm: GC_FOR_ALLOC freed 52K, 24% free 13819K/17984K, paused 14ms, total 14ms
I/dalvikvm-heap: Grow heap (frag case) to 16.905MB for 1413141-byte allocation

D/dalvikvm: GC_FOR_ALLOC freed 238K, 22% free 15196K/19368K, paused 13ms, total 13ms
I/dalvikvm-heap: Grow heap (frag case) to 18.250MB for 1413141-byte allocation
D/dalvikvm: GC_FOR_ALLOC freed 63K, 21% free 16577K/20752K, paused 14ms, total 14ms
I/dalvikvm-heap: Grow heap (frag case) to 19.597MB for 1413141-byte allocation
D/dalvikvm: GC_FOR_ALLOC freed 95K, 19% free 17959K/22136K, paused 15ms, total 15ms
I/dalvikvm-heap: Grow heap (frag case) to 20.947MB for 1413141-byte allocation
D/dalvikvm: GC_FOR_ALLOC freed 78K, 18% free 19340K/23520K, paused 15ms, total 15ms
I/RtmpSender: wrote Video packet, size 1413137
D/dalvikvm: GC_FOR_ALLOC freed 1456K, 23% free 19341K/24904K, paused 15ms, total 15ms
D/dalvikvm: GC_FOR_ALLOC freed 83K, 17% free 20723K/24904K, paused 17ms, total 17ms
D/dalvikvm: GC_FOR_ALLOC freed 63K, 16% free 22105K/26288K, paused 17ms, total 17ms
D/dalvikvm: GC_FOR_ALLOC freed 74K, 16% free 23486K/27672K, paused 13ms, total 13ms
I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
    Audio frame discarded
D/dalvikvm: GC_FOR_ALLOC freed 1548K, 19% free 24867K/30440K, paused 19ms, total 19ms
I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
I/RtmpSender: Audio frame discarded
I/RtmpSender: Audio frame discarded
    Audio frame discarded
I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
    Audio frame discarded
    Audio frame discarded
I/RtmpSender: wrote Video packet, size 1413137
    wrote Audio packet, size 23
I/RtmpSender: wrote Audio packet, size 387
    wrote Audio packet, size 391
    wrote Audio packet, size 394
D/dalvikvm: GC_FOR_ALLOC freed 4333K, 20% free 23486K/29008K, paused 30ms, total 30ms
I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
    Audio frame discarded
I/RtmpSender: Audio frame discarded
D/dalvikvm: GC_FOR_ALLOC freed 1545K, 19% free 24868K/30392K, paused 22ms, total 22ms
I/RtmpSender: Video frame discarded
I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
I/RtmpSender: Audio frame discarded
    Audio frame discarded
    Audio frame discarded
D/dalvikvm: GC_FOR_ALLOC freed 2962K, 15% free 24868K/29008K, paused 24ms, total 24ms
I/RtmpSender: Audio frame discarded
I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
    Audio frame discarded
I/RtmpSender: Video frame discarded
I/RtmpSender: Audio frame discarded
    Audio frame discarded
I/RtmpSender: Audio frame discarded
    Audio frame discarded
I/RtmpSender: wrote Video packet, size 1413137
    wrote Audio packet, size 394
    wrote Audio packet, size 394
    wrote Audio packet, size 395
    wrote Audio packet, size 394
    wrote Audio packet, size 395
    wrote Audio packet, size 394
I/RtmpSender: wrote Audio packet, size 395
    wrote Audio packet, size 394

``