fyhertz / libstreaming

A solution for streaming H.264, H.263, AMR, AAC using RTP on Android
Apache License 2.0
3.48k stars 1.07k forks source link

The decoder did not decode anything on Marshmallow #165

Open alexbatashev opened 8 years ago

alexbatashev commented 8 years ago

I'm trying to get libstreaming work with Marshmallow. However, it doesn't encode anything.

12-30 15:45:05.168 797-1353/org.rupps.bearstream W/System.err: java.lang.RuntimeException: The decoder did not decode anything.
12-30 15:45:05.168 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.hw.EncoderDebugger.decode(EncoderDebugger.java:801)
12-30 15:45:05.168 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.hw.EncoderDebugger.debug(EncoderDebugger.java:247)
12-30 15:45:05.168 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.hw.EncoderDebugger.debug(EncoderDebugger.java:116)
12-30 15:45:05.168 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.video.H264Stream.testMediaCodecAPI(H264Stream.java:132)
12-30 15:45:05.168 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.video.H264Stream.testH264(H264Stream.java:119)
12-30 15:45:05.169 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.video.H264Stream.configure(H264Stream.java:111)
12-30 15:45:05.169 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.Session.syncConfigure(Session.java:395)
12-30 15:45:05.169 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.rtsp.RtspClient$2.run(RtspClient.java:242)
12-30 15:45:05.169 797-1353/org.rupps.bearstream W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
12-30 15:45:05.169 797-1353/org.rupps.bearstream W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
12-30 15:45:05.169 797-1353/org.rupps.bearstream W/System.err:     at android.os.Looper.loop(Looper.java:168)
12-30 15:45:05.169 797-1353/org.rupps.bearstream W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
12-30 15:45:05.205 797-1353/org.rupps.bearstream W/System.err: java.lang.RuntimeException: Failed to decode NALs from the encoder.
12-30 15:45:05.205 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.hw.EncoderDebugger.debug(EncoderDebugger.java:259)
12-30 15:45:05.205 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.hw.EncoderDebugger.debug(EncoderDebugger.java:116)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.video.H264Stream.testMediaCodecAPI(H264Stream.java:132)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.video.H264Stream.testH264(H264Stream.java:119)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.video.H264Stream.configure(H264Stream.java:111)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.Session.syncConfigure(Session.java:395)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at net.majorkernelpanic.streaming.rtsp.RtspClient$2.run(RtspClient.java:242)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at android.os.Looper.loop(Looper.java:168)
12-30 15:45:05.206 797-1353/org.rupps.bearstream W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)

Here is how I'm doing it:

        Camera tmpC = Camera.open();
        List<Camera.Size> sizeList = tmpC.getParameters().getSupportedVideoSizes();
        tmpC.release();

        VideoQuality vq = new VideoQuality(sizeList.get(0).width, sizeList.get(0).height);

        mSession = SessionBuilder.getInstance()
                .setContext(ctx)
                .setAudioEncoder(SessionBuilder.AUDIO_AAC)
                .setAudioQuality(new AudioQuality(128000,44100))
                .setVideoEncoder(SessionBuilder.VIDEO_H264)
                .setVideoQuality(vq)
                .setSurfaceView(surfaceView)
                .setPreviewOrientation(90)
                .setCallback(this)
                .build();

Any suggestions?

sbaar commented 8 years ago

Which device are you using? Nexus 5, 6, and 7 2013 work on marshmallow for me. However, alot of weird devices, like a specific htc desire, suffer this problem. I think there's something wrong with the encoder debugger detection. We should really figure this out.

alexbatashev commented 8 years ago

I tested it on my HTC One M8 with SkyDragon ROM.

alexbatashev commented 8 years ago

I'm still unable to get it work. Tried different ROMs, but all I get is that error message and this strange screen. screenshot_20160105-105702

sbaar commented 8 years ago

Is that the direct camera preview or after it's rendered in opengl? If it's what's rendered in opengl then I would guess it's a hardware problem.

On Tue, Jan 5, 2016 at 1:46 AM, Alexander notifications@github.com wrote:

I'm still unable to get it work. Tried different ROMs, but all I get is that error message and this strange screen. [image: screenshot_20160105-105702] https://cloud.githubusercontent.com/assets/829678/12111954/58685c70-b3aa-11e5-982f-f30533a1aa2b.png

— Reply to this email directly or view it on GitHub https://github.com/fyhertz/libstreaming/issues/165#issuecomment-168950564 .

alexbatashev commented 8 years ago

That's a camera preview. The picture is moving and I can recognize objects around. So, it is just a distorted image. When I click record button, everything freezes.

sbaar commented 8 years ago

Try using resolution 720 x 480. Looking at the android compatibility document, it's the only resolution guaranteed to be supported on all devices. I have a sneaking suspicion that this is what the default resolution should be for this library. I've ordered some devices in the mail that users are reporting problems on. I'll update if I find solutions.

alexbatashev commented 8 years ago

That seems to be working for me. However, I hear no sound while playing the video with ffplay. Anyway, that's better than nothing. Thank you very much.

yxnyxnyxnyxn commented 8 years ago

@sbaar Is this issue solved? I also met this issue when I use resolution 1920x1080

sbaar commented 8 years ago

There has been no work done on the library in a long time, so no. Are you getting this on 320 x 180 640 x 360 and 1280 x 720 too? On every resolution your camera supports?