Wenonah
Wenonah

Reputation: 186

Displaying RTSP-Stream using Xuggler: org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 34 60, bytestream (td)

I'm new to displaying RTSP-Streams and Xuggler, so I really don't know what to do.

I'm trying to display the Main-Stream of my IP-Camera in a Java-Swing Window and get this:

enter image description here

I also get these errors:

13:21:45.941 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 8 7, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 34 60, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 8 36, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 68 62, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 118 38, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 60 62, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] cabac decode of qscale diff failed at 1 7
13:21:46.940 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 1 7, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 28 37, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 18 35, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 17 41, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 53 32, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 31 29, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 21 29, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] left block unavailable for requested intra mode at 0 35
13:21:49.902 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 0 35, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 17 21, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 46 10, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 109 28, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 60 10, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 11 14, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 101 9, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 76 9, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 86 11, bytestream (td)
17:47:04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] error while decoding MB 60 24, bytestream (td)

This is part of the code that I use:

private IMediaListener mediaListener = new MediaListenerAdapter() {

    @Override
    public void onVideoPicture(IVideoPictureEvent event) {
        try {
            BufferedImage bi = event.getImage();
            if (bi != null)
                updateWindow(bi);
        } catch (Exception ex) {
            LOG.error("Error getting Image from IVideoPictureEvent: " + ex);
        }
    }
};

public DisplayWindow() {
    display();
}

private void display() {
    IMediaReader mediaReader = ToolFactory
            .makeReader("rtsp://user:[email protected]:554/Streaming/Channels/1");

    mediaReader
            .setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);
    mediaReader.setQueryMetaData(false);
    mediaReader.addListener(mediaListener);

    openWindow();

    while (true) {
        IError error = null;
        if(mediaReader != null){
            error = mediaReader.readPacket();
            if(error != null){
                LOG.error("Error at mediaReader.readPacket(): " + error);
            }
        }
    }
}

Displaying the Sub-Stream (which has lower resolution) works well.

I use Xuggler 5.4 with Maven.

There probably is a simple solution to this problem, but I've searched the whole internet and haven't found one, so I'd appreciate any help. Thank you!

UPDATE: I'd also be happy about (free!) alternatives to Xuggler.

Upvotes: 2

Views: 3218

Answers (1)

promagma
promagma

Reputation: 116

I fixed this error with a HIKVision camera by forcing TCP transport. To force TCP, need to manually create the IContainer and pass the setting in an IMetaData:

    IMetaData im = IMetaData.make();
    im.setValue("rtsp_transport", "tcp");

    IContainer streamContainer = IContainer.make();        
    int result = streamContainer.open("rtsp://user:[email protected]:554/Streaming/Channels/1", IContainer.Type.READ, null, true, false, im, null);

    if (result < 0) {
        // Error
    }

    IMediaReader mediaReader = ToolFactory.makeReader(streamContainer);

Upvotes: 2

Related Questions