<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg-platform</artifactId>
<version>4.4-1.5.6</version>
</dependency>
Java2DFrameConverter converter = new Java2DFrameConverter();
StringBuffer sdpStr = new StringBuffer();
sdpStr.append("m=video 10000 RTP/AVP 109\n");
sdpStr.append("a=rtpmap:109 H264/90000\n");
sdpStr.append("c=IN IP4 127.0.0.1\n");
FFmpegFrameGrabber videoGrabber = new FFmpegFrameGrabber(new ByteArrayInputStream(sdpStr.toString().getBytes()));
videoGrabber.setOption("analyzeduration", "10000");
videoGrabber.setOption("protocol_whitelist","file,rtp,udp");
videoGrabber.setVideoOption("vcodec","copy");
videoGrabber.setFrameRate(25);
videoGrabber.setVideoBitrate(2000000);
videoGrabber.setVideoCodec(avcodec.AV_CODEC_ID_H264);
videoGrabber.setVideoOption("crf", "28");
try {
videoGrabber.start();
while(videoBtnStart){
Frame frame = videoGrabber.grab();
if (frame != null) {
videoBufferedImage = converter.convert(frame);
if (videoBufferedImage != null && videoBtnStart) {
video.showImage(videoBufferedImage);
}
}
}
videoGrabber.stop();
videoGrabber.release();
} catch (FrameGrabber.Exception e) {
log.severe(e.getMessage());
}