stabilisation #2
@@ -147,8 +147,8 @@ public class RecordingFrame extends JInternalFrame {
|
||||
sample.getWidth(),
|
||||
sample.getHeight(),
|
||||
20, // Frame Rate
|
||||
25, // CRF (Quality)
|
||||
"ultrafast"
|
||||
18, // CRF (Quality)
|
||||
"superfast"
|
||||
);
|
||||
|
||||
// 2. Initialize the HA Recorder
|
||||
|
||||
@@ -15,13 +15,14 @@ public class FrameProccessor {
|
||||
reuseImg = new BufferedImage(
|
||||
rawImg.getWidth(),
|
||||
rawImg.getHeight(),
|
||||
BufferedImage.TYPE_3BYTE_BGR // default java BufferedImage Type
|
||||
BufferedImage.TYPE_3BYTE_BGR
|
||||
);
|
||||
}
|
||||
|
||||
var g = reuseImg.createGraphics();
|
||||
g.drawImage(rawImg, 0, 0, null);
|
||||
g.dispose();
|
||||
}
|
||||
|
||||
return converter.getFrame(reuseImg);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,9 +20,13 @@ public class MediaSink {
|
||||
recorder.setFormat("mp4");
|
||||
recorder.setPixelFormat(avutil.AV_PIX_FMT_BGR24);
|
||||
recorder.setFrameRate(config.fps());
|
||||
/* this is essentially just building FFmpeg? Would've used ProccessBuilder for this lol */
|
||||
recorder.setVideoOption("pixel_format", "yuv420p");
|
||||
recorder.setVideoOption("preset", config.preset());
|
||||
recorder.setVideoOption("crf", String.valueOf(config.crf()));
|
||||
recorder.setVideoOption("tune", "zerolatency");
|
||||
recorder.setVideoOption("x264opts", "keyint=40:min-keyint=20");
|
||||
recorder.setVideoBitrate(0); // 0 tells the recorder to respect CRF strictly
|
||||
recorder.setGopSize(config.fps() * 2);
|
||||
|
||||
recorder.start();
|
||||
|
||||
Reference in New Issue
Block a user