在尝试读取Xuggler中的rtsp流时,mediaReader.readPacket()会阻塞

时间:2015-07-10 15:28:41

标签: java ffmpeg rtsp xuggler xuggle

我正在尝试使用以下代码将rtsp流下载的视频(带有Xuggler 5.4库)下载到文件中。

    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();
    }

问题在于,在“读取之前”打印后,代码才会停止执行,经过很长一段时间后,它会从记录器中打印出三行:

  

错误:未知错误

     

ERROR_EOF

     

未知错误

当我在VLC媒体播放器中打开它时,Stream效果很好。我很害羞我的mediaReader配置中有一些错误,但我不知道我在哪里使用视频的经验很少。以下是一些有关视频的信息,取自VLC:

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎一切都按预期运作 错误类型ERROR_EOF标记输入流的结束(请参阅the documentation) 你编程很长时间"停止执行"是Xuggler转换视频帧所需的时间(它实际上并没有"停止"只是遍历while循环)。