bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.39k stars 1.56k forks source link

RTSP video is distorted with FFmpegFrameGrabber #2222

Open nickgitnick opened 2 months ago

nickgitnick commented 2 months ago

When using FFmpegFrameGrabber with a wifi camera, the images can have lots of artifacts. here's an example: Screenshot_20240417_151528_TRUCE

this is the code I am using

FFmpegLogCallback.set()
log("attempting connection to $url")
val grabber = FFmpegFrameGrabber(url)
grabber.imageHeight = 480
grabber.imageWidth = 848
grabber.format = "rtsp"
grabber.videoCodecName = "h264_mediacodec"
grabber.frameRate = 30.0
grabber.sampleRate = 30
grabber.start()
while (alive) {
    val frame = grabber.grabImage()
    showPreview(frame)
}

I'm wondering if there are any tweaks that can clean the video up a bit / handle missed packets better? Specifying TCP with

grabber.options["rtsp_transport"] = "tcp"

makes the image cleaner but I am running into another issue where the video stops after 30 seconds: https://github.com/bytedeco/javacv/issues/2218