RTP:丢弃接收到的旧数据包为时已晚

我正在使用JavaCV处理RTSP视频流。我要做的是抓取RTSP流的每一帧并将其写入JPG文件。这是我的代码:

package test;

import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class PravegaCameraconnector
{
    public static void grabberVideoFramer() {
        Frame frame = null;
        int flag = 0;
        int max_value = 9999999;
        FFmpegFrameGrabber fFmpegFrameGrabber = new FFmpegFrameGrabber("rtsp://192.168.1.11:8554/stream");
        fFmpegFrameGrabber.setframeRate(30);
        try {
            fFmpegFrameGrabber.start();
            BufferedImage bImage = null;
            while (flag < max_value) {
                String fileName = "/home/rtsp/tmp/imgs/img_" + String.valueOf(flag) + ".jpg";
                File outPut = new File(fileName);
                frame = fFmpegFrameGrabber.grabImage();
                if (frame != null) {
                    ImageIO.write(FrameToBufferedImage(frame),"jpg",outPut);
                }
                flag++;
                if (flag == max_value) {
                    flag = 0;
                }
            }
            fFmpegFrameGrabber.stop();
        } catch (IOException E) {
            // nothing to do
        }
    }

    public static BufferedImage FrameToBufferedImage(Frame frame) {
        Java2DFrameConverter converter = new Java2DFrameConverter();
        BufferedImage bufferedImage = converter.getBufferedImage(frame);
        return bufferedImage;
    }

    public static void main(String[] args) {
        grabberVideoFramer();
    }
}

这似乎可行,因为我已经看到生成了许多JPG文件。

但是,在运行此代码时,我收到许多警告和错误:

[h264 @ 0x7fe1b0491780] error while decoding MB 26 37,bytestream -35
[h264 @ 0x7fe1b0491780] Cannot use next picture in error concealment
[h264 @ 0x7fe1b0491780] concealing 3743 DC,3743 AC,3743 MV errors in P frame
[rtsp @ 0x7fe1b0447480] max delay reached. need to consume packet
[rtsp @ 0x7fe1b0447480] RTP: missed 17 packets
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[h264 @ 0x7fe1b0ff6400] error while decoding MB 54 32,bytestream -15
[h264 @ 0x7fe1b0ff6400] concealing 4315 DC,4315 AC,4315 MV errors in B frame
[rtsp @ 0x7fe1b0447480] max delay reached. need to consume packet
[rtsp @ 0x7fe1b0447480] RTP: missed 1 packets
[rtsp @ 0x7fe1b0447480] RTP: dropping old packet received too late
[h264 @ 0x7fe1b0530c40] error while decoding MB 72 42,bytestream -6

我为什么要得到这些?

是因为RTSP源发送数据快而我的代码处理数据慢吗?

我需要两个线程:一个线程是从RTSP源接收数据,另一个线程是将数据写入JPG文件?

iCMS 回答:RTP:丢弃接收到的旧数据包为时已晚

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2016409.html

大家都在问