user3601262
user3601262

Reputation: 681

mediaReader.readPacket() blocks while trying to read rtsp stream in Xuggler

I am trying to download a video (with a Xuggler 5.4 library) from rtsp stream to a file using the code below.

    String inputSource = "rtsp://[ip-address]:[port]/user=[username]&[password]=password&channel=1&stream=1.sdp";
    String outputFilename = "d:/downloadedrtsp.flv";
    try {
        IContainerFormat inFormat = IContainerFormat.make();
        inFormat.setInputFormat("h246");

        IMediaReader mediaReader = ToolFactory.makeReader(inputSource);
        mediaReader.setQueryMetaData(false);

        IMediaWriter mediaWriter = ToolFactory.makeWriter(outputFilename, mediaReader);
        mediaReader.addListener(mediaWriter);

        logger.info("before reading");
        IError error;
        while ((error = mediaReader.readPacket()) == null) {
            logger.info("reading packet");
        }
        logger.info("error: " + error.getDescription());
        logger.info(error.getType());
        logger.info(error.toString());
    } catch (Exception e) {
        e.printStackTrace();
    }

The problem is that after printing "before reading" the code just stop executing, and after a long time it prints me three lines from logger:

error: Unknown error

ERROR_EOF

Unknown error

Stream works great when i am opening it in the VLC media player. I am shure there is some mistake in my mediaReader configuration, but i don't know where exactly as i have a very little experience working with videos. Here is some information about video, taken from VLC:

enter image description here

Upvotes: 0

Views: 366

Answers (1)

Elist
Elist

Reputation: 5533

It seems like everything works as expected.
The error type ERROR_EOF marks the end of the input stream (see the documentation).
The long time you program "stop executing" is the time it takes for Xuggler to convert the video frames (it actually doesn't "stop", just iterate through the while loop).

Upvotes: 0

Related Questions