bytedeco/javacv

It can play 4 seconds normally on Windows, and the same code can play 4 seconds many times faster on Linux

Open

#2.277 geöffnet am 29. Aug. 2024

Auf GitHub ansehen
 (3 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Java (1.583 Forks)batch import
help wantedquestion

Repository-Metriken

Stars
 (6.985 Stars)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

public static boolean createMp4(String mp4SavePath, Map<Integer, File> imgMap, int width, int height) { // System.loadLibrary(Core.NATIVE_LIBRARY_NAME); try (FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(mp4SavePath, width, height); Java2DFrameConverter converter = new Java2DFrameConverter()) { recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); // recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4); recorder.setFrameRate(25); recorder.setFrameNumber(250); recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P); recorder.setAudioBitrate(900000000); recorder.setAudioQuality(0); recorder.setVideoOption("crf", "0"); // recorder.setVideoOption("r", "25"); recorder.setVideoOption("s", width + "x" + height); recorder.setVideoOption("b", "16000k"); recorder.setVideoOption("preset", "slow"); recorder.setVideoOption("tune", "zerolatency"); recorder.setVideoOption("qscale", "0.01"); recorder.setFormat("mp4"); recorder.start(); for (int i = 0; i < imgMap.size(); i++) { BufferedImage read = ImageIO.read(imgMap.get(i)); recorder.record(converter.getFrame(read)); } recorder.stop(); recorder.release(); return true; } catch (Exception e) { System.out.println("error:" + e.getMessage()); return false; }

Contributor Guide